问题 填空题

下列给定程序中函数fun()的功能是:将长整型数中每一位上为奇数的数依次取出,构成一个新数放在冲。高位仍在高位,低位仍在低位。例如当s中的数为87653142时,t中的数为7531。 请改正函数fun()中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include <stdio.h> #include <conlo.h> void fun (long s, long *t) {int d; long s1=1; /*************found**************/ t=0; while(s>0) { d=s%10; /*************found**************/if(d%2==0){*t=d*s1+*t; s1*=10;} s/=10; } } main() {long s, t; clrscr(); printf("\nPlease enter s:");scanf("%ld",&s); fun(s,&t); printf("The result is:%ld\n",t); }

答案

参考答案:错误:t=0; 正确:*t=0;

解析:(2)错误:if(d%2==0) 正确:if(d%2!=0) 其实,本题的重点在考查两个问题:第1个错误中出现了一个t=0,那么请看一下,t是从哪儿来的,第1次出现t的地方在哪儿对,就这么简单。那我们再来思考一下用C语言表达一个奇数的话应该怎么表达用数学的方法呢偶数是能被2整除的,奇数刚好相反,那么if(d%2==0)是想表示奇数呢还是偶数,看题目就明白了!

单项选择题
单项选择题