while(s<0)//需要的是正长整型,这里怎么小于0
s=s%100;//这里一下就把s变到100以内
*t=s%10*s1;
s1=s1*10;
#include
void fun (long *t, long s)
long sl=10;
s /= 10;
*t = s % 10;
while(s> 0)
{
s = s/100;//修改位置,取偶数位,应该隔两位取一次,所以除以100
*t = *t+s%10*sl ;
sl = sl * 10;
main()
long s, t;
printf("\nPlease enter s:");
scanf("%ld", &s);
fun(&t ,s); //修改位置,函数调用出错
printf("The result is: %ld\n", t);
扩展资料:
注意,C语言只规定short <= int <= long int,字节长度跟操作系统和编译器有关,long int长度至少32位,而64位类Unix系统为64位。
一般把 short 称为短整型,把 long 称为长整型,把 long long 称为超长整型,把 int 称为整型。unsigned 打头的那些整数类型统称为无符号整型。例如:我们称 unsigned short 为无符号短整型。以此类推。
%h short有符号短整型
%d int有符号整型
%u unsigned int 无符号整型
%l long int 有符号长整型
%lu unsigned long 无符号长整型
%ll long long int有符号超长整型
%llu unsigned long long无符号超长整型[c99]
参考资料来源:百度百科-长整型
while(s<0)//你明明需要的是正长整型,这里怎么小于0
{
s=s%100;//你这里一下就把s变到100以内了,好像很不合理吧?
*t=s%10*s1;
s1=s1*10;
}
void main()
{
long s,t=0;
scanf("%ld",&s);
if(s>0)
{
fun(s,&t);
printf("%ld\n",t);
}
else
printf("s value error\n");
}
void fun(long s,long *t)
{
long s1=1;
while(s>0)
{
s = s/10;
*t = s%10 * s1 + *t;
s /= 10;
s1 *= 10;
}
}