下列给定程序中函数fun()的功能是:将长整型数中每一位上为奇数的数依次取出,构成一个新数放在冲。高位仍在高位,低位仍在低位。例如当s中的数为87653142时,t中的数为7531。 请改正函数fun()中的错误,使它能得出正确的结果。 注意:

admin2010-05-05  41

问题 下列给定程序中函数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);
   }

选项

答案(1)错误: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)是想表示奇数呢还是偶数,看题目就明白了!
转载请注明原文地址:https://jikaoti.com/ti/BSkiFFFM
0

最新回复(0)