帮忙改一下这个程序吧,功能是:依次取出正长整型变量s中偶数位上的数,构成一个新数放在t中

#include<stdio.h>void fun(long s,long t){ long s1=10; s/=10; *t=s/10; while(s<0) { s=s%100; *t=s%10*s1; s1=s1*10; }}void main(){ long s,t; scanf("%ld",&s); if(s>0) { fun(s,&t); printf("%ld尀n",t); } else printf("s value error尀n"); }
2026年09月26日 19:27
有3个网友回答
网友(1):

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]

参考资料来源:百度百科-长整型

网友(2):

while(s<0)//你明明需要的是正长整型,这里怎么小于0
{
s=s%100;//你这里一下就把s变到100以内了,好像很不合理吧?
*t=s%10*s1;
s1=s1*10;
}

网友(3):

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;
}
}