C语言作业题 23号交 啊 走过路过的帮做一下吧 不胜感激

来源:百度知道 编辑:UC知道 时间:2024/05/29 12:33:50
下列给定程序中,函数proc的功能是:将长整型数中每一位上为偶数的数依次逆向取出,构成一个新数放在t中。高位在低位,低位在高位。例如,当s中的数为12345678时,则t中的数为8642。请修改函数proc中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include <stdlib.h> #include <stdio.h> #include <conio.h> void proc(long s,long *t) { int d; long s1=1,i=1; *t=0; while(s/i>0) i=i*10; i=i/10; while(s>0) { d=s/i; /*******found*******/ if(d%2!=0) { /*******found*******/ t=d*s1+t; s1*=10; } s=s%i; i=i/10; } } void main() { long s, t; system("CLS"); printf("\nPlease enter s: "); scanf("%ld",&s); proc(s,&t); printf("The result is :%ld\n",t); }

#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
void proc(long s,long *t)
{
int d;
long s1 = 1,i = 1;
*t = 0;
while(s / i > 0)
i = i * 10;
i = i / 10;
while(s > 0)
{
d = s/i;
if(d % 2 == 0) /*第一处错误改正*/
{
*t = d * s1 + *t; /*第二处错误改正*/
s1 *= 10;
}
s = s % i;
i = i / 10;
}
}
int main()
{
long s, t;
system("CLS");
printf("\nPlease enter s: ");
scanf("%ld",&s);
proc(s,&t);
printf("The result is :%ld\n",t);
}

总共有两处错误(已经注释了)。
第一处错误:d % 2 == 0 才满足偶数这个条件。
第二处错误:void proc(long s,long *t) 函数里的参数 long *t 是指针,要改变的是它指向的值,所以要用 *t = d * s1 + *t;

另外...竟然给0分*.* ...