下列给定程序中,函数fun()的功能是:通过某种方式实现两个变量值的交换,规定不允许增加语句和表达式。例如变量a中的值原为8,b中的值原为3,程序运行后a中的值为3, b中的值为8。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:include<conio.h>include <stdio.h>int fun(int *x,int y){int t;/***************found***************/t=x;x=y

题目

下列给定程序中,函数fun()的功能是:通过某种方式实现两个变量值的交换,规定不允许增加语句和表达式。例如变量a中的值原为8,b中的值原为3,程序运行后a中的值为3, b中的值为8。

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

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

试题程序:

include<conio.h>

include <stdio.h>

int fun(int *x,int y)

{

int t;

/***************found***************/

t=x;x=y;

/***************found***************/

return(y);

}

main()

{int a=3,b=8;

clrscr();

printf("%d %d\n",a, b);

b=fun(&a,b);

printf("%d %d\n" ,a,b);

}


相似考题
更多“下列给定程序中,函数fun()的功能是:通过某种方式实现两个变量值的交换,规定不允许增加语句和表达 ”相关问题
  • 第1题:

    下列给定程序中,函数fun()的功能是:实现两个整数的交换。例如给a和b分别输入60和65,输出为:a=65 b=60

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

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

    试题程序;

    include<stdio.h>

    include <conio.h>

    /*************found**************/

    void fun(int a,b)

    { int t;

    /*************found**************/

    t=b;b=a;a=t;

    }

    main()

    { int a,b;

    clrscr();

    printf("Enter a, b: "); scanf("%d%d",

    &a,&b);

    fun(&a, &b);

    printf("a=%d b=%d\n ", a,b);

    }


    正确答案:(1)错误:void fun(int ab) 正确:void fun(int *aint *b) (2) 错误:t=b;b=a;a=t; 正确;t=*b;*b=*a;*a=t;
    (1)错误:void fun(int a,b) 正确:void fun(int *a,int *b) (2) 错误:t=b;b=a;a=t; 正确;t=*b;*b=*a;*a=t; 解析:本题考查指针变量做函数参数。采用一般变量做参数,不能改变实参的值,采用指针变量作为参数则能够改变实参的值。主函数中fun()的调用方式说明fun()函数的参数应当为指针类型。另外,值得一提的是“交换法则”,这题的错误比较明显,如果程序段中有隐蔽的交换错误,一般不容易发现,希望学习者引起注意。

  • 第2题:

    给定程序MODll.C中函数fun的功能是:为一个偶数寻找两个素数,这两个素数之和等于该偶数,并将这两个素数通过形参指针传回主函数。

    请改正函数fun中指定部位的错误,使它能得出正确的结果。

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


    正确答案:(1)y=1; (2)d=a-i;
    (1)y=1; (2)d=a-i; 解析:本题中函数的功能是为一个偶数查找两个素数,这两个素数之和等于该偶数。其中,函数fun用形参a放偶数,指针b和c放两个素数。把一个偶数分解成1和(x-1)两个数是否是素数,再分解为3和(x-3)这两个数,判断是否是素数,依此类推,直到找出这两个素数为止。本题中把偶数分解为i和d两个素数。判断i是否是素数,如果i不是素数,则i+2再循环;如果i是素数,则d=x-i,然后判断d是否是素数。

  • 第3题:

    请编写函数fun,参指针所指的4个整数中找出最大值和最小值,最大的放在a中,最小的放在d中。注意:部分源程序存在PROGl.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun鸽花括号中填入所缩写的若干语句。给定源程序:


    正确答案:
    【考点分析】主要考察考生对临时变量的初始化及使用,以及如何比较多个数的大小【解题思路】通过初始化指定最大值,最小值,再使用当前的最值与剩下的值比较,若比最大值大,修改最大值;若比最小值小,修改最小值。

  • 第4题:

    请编写函数fun,其功能是:计算并输出给定10个数的方差:

    例如,给定的10个数为95.0、89.0、76.0、65.0、88.0、72.0、85.0、81.0、90.0、56.0,输出为s=11.730729。

    注意:部分源程序在文件PROGl.C中。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。


    正确答案:
    解析:该程序功能是计算并输出给定10个数的方差。解题思路是,根据题干中给出的方差公式首先计算出x’的值,然后计算根号里面的值,最后求其平方根。

  • 第5题:

    请补充fun()函数,fun()函数的功能是求n的阶乘。 注意:部分源程序给出如下。 请勿改动main()函数和其他函数中的任何内容,仅在fun()函数的横线上填入所编写的若干表达式或语句。 试题程序:


    正确答案:
    【1】n>1或1<n【2】n-1【3】1或11或lL
    【解析】此题应用的是递归算法,因为10!=1091,91=98!,8!=87!…依此类推,而1!=1,2!=21!=2,3!=32!=6…,依此可以推出101,递推算法表示为:n!=1(n=1或n=0)n!=11*(n=1)(n>1)