下列给定程序中函数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****

题目

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

}


相似考题
更多“下列给定程序中函数fun()的功能是:将长整型数中每一位上为奇数的数依次取出,构成一个新数放在冲。 ”相关问题
  • 第1题:

    下列给定程序中,函数fun的功能是:从低位开始依次取出长整型变量s中奇数位上的数,构成一个新数存放在t中。高位仍在高位,低位仍在低位。

    例如,当s中的数为7654321时,t中的数为7531。请改正程序中的错误,使它能得出正确的结果。

    注意:部分源程序在文件MODll.C中,不得增行或删行,也不得更改程序的结构!

    include<;stdi0.h>;


    正确答案:
    (1)void(long}t)(2)sl=sl·10;【考点分析】函数定义,指针型变量;数值n和其各个位如何表示。【解题思路】(1)主函数中调用函数的参数为地址,因此函数fun的形式参数应为指针类型。(2)重新组合一个数,从个位开始,然后十位,依次类推,因此每增加—位数,原数值需乘以10,即sl=sl}10;。

  • 第2题:

    给定程序MODll.C中函数fun的功能是:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在1中。高位仍在高位,低位仍在低位。

    例如,当s中的数为:7654321时,t中的数为:7531。

    请改正程序中的错误,使它能得出正确的结果。

    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!


    正确答案:(1)void fun (10ng s long *t) (2)s1=s1*10;
    (1)void fun (10ng s, long *t) (2)s1=s1*10; 解析:本题中函数的功能是依次取出奇数位上的数。该题的解题思路主要是找出数字中的奇数位上的数。

  • 第3题:

    下列给定程序中函数proc()的功能是:将长整型数中为偶数的数依次逆向取出,构成一个新数放在t中。高位在低位,低位在高位。例如,当s中的数为12345678时,则t中的数为8642。

    请修改函数proc()中的错误,使它能得出正确的结果。

    注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。

    试题程序:


    正确答案:

    (1)错误:if(d%2!=0)
    正确:if(d%2==0)
    (2)错误:t=d*s1+t;
    正确:*t=d*s1+*t;
    【解析】题目要求长整型数中每一位上为偶数的数依次逆向取出,构成一个新数放在t中。首先要判断每一位上的数是否为偶数,因此“if(d%2!=0)”应改为“if(d%2==0)”;变量t是一个指针变量,其是直接运算操作的内存地址,因此“t=d*sl+t;”应改为“*t=d*s1+*t;”。

  • 第4题:

    下列给定程序中函数fun的功能是:将长整型数中各位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。

    例如,当s中的数为87653142时,t中的数为7531。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODll.C中,不得增行或删行,也不得更改程序的结构!


    正确答案:
    (1)}t=0;(2)if(d%21=0)或if(d%2==1)【考点分析】本题考查:指针型变量作为函数参数;if语句条件表达式,结合奇偶数的表示方法来确定该表达式内容。【解题思路】(1)由函数定义可知,变量t是指针变量,所以对t进行赋初值0是不对的。因为t指向的是存放新数的变量,所以此处应给新数赋初值0,即。t=0。(2)变量d表示数S各个位上的数,此处的if条件应为判断d是否为奇数。

  • 第5题:

    下列给定程序中,函数proc()的功能是:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。例如,当s中的数为l23456789时,t中的数为l3579。 请修改程序中的错误,使它能得到正确结果。 注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。 试题程序:


    正确答案:
    (1)错误:intproc(10ngS,long*t)
    正确:voidproc(10ngs,long*t)
    (2)错误:s=s%0100;
    正确:s=s/100;
    【解析】由主函数中的函数调用可知,函数proc()没有返回值,因此,“intproc(longs,long*t)”应改为“voidproc(longs,long*t)”。题目要求是把奇数位上的数找出构成
    一个新的数组,因此把“s=s%100;”改为“s=s/100;”。