给定程序MODI1.C中函数fun的功能是:从低位开始依次取长整型变量s中奇数位上的数,构成一个新数放在t中(注意:位置从开始计算)。  例如:  输入:12345678,则输出:1357  输入:123456789,则输出:2468  请改正函数fun中

admin2022-04-02  21

问题 给定程序MODI1.C中函数fun的功能是:从低位开始依次取长整型变量s中奇数位上的数,构成一个新数放在t中(注意:位置从开始计算)。
 例如:
 输入:12345678,则输出:1357
 输入:123456789,则输出:2468
 请改正函数fun中指定部位的错误,使它能得出正确的结果。
 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
 #include<stdio.h>
 #pragma warning(disable:4996)
 void fun(long s,long *t)
 {long s1=10;
   s/=10;
 /**********found**********/
   *t=s/10;
   while(s>0){
   s=s/100;
 /**********found**********/
  t=s%10*s1+t;
 /**********found**********/
   s1/=10;
   }
 }

 main()
 {long s,t;
    printf("\nPlease enter long number:");
    scanf("%ld",&s);fun(s,&t);
    printf("The result is:%ld\n",t);
 }

选项

答案(1)*t=s%10;  (2)*t=s%10*s1+*t;  (3)s1*=10;

解析 fun()函数中,s是待处理的数,t是用来存放新数的指针,s1表示当前数字在新数中某位上的基数。由于题意从s的低位到高位从0开始,所以第1个奇数位是s的十位数字,需要将s除以10去掉个位数字,s1赋初值为十位的基数10,将处理后的s的个位数字存放到指针t中;接着通过while循环,每次将s除以100,跳过偶数位上的数字,然后将奇数位上的数字乘以对应的基数s1后,与t指向的数累加,重新存放到指针t中,并将基数s1乘以10,表示下一位的基数,直到s为0。
转载请注明原文地址:https://kaotiyun.com/show/Bhkp777K
0

最新回复(0)