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

admin2020-06-02  40

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

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

最新回复(0)