itgle.com

请补充main函数,该函数的功能是:从键盘输入3个整数,然后找出最大的数并输出。例如,输入:12,45,43,最大值为45。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在 main函数的横线上填入所编写的若干表达式或语句。试题程序:include<stdio.h>include<conio.h>main(){int a, b, c, max;clrscr();printf("\nlnput three numbers:\n");scanf("%d,%d,%d",&a,&b,&

题目

请补充main函数,该函数的功能是:从键盘输入3个整数,然后找出最大的数并输出。

例如,输入:12,45,43,最大值为45。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在 main函数的横线上填入所编写的若干表达式或语句。

试题程序:

include<stdio.h>

include<conio.h>

main()

{

int a, b, c, max;

clrscr();

printf("\nlnput three numbers:\n");

scanf("%d,%d,%d",&a,&b,&c);

printf("The three numbers are:%d,

%d,%d\n",a,b,c);

if(a>b)

【 】;

else

【 】;

if(max<c)

【 】;

printf("max=%d\n",max);

}


相似考题
更多“请补充main函数,该函数的功能是:从键盘输入3个整数,然后找出最大的数并输出。例如,输入:12,45,43,最大值为45。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在 main函数的横线上填入所编写的若干表达式或语句。试题程序:include<stdio.h>include<conio.h>main(){int a, b, c, max;clrscr();printf("\nlnput three numbers:\n");scanf("%d,%d,%d",a,b,c);”相关问题
  • 第1题:

    请补充fun函数,该函数的功能是:判断一个年份是否为闰年。

    例如,1900年不是闰年,2004是闰年。

    [注意] 部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。

    [试题源程序]

    include<stdio.h>

    include<conio.h>

    int fun(int n)

    {

    int fiag=0;

    if(n%4==0)

    {

    if( (1) )

    fiag=1;

    }

    if( (2) )flag=1;

    return (3) ;

    }

    void main()

    {

    int year;

    clrscr();

    printf("Input the year:");

    scanf("%d", &year);

    if(fun(year))

    printf("%d is a leap year.\n", year);

    else

    printf("%d is not a leap year.\n", year);

    }


    正确答案:[1] n%100 !=0 [2] n%400==0 [3] flag
    [1] n%100 !=0 [2] n%400==0 [3] flag 解析:题的关键是要知道闰年的定义,如果年份能被4整除但不能被100整除,或者能被400整除,这两种情况满足之一都是闰年。
    填空1:显然此处属于第一种情况,能被4整除但不能被100整除。所以这里应该填n%100!=0,只有满足这个条件,flag才能被赋值1。
    填空2:此处属于第二种情况,能被400整除,所以应该填n%400==0。
    填空3:从程序中可以知道,当满足以上两种情况之一时,flag就被赋值1,显然flag属于标志单元。再看主函数中对fun()函数的调用,显然需要返回的值不是真就是假,即函数fun()中标志单元flag的内容。

  • 第2题:

    请补充函数fun(),函数fun()的功能是求7的阶乘。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

    试题程序:

    include<stdio.h>

    long fun(int n)

    {

    if(【 】)

    return(n*fun(【 】);

    else if(【 】)

    return 1;

    }

    main()

    {

    int k=7;

    printf("%d!=%ld\n", k, fun(k));

    }


    正确答案:n>1 n-1 n==1
    n>1 n-1 n==1 解析:第一空:求阶乘时采用递归的算法,n>1和n==1这两种情况的处理方法不同,需要分开考虑。第二空:阶乘的算法是,当n>1时,n!=n*(n-1)!,即fun(n)=n*fun(n-1)。第三空:n==1是递归的终止条件,因为1!=1,所以当n=1时,返回1。

  • 第3题:

    请补充main函数,该函数的功能是:从键盘输入一组字符串,以‘*’结束输入,并显示出这个字符串。

    例如,输入abcdefghi*,结果显示adcdefghi。

    注意:部分源程序给出如下.

    请勿改动主函数main和其他函数中的任何内容,仅在 main函数的横线上填入所编写的若干表达式或语句。

    试题程序:

    include<stdio. h>

    define N 80

    main ()

    {

    iht i=-l, j=0;

    char str IN];

    clrscr ();

    printf("\n Input a string \n");

    do

    {

    i++;

    scanf(【 】);

    }while(【 】);

    printf ("\n**display the string** \n");

    while (j<i)

    {

    printf (【 】);

    j++;

    }

    }


    正确答案:"%c"&str[i] str[i]!='*' "%c"str[j]
    "%c",&str[i] str[i]!='*' "%c",str[j] 解析:第一空:本题考查对标准输入函数scanf()的掌握,输入的为字符,所以格式控制符为“%c”,并将输入的字符存于数组str中,注意在地址表列中,要在数组元素str[i]前加上取址符“&”。第二空:由于输入的字符串以'*' 结束,所以只要输入的字符不是'*',就继续输入,即do-while循环继续执行。第三空:本题考查对标准输出函数Pdntf()的掌握,因为输;U的为字符,所以格式控制符为“%c”。

  • 第4题:

    请补充main 函数,该函数的功能是:计算两个自然数n和m(m<10000)之间所有数的和(n和m从键盘输入)。

    例如:当n=1,m=100时,sum=5050:当n=100,m=1000时,sum=495550。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在 main 函数的横线上填入所编写的若干表达式或语句。

    试题程序:

    include<stdio.h>

    include<conio.h>

    main ()

    {

    int n, m;

    long sum;

    【 】

    clrscr ();

    printf ("\nInput n,m\n");

    scanf ("%d, %d", &n, &m);

    while (n<=m)

    {

    【 】

    n++;

    }

    printf ("sum=%【 】\n", sum);

    }


    正确答案:sum=0 sum+=n 1d
    sum=0 sum+=n 1d 解析:第一空:变量sum 进行了类型声明,但没有进行初始化,而后面的程序用sum 来存放最后的结果,所以要在使用前将sum 初始化为0。第三空:通过while 循环将自然数n和m之间的数进行累加,结果存于sum 中。第三空:由于sum 为长整型,所以标准输出函数printf ()中的格式控制符为“%1d”。

  • 第5题:

    请编写一个函数void fun(int m, int k, int xx[]),该函数的功能是将大于整数m且紧靠m的k个非素数存入所指的数组中。

    例如,若输入15,5,则应输出16,18,20,21,22。

    注意:部分源程序给出如下。

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

    试题程序:

    include<conio.h>

    include<stdio.h>

    void fun(int m,int k,int xx[])

    {

    }

    main()

    {

    int m,n,zz[1000];

    clrscr();

    printf("\nPlease enter two integers:");

    scanf("%d%d",&m,&n);

    fun(m,n,zz);

    for(m=0;m<n;m++)

    printf("%d",zz[m]);

    printf("\n");

    }


    正确答案:void fun(int m int k int xx[]) { int ijn; for(i=m+1n=0;nk;i++) /*找大于m的非素数循环k次即找出紧靠m的k个非素数*/ for(j=2;ji;j++) /*判断一个数是否为素数*/ if(i%j==0) { xx[n++]=i; /*如果不是素数放入数组xx中*/ break; /*并跳出本层循环判断下一个数*/ } }
    void fun(int m, int k, int xx[]) { int i,j,n; for(i=m+1,n=0;nk;i++) /*找大于m的非素数,循环k次,即找出紧靠m的k个非素数*/ for(j=2;ji;j++) /*判断一个数是否为素数*/ if(i%j==0) { xx[n++]=i; /*如果不是素数,放入数组xx中*/ break; /*并跳出本层循环,判断下一个数*/ } } 解析:本题只要掌握了判断非素数和素数的算法即不难完成了,其实程序缺少部分也正是这部分。

  • 第6题:

    请补充main函数,该函数的功能是:求1+21+3!+…+N!的和。

    例如, 1+2!+3!+...+5!+6!的和为873。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在 main函数的横线上填入所编写的若干表达式或语句。

    试题程序:

    include <stdio.h>

    main ( )

    {

    int i, n;

    long s=0, t=l;

    clrscr ();

    printf ("\nInput n: \n");

    scanf ("%d",【 】);

    for (i=l; i<=n; i++)

    {

    t=【 】;

    s=【 】;

    }

    printf ("1 ! +2 ! +3 !... +%d! =%ld\n", n, s);

    }


    正确答案:&n t*I s+t
    &n t*I s+t 解析:第一空:标准输入函数scanf()的地址表列中,变量n前要加上取址运算符——“&”。第二空:变量t用来保存每个数的阶乘,因为i!=(i-1)!*i,所以此空应为t*i。第三空:变量s用来保存从1到n的阶乘的总和。

  • 第7题:

    请补充main函数,该函数的功能是:打印届1~1000中满足:个位数字的立方等于其本身所有数。

    本题的结果为;1 64 125 216 729

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数main的横线上填入所编写的若干表达式或语句。

    试题程序:

    include <stdio .h>

    main ( )

    {

    int i,g;

    clrscr ();

    for (i=1; i<1000; i++)

    {

    g=【 】;

    if(【 】)

    printf ("%4d", i);

    }

    }


    正确答案:i%10 g*g*g==i
    i%10 g*g*g==i 解析:第一空:将一个整数对10求余,就得到这个数的个位数字,并存于变量g中。第二空:如果个位数字的立方等于这个数本身,则将这个数输出。

  • 第8题:

    编写函数int fun(int lim, int aa[MAX]),该函数的功能是求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求出的素数的个数。

    注意:部分源程序给出如下。

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

    试题程序:

    include<conio.h>

    include<stdio.h>

    define MAX 100

    int fun(int lim, int se[MAX])

    {

    }

    main()

    {

    int limit,i,sum;

    int aa[MAX];

    clrscr();

    printf("输入一个整数");

    scanf("%d",&limit);

    sum=fun(limit,aa);

    for(i=0;i<sum;i++)

    {

    if(i%10==0&&i!=0) /*每行输出10个数*/

    printf("\n");

    printf("%5d ",aa[i]);

    }

    }


    正确答案:int fun(int lim int aa[MAX]) { int ijk=0; for(i=2;i=lim;i++) /*求出小于或等于lim的全部素数*/ { for(j=2;ji;j++) if(i%j==0) break; if(j>=i) aa[k++]=i;; /*将求出的素数放入数组aa中*/ } return k; /*返回所求出的素数的个数*/ }
    int fun(int lim, int aa[MAX]) { int i,j,k=0; for(i=2;i=lim;i++) /*求出小于或等于lim的全部素数*/ { for(j=2;ji;j++) if(i%j==0) break; if(j>=i) aa[k++]=i;; /*将求出的素数放入数组aa中*/ } return k; /*返回所求出的素数的个数*/ } 解析:在做这道题时,我们只需掌握素数的基本算法就可以了,一般表示素数的方法如下:
    for (j=2;ji;j++)
    if(i%j==0) break;
    if(j>=i)

  • 第9题:

    请补充main函数,该函数的功能是:从键盘输入若干字符放到一个字符数组中,当桉回车键时结束输入,最后输出这个字符数组中的所有字符。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在 main函数的横线上填入所编写的若干表达式或语句。

    试题程序:

    include<stdio.h>

    include<ctype.h>

    main()

    {

    int i=0;

    char a [81];

    char *p=s;

    clrscr ();

    printf{" Input a string \n");

    for (i=0; i<80; i++)

    {

    s [i] =getchar ( );

    if (s [i]=='\n')

    【 】;

    }

    s[i]=【 】

    printf(" display the string \n");

    while (*p)

    putchar (【 】);

    }


    正确答案:break '/0' *P++
    break '/0' *P++ 解析:第一空:当输入的字符是回车符时,使用break语句跳出for循环,结束输入。第二空:结束输入后,在字符串s最后要加上结束标记符,'\0' 。第三空:最初指针p指向字符串s的首字符,通过P慢逐一指向后面的每个字符,调用putchar()函数输出字符。

  • 第10题:

    请补充main函数,该函数的功能是:输入两个正整数m和n,求这两个数的最大公约和最小公倍数。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在 main函数的横线上填入所编写的若干表达式或语句。

    试题程序:

    include <stdio.h>

    main ( )

    {

    int a, b, n, m, t;

    clrscr ();

    printf ("\nInput two numbers: \n");

    scanf ("%d, %d", &n, &m);

    if (n<m)

    {

    a=m;

    b=n;

    }

    else

    {

    a=n;

    b=m;

    }

    while(【 】)

    {

    t=【 】

    a=b;

    b=t;

    }

    printf ("greatest con. non divisor:

    %d\n", a);

    printf ("least common multiple:

    %d\n",【 】);

    }


    正确答案:b!=0 a%b; n*m/a
    b!=0 a%b; n*m/a 解析:第一空:本题考查求最大公约数和最小公倍数的方法。变量a保存两数中较大着,变量b保存较小者,采用循环的方法求解最大公约数,循环结束条件是b等于0。第二空:求解最大公约数的思路是,将a对b求余,如果余数为0, 则b即为两数的最大公约数,如果余数不为0,则将b赋给a,余数赋给b,继续将a对b求余,如此循环,直到余数为0。第三空:最小公倍数等于两数的乘积除以最大公倍数。

  • 第11题:

    请补充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)

  • 第12题:

    问答题
    请编写函数fun(),该函数的功能是:计算并输出给定整数n的所有因子(不包括1和自身)之和。规定n的值不大于1000。例如,在主函数中从键盘给n输入的值为856,则输出为:sum=763。  注意:部分源程序给出如下。  请勿改动主函数main()和其他函数中的任何内容,仅在fun()函数的花括号中填入所编写的若干语句。  试题程序如下:/**********code.c**********/#include int fun(int n){}void main(){ int n,sum; printf(Input n: ); scanf(%d,&n); sum=fun(n); printf(sum=%d,sum);}

    正确答案:

    int fun(int n)
    {
    int s=0,i;
    for(i=2;i<=n-1;i++)
    if(n%i==0)
    s+=i;
    return s;
    }
    解析:

      本题的设计思路是:①遍历从2到n-1的所有整数;②用条件语句找出能被n整除的整数i,并累加求和;③用return语句返回因子的和。

  • 第13题:

    请补充函数fun(),该函数的功能是:返回字符数组中指定子符的个数,指定字符从键盘输入。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

    试题程序:

    include <stdio.h>

    define N 80

    int fun (char s[],char ch)

    {

    int i=0, n=0;

    while(【 】)

    {

    if(【 】)

    n++;

    i++;

    }

    【 】;

    }

    main ( )

    {

    int n;

    char str[N], ch;

    clrscr ();

    printf ("\nInput a string: \n");

    gets (str);

    printf ("\nInput a charactor: \n" ;

    scanf ("%c", &ch);

    n=fun (str, ch);

    printf("\nnumber of %c:%d", ch, n);

    }


    正确答案:s[i]或者s[i]!= '\0' s[i]=ch return n
    s[i]或者s[i]!= '\0' s[i]=ch return n 解析:第一空:while循环的条件是当前参加比较的字符不为‘\0’,即还没有到字符串的最后一个字符。第二空:如果当前字符等于指定字符,则统计个数的变量n加1。第三空:函数要求返回字符数组中指定字符的个数,所以函数要返回 n。

  • 第14题:

    请补充main函数,该函数的功能是:输出方程组“A+B=56,A+2B=72”的一组正整数解。本题的结果是: A=40,B=16。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在 main函数的横线上填入所编写的若干表达式或语句。

    试题程序:

    include<stdio. h>

    main()

    {

    int i, j;

    clrscr ();

    for(i=0;i<100; i++)

    for (j=0; j<100; j++)

    if(【 】)

    printf ("A=%2d,B=%2d",【 】);

    }


    正确答案:i+j==56&&i+2*j==72 ij
    i+j==56&&i+2*j==72 i,j 解析:第一空:如果两数i和j司时满足条件:i+j==52,i+2*j==60,则i和j就是方程组的解。两个条件要同时满足,一不可,所以要用“与”运算符——“&&”。第二空:出于要输出方程组的解,所以标准输出函数printf()的输出列表是i和j。

  • 第15题:

    编写函数fun(),它的功能是求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并做为函数值返回。例如:n为1000时,函数值应为s=153.909064。

    注意:部分源程序给出如下。

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

    试题程序:

    include <conio.h>

    include <math.h>

    include <stdio.h>

    double fun(int n)

    {

    }

    main()

    {

    clrscr();

    printf("s=%f\n", fun(1000));

    }


    正确答案:double fun(int n) {double s=0.0; int i; for(i=0; in;i++) /*从0~n中找到既能被3整除同时又能被7整除的数并将这些数求和*/ if (i%3==0&&i%7==0) s=s+i; s=sqrt (s); /*对s求平方根*/ return s; }
    double fun(int n) {double s=0.0; int i; for(i=0; in;i++) /*从0~n中找到既能被3整除同时又能被7整除的数,并将这些数求和*/ if (i%3==0&&i%7==0) s=s+i; s=sqrt (s); /*对s求平方根*/ return s; } 解析:本题的解题思路是逐个取得从0~n之间的所有数,对每次取得的数进行条件判断,条件是既能被3整除同时又能被7整除,注意:这两个条件要求同时成立,因此用到了“&及,’运算符。满足条什,该数就被累加到s中去,所有符合条件的数找完后,用sqd()函数(包含于头文件math.h>中)对s求平方根。

  • 第16题:

    请编写函数fun(),它的功能是计算下列级数和,和值由函数值返回。

    S=1+x+x2/2!3/3!+…/xn/n!

    例如,当n=10,x=0.3时,函数值为1349859。

    注意:部分源程序给出如下。

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

    试题程序:

    include<conio.h>

    include<stdio.h>

    include<math.h>

    double fun(double x, int n)

    {

    }

    main ()

    {

    clrscr ();

    printf ("%f ",fun(0,3,10));

    }


    正确答案:double fun(double xint n) { int i; double s=1.0.s1=1.0; for(i=1;i=n;i++) {s1=s1*i; /*各项中的阶乘*/ s=s+ pow(xi)/s1; /*按公式求出*/ } return s; }
    double fun(double x,int n) { int i; double s=1.0.s1=1.0; for(i=1;i=n;i++) {s1=s1*i; /*各项中的阶乘*/ s=s+ pow(x,i)/s1; /*按公式求出*/ } return s; } 解析:本程序中用s1来表示每项的分母(即各项中的阶乘),要注意本程序中s和s1的初值都为1。

  • 第17题:

    请补充main函数,该函数的功能是:从键盘输入一组整数,使用条件表达式找出最大的整数。当输入的整数为0时结束。

    例如,输入1,2,3,5,4,0时,最大的数为5。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在 main函数的横线上填入所编写出的若干表达式或语句。

    试题程序:

    include<stdio.h>

    include<conio.h>

    define N 100

    main()

    {

    int num[N];

    int i=-1;

    int max=0;

    clrscr();

    printf("\nInput integer number:\n");

    do

    {

    i++;

    printf("num[%d]=",i);

    scanf("%d",【 】);

    max=【 】num[i]:max;

    }while (【 】);

    printf("max=%dkn",max);

    }


    正确答案:&num[i] maxnum[i]? num[i]!=0
    &num[i] maxnum[i]? num[i]!=0 解析:第一空:注意掌握标准输入函数scanf()的调用格式,输入参数列表中变量前面要使用求址运算符&。第二空:注意掌握条件表达式的用法,当输入的数比最大值大时,则认为此输入的数为最大值,否则最大值不变。第三空:题目要求输入的整数以0结束,所以,当输入的数不为0时,继续do—while循环,否则终止循环。

  • 第18题:

    请编写函数fun(),它的功能是计算下列级数和,和值由函数值返回。

    S=1-x+x2(上标)/2!-x3(上标)/3!+…+ (-1*x) n(上标)/n!

    例如,当n=15,x=0.5时,函数值为0.606531。

    注意:部分源程序给出如下。

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

    试题程序:

    include<conio.h>

    include<stdio.h>

    include<math.h>

    double fun(double x, int n)

    {

    }

    main()

    {

    clrscr();

    printf("%f ",fun (0.5,15));

    }


    正确答案:double fun(double x int n) { int ij=1; double s=1.0s1=1.0; for(i=1;i=n;i++) { j=-1*j; s1=s1*i /*各项中的阶乘*/ s=s+j*pow(xi)/s1; /*按公式求出*/ } return s; }
    double fun(double x, int n) { int i,j=1; double s=1.0,s1=1.0; for(i=1;i=n;i++) { j=-1*j; s1=s1*i /*各项中的阶乘*/ s=s+j*pow(x,i)/s1; /*按公式求出*/ } return s; } 解析:本程序中用s1来表示每项的分母(即各项中的阶乘),要注意本程序中s和s1的初值都为1。注意到本题的公式中是加减相间的,这里要学会使用语句j=-1*j来实现。

  • 第19题:

    编写函数fun(),它的功能是求n以内(不包括n)同时能被5与11整除的所有自然数之和的平方根s,并作为函数值返回。

    例如:n为1000时,函数值应为s=96.979379。

    注意:部分源程序给出如下。

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

    试题程序:

    include <conio.h>

    include <math.h>

    include

    double fun(int n)

    {

    }

    main()

    {

    clrscr();

    printf("s=%f\n",fun(1000));

    }


    正确答案:double fun(int n) {double s=0.0; int i; for(i=0;in;i++) /*从0~n中找到既能被5整除同时又能被11整除的数并将这些数求和*/ if(i%5==0&&i%11==0) s=s+i; s=sqrt(s); /*对s求平方根*/ return s;
    double fun(int n) {double s=0.0; int i; for(i=0;in;i++) /*从0~n中找到既能被5整除同时又能被11整除的数,并将这些数求和*/ if(i%5==0&&i%11==0) s=s+i; s=sqrt(s); /*对s求平方根*/ return s; 解析:本题的解题思路是逐个取得从。0-n之间的所有数,对每次取得的数进行条件判断,条件是既能被5整除同时又能被11整除,注意:这两个条件要求同时成立,因此用到了“&&”运算符。满足条件,该数就被累加到s中去,求出所有符合条件的数后,用sqrt()函数(包含于头文件math.h>中)对s求平方根。

  • 第20题:

    请编写一个函数fun(),它的功能是计算并输出给定整数n的所有因子(不包括1与自身)的平方和(规定n的值不大于100)。

    例如:主函数从键盘给输入n的值为56,则输出为 sum=1113。

    注意:部分源程序给出如下。

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

    试题程序:

    include <stdio.h>

    long fun(int n)

    {

    }

    main()

    {

    int n;

    long sum;

    printf("Input n:");

    scanf("%d",&n);

    sum=fun(n);

    printf("sum=%ld\n",sum);

    }


    正确答案:long fun(int n) { int i; long s=0; for(i=2;i=n-1;i++) /*从2~n-1中找n的所有因子*/ if(n%i==0) s+=i*i; /*将所有因子求平方加*/ return s; /将平方和返回*/ }
    long fun(int n) { int i; long s=0; for(i=2;i=n-1;i++) /*从2~n-1中找n的所有因子*/ if(n%i==0) s+=i*i; /*将所有因子求平方加*/ return s; /将平方和返回*/ } 解析:本题的解题思路是用n逐个去除以2到n-1之间的所有数,如果n能被除尽,则把所得到的一个因子的平方累加到s中去。

  • 第21题:

    请补充函数fun(),该函数的功能是:判断某一个年份是否为闰年。

    例如,1900年不是闰年,2004是闰年。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

    试题程序:

    include<stdio.h>

    include<conio.h>

    int fun(int n)

    {

    int flag=0;

    if (n%4=0)

    {

    if (【 】)

    flag=1;

    }

    if (【 】)

    flag=1;

    return【 】;

    }

    main()

    {

    int year;

    clrscr();

    printf("Input the year:");

    scanf("%d", &year);

    if (fun(year))

    printf("%d is a leap year. \n", year);

    else

    printf("%d is not a leap year.\n",

    year);

    }


    正确答案:n%100!=0或n%100 n%400==0 flag
    n%100!=0或n%100 n%400==0 flag 解析:第一空:判断闰年的方法是,年份能被4整除但不能被100整除,或者年份能被400整除的是闰年。此空应填, n不能被100整除,即对100取余非零。第二空:年份能被400整除的也是闰年,所以此空应填,n能被400整除,即对400取余为零。第三空:flag标记年份n是否为闰年,当flag为1时是闰年,相反,当flag为0时不是闰年。

  • 第22题:

    请补充函数fun(),该函数的功能是计算下面公式SN的值:

    例如:当N=50时,SN=71.433699。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

    试题程序:

    include<conio.h>

    include<stdio.h>

    double fun(int n)

    {

    double s=1.0,S1=0.0;

    int k;

    for(【l】;k<=n;k++)

    {

    s1=s;

    【 】;

    }

    return【 】;

    }

    main()

    {

    int k=0;

    double S;

    clrscr();

    printf("\nPlease input N=");

    scanf("%d",&k);

    s=fun(k);

    printf("\ns=%lf",s);

    }


    正确答案:k=2 s+=(2*k-1)/s1 s
    k=2 s+=(2*k-1)/s1 s 解析:第一空:因为变量s初始化为1.0,也就是公式中的第—项,所以,for循环中,变量k从2开始,直到n。
    第二空:求出的s1就是公式中的SN-1,(2*K-1)/S1就是公式中的。第三空:变量s存放最后的结果,所以函数的返回值是s的值。

  • 第23题:

    请补充主函数main(),该函数的功能是:把从键盘输人的3个整数按从小到大输出。 例如,输入“506040”,结果输出“405060”。 注意:部分源程序给出如下。 请勿改动main()函数和其他函数中的任何内容,仅在横线上填人所编写的若干表达式或语句。 试题程序:


    正确答案:
    【1】x>y【2】x>z【3】y>z【解析】由程序最后的输出可知变量x中存放3个整数中最小的,变量2中存放3个整数中最大的。当x大于y时,变量x和y互换,因此,【1】处填x>y。当x大于2时,变量x和z互换,因此,【2】处填x>z。当y大于z时,变量y和z互换,因此’【3】处填y>z。