中国大学mooc慕课 C语言程序设计(华中科技大学) 答案满分完整版章节测试

老邓彪翻邦私酵罢酣憨讥纺台



 

第一周:C语言概述 第一周单元测试

1、 以下关于C语言说法错误的是(   )。

答案: C语言程序习惯使用大写英文字母

2、 以下不正确的C语言标识符是(   )。

答案: xy.z

3、 以下正确的C语言标识符是(   )。

答案: x123

4、 一个C语言程序的执行是从(   )。

答案: main()函数开始,直到main()函数结束

5、 在C语言程序中,main()函数的位置(   )。

答案: 可以任意

6、 一个C程序是由(   )。

答案: 一个或多个函数组成

7、 C语言源程序的基本单位(   )。

答案: 函数 

8、 编辑程序的功能是(   )。

答案: 建立并修改程序

9、 C编译程序是(   )。

答案: 将C源程序编译成目标程序

10、 C编译程序能发现源程序的(   )。

答案: 语句的语法错误 

11、 带C语言编译器的CodeBlocks集成开发环境不能完成(   )。

答案: 设计C程序

12、 CodeBlocks调试程序进入调试状态后,可以(   )。

答案: 查看当前函数中有效作用域的变量

13、 一个C语言程序可以有多个main()函数

答案: 错误

14、 C语言程序区分大小写

答案: 正确

15、 C语言程序的变量名可以是关键字

答案: 错误

16、 C语言编译程序可以发现注释错误

答案: 错误

17、 CodeBLocks集成开发环境,可以设计C程序

答案: 错误

第二周:C语言变量、常量及表达式 第二周单元测验

1、 已知字符’A’的ASCII代码值是65,字符变量c1的值是’A’,c2的值是’D’。执行语句“printf(“%d,%d”, c1, c2 – 2);”后,输出的结果是(   )。

答案: 65,66

2、 字符串”\\”ABC\”\”的长度是(    )。

答案: 7

3、 设有整型变量i ,其值为020;整型变量j,其值为20。执行语句:                          printf(“%d,%d”, i , j);                            后,输出结果是(    )。

答案: 16,20

4、 设整型变量x为5,y为2,结果值为1的表达式是(    )。

答案: x != y || x >= y

5、 二进制加法10010100 + 00110010的和为(  )。

答案: 11000110

6、 属于整型常量的是(    )。

答案: 14

7、 x, a , b 均为整型变量,执行语句“x = a = 3 , b =( a–);” 后, x、a、b的值依次为(    )。

答案: 3,2,3

8、 设整型变量x的值为35,则表达式“(x & 15) && (x | 15)”的值是(    )。

答案: 1

9、 属于实型常量的是(    )。

答案: 1E-1

10、 设整型变量a为5,使整型变量b 不为2的表达式是(    )。

答案: b = a % 2; 

11、 设有整型变量n1、n2,其值均为3,执行语句“n2 = (n1++, n2++, ++n1);”后,n2的值是(    )。

答案: 5

12、 设单精度型变量f、g均为5.0,使f为10.0的表达式是(    )。

答案: f += g;

13、 表达式“1 ? (0 ? 3 : 2) : (10 ? 1 : 0)”的值为(    )。

答案: 2

14、 设x、y、z均为实型变量,代数式“x / (yz)”的C表达式写法正确的是(    )。

答案: x / (y * z)

15、 下面程序的输出是(    )。#include <stdio.h>void main( ){    int x=10, y=3;    printf(“%d”,y=x/y);}

答案: 3

16、 下列不正确的转义字符是(    )。

答案: ‘\084’

17、 若有以下定义:char a; int b;float c; double d;则表达式a*b+d-c值的类型为(    )。

答案: double

18、 以下程序的输出结果是(    )。#include <stdio.h>void main( ) {     int a=10,b=10;    printf(“%d,%d”, –a, ++b);}

答案: 9,11

19、 表达式1.5-7/2+4.3+5%2的值是(   )。

答案: 3.8

20、 若有以下程序:#include <stdio.h>void  main( ){       int k=2,i=2,m;    m=(k+=i*=k);    printf(“%d,%d”,m,i);}执行后的输出结果是(   )。

答案: 6,4 

21、 能正确表示逻辑关系:“a≥10或a≤0”的C语言表达式是(     )。

答案: a>=10‖a<=0

22、 已知unsigned int x = 012, y = 0x0f; 则表达式x & y的结果为(   )。

答案: 10

23、 已知unsigned int x = 012, y = 0x0f; 则表达式x | y的结果为(   )。

答案: 15

24、 已知unsigned int x = 012, y = 0x0f; 则表达式x ^ y的结果为(   )。

答案: 5

25、 已知unsigned int x = 012, y = 0x0f; 则表达式x & (y^y) 的结果为(   )。

答案: 0

26、 已知unsigned int x = 012, y = 0x0f; 则表达式(x >> 3) & (y << 4) 的结果为(   )。

答案: 0

27、 已知 int a = 5, b = 4; 则表达式 !a && ++b运行后,变量a,b的值分别为(    )。

答案: 5,4

28、 已知 int a = 5, b = 3; 则表达式 a || (b + 4) && ((++a) * (b++))运行后,表达式、变量a与b的值分别为(   )。

答案: 1,5,3

29、 已知 int a = 10, b = 20,c; max = b; 则表达式 c= (a > b) && (max = a)运行后,变量c与max的值分别为(   )。

答案: 0,20

30、 已知 unsigned int a = 1, b = 2, c = 3, d = 4; float f = 1.0;则表达式 f =(((a-b>d-c)?a++:b++),a*b)运行后,变量f的值为(   )。

答案: 4.0

31、 在C语言中,表达式“5&&6”的值为(   )。

答案: 1

32、 有以下程序#include <stdio.h>void main( ){    int a,b,c=290;    a=(c/100)%9;    b=(-1)&&(-1);    printf(“%d,%d”,a,b);}输出结果是(    )。

答案: 2,1

33、 下面程序的输出是(     )。#include <stdio.h>void  main( ){     int a=-1,b=4,k;    k=(a++<0)&&(!(b–<=0));    printf(“%d,%d,%d%”,k,a,b);}

答案: 1,0,3

34、 有以下程序#include <stdio.h>void  main( ){     int a,b,d=25;    a=d/10%9;    b=a&&(-1);    printf(“%d,%d”,a,b);}程序运行后的输出结果是(    )。

答案: 2,1

35、 在C语言程序中对用到的所有变量都必须先进行定义并指定其数据类型。

答案: 正确

36、 一个变量在内存中占据一定的存储单元。

答案: 正确

37、 在C语言程序中语句”float a=b=c=1.0;”是合法的。

答案: 错误

38、 自增运算符(++)或自减运算符(–)不能用于常量。

答案: 正确

39、 在C程序的表达式中,为了明确表达式的运算次序,提倡使用小括号”( )”。

答案: 正确

40、 %运算符要求运算的操作数必须是整型数。

答案: 正确

41、 关系表达式的值可以是任意整数。

答案: 错误

42、 在C语言中,逗号运算符的优先级最低。

答案: 正确

43、 C语言允许混合类型数据之间进行运算。

答案: 正确

44、 转义字符表示法只能表示字符不能表示数字。

答案: 错误

45、 在C语言标识符定义中,大小写字母是不加区分的。

答案: 错误

第三周:C程序及流程控制(1) 第三周单元测验

1、 C语言的结构化程序设计所包含的结构是(  )。

答案: 顺序结构、选择结构和循环结构

2、 下面哪个语句不便于C语言结构化编程的是(   )。

答案: goto语句

3、 C语言的流程控制语句不包括(    )。

答案: 表达式语句

4、 C语言的辅助控制语句不包括(    )。

答案: swicth …case语句

5、 关于C语言的复合语句,下面哪种说法是正确的(    )。

答案: 将若干条语句用括弧{ }括起来就构成了复合语句;

6、 关于C语言的空语句,下面哪种说法是正确的(    )。

答案: 只有分号的语句就叫空语句;

7、 关于表达式语句,下面哪种说法是正确的(    )。

答案: 任何一个表达式加上一个分号就是一条表达式语句;

8、 关于while循环,下面哪种说法是错误的(    )。

答案: while循环的循环体不能为空语句;

9、 阅读以下程序:#include <stdio.h>void  main( ) {     int x;     scanf(“%d”,&x);     if(x–<5)         printf(“%d”, x);     else         printf(“%d”, x++); }程序运行后,如果从键盘上输入5,则输出结果是 (     )。

答案: 4

10、 有如下程序,该程序的输出结果是(    )。#include <stdio.h>void  main( ){     int x=1,a=0,b=0;    switch(x)    {        case 0: b++;        case 1: a++;        case 2: a++;                     b++;    }    printf(“a=%d,b=%d”,a,b);}

答案: a=2,b=1

11、 有以下程序#include <stdio.h>void  main( ){      int a=16,b=21,m=0;    switch(a%3)    {        case 0:                         m++;                    break;          case 1:                        m++;          switch(b%2)          {                    default:                                   m++;                   case 0:                               m++;                               break;          }    }    printf(“%d”,m);}程序运行后的输出结果是(    )。

答案: 3

12、 有以下程序#include <stdio.h>void  main( ){     int a=5,b=4,c=3,d=2;     if(a>b && b>c)          printf(“%d”,d);     else if(c-1>=d)          printf(“%d”,d+1);     else          printf(“%d”,d+2);}执行后输出结果是(     ) 。

答案: 2

13、 有以下程序#include <stdio.h>void  main( ){    int a=3,b=4,c=5,d=2;    if(a<b)    {        if(b>c)            printf(“%d  “,d++ +1);        else            printf(“%d  “,++d +1);    }        printf(“%d”,d);} 程序运行后的输出结果是(    )。

答案: 4  3

14、 有以下程序#include <stdio.h>void  main( ){       int i,s=0;     for(i=1;i<10;i+=2)            s+=i+1;     printf(“%d”,s);}程序运行后的输出结果是(    )。

答案: 数1~10中的偶数之和

15、 以下程序段的输出结果是(    )。 int x=3; do {      printf(“%3d”,x-=2); } while(!(–x)); 

答案: 1  -2

16、 以下程序中,while循环的循环次数是(    )。#include <stdio.h>void  main(  ){     int  i=0;    while(i<10)    {           if(i<1)               continue;        if(i==5)              break;         i++;    }……}

答案: 死循环,不能确定次数

17、 有以下程序#include <stdio.h>void  main( ){     int a = 12, b = -34, c = -56, min;    min = a;    if(min > b)        min = b;    if(min > c)        min = c;    printf(“min = %d”, min);}输出结果是(    )。

答案: min = -56

18、 有以下程序#include <stdio.h>void  main( ){     int a ;    scanf(“%d”,&a);    if(a >= 0)    {        if( a % 2 ==0)            printf(“%d is a positive even number.”, a);        else            printf(“%d is a positive odd number.”, a);    }    else    {        if( a % 2 ==0)            printf(“%d is a negative even number.”, a);        else            printf(“%d is a negative odd number.”, a);    }}若通过键盘输入-11,则运行结果是(    )。

答案: -11 is a negative odd number.

19、 有以下程序#include <stdio.h>void  main( ){     char c ;    while(( c = getchar( )) != ‘$’)    {        if(‘A’ <= c && c <= ‘Z’)            putchar(c + 32);        else if(‘a’ <= c && c <= ‘z’)            putchar(c);    }}当输入为abc&%ABC#!$时,运行结果是(    )。

答案: abcabc

20、 输入一个字符,判断该字符是数字、字母、空格还是其它字符。请选择正确的答案填空 (    )。#include <stdio.h>void  main( ){     char c ;    c = getchar( );    if(____)        printf(“It is an ENGLISH character.”);    else if(‘0’ <= c && c <= ‘9’)        printf(“It is a DIGITAL character.”);    else if(c == 32)        printf(“It is a SPACE character.”);    else         printf(“It is other character.”);}当输入为abc*&%ABC#!$时,运行结果是(    )。

答案: (‘A’ <= c && c <= ‘Z’)  || (‘a’ <= c && c <= ‘z’)

21、 程序读入10个整数,统计其中非负数的个数,并计算非负数之和。请选择正确的答案填空 (    )。#include <stdio.h>void  main( ){     int i, a, s = 0, count = 0  ;    for(i = 0; i < 10; i ++)    {        scanf(“%d”,&a);        if( a < 0)            continue;        ________    }    printf(“s = %d \t count = %d “, s,count);}

答案: s+=a; count++;

22、 C语言程序的结构和版式是没有任何规律的;

答案: 错误

23、 初学者编写C语言的程序不需要养成加注释的习惯;

答案: 错误

24、 使用复合语句便于程序的结构化;

答案: 正确

25、 结构化程序设计的三种基本结构是顺序结构、选择结构和循环结构。

答案: 正确

26、 break语句的功能只是用于退出循环;

答案: 错误

27、 C语言中一般情况下不推荐使用goto 语句;

答案: 正确

28、 switch多分支选择语句的功能可以用条件分支嵌套语句来实现

答案: 正确

29、 空语句就是程序中没有什么作用的语句;

答案: 错误

30、 while循环和for循环可以相互替代;

答案: 正确

31、 在一些特定的应用中,用switch多分支选择语句代替条件分支嵌套语句可以提高程序的可读性。

答案: 正确

第四周:C程序及流程控制(2) 第四周单元测验

1、 如下程序,求序列:1、3、5、7…….的前20项之和,请选择正确的答案填空(  )。#include<stdio.h> void main( )  {        int  i;        int  sum, t ;  //sum代表和, t代表某项          sum  =  0 ;        t     =  1 ;            for (i=1 ; _____  ;   i++)        {             sum + = t;             t += 2;       }       printf(” sum = %d”,sum);}

答案: i<=20

2、 计算2+4+6+8+……+100的值,请选择正确的答案填空(   )。#include<stdio.h> void main( )  {        int  i;        int  s, t ;  //s代表和, t代表某项          s  =  0 ;        t   =  2 ;            for (i=1 ;  i <= 50 ;   i++)        {           _______;           t += 2;        }        printf(” sum = %d”,s);}

答案: s =s +t

3、 如下程序,求序列:1!,   2!,   3!,   4!………..的前八项之和.请选择正确的答案填空 (    )。#include<stdio.h>void main( ){        int  i;        ____ ;  //sum代表和, t代表某项          sum = 0 ;        t   = 1 ;            for (i=1;i<=8;i++)        {            sum += t;             t *= (i+1);        }        printf(” sum = %ld”,sum);}

答案: long sum,t

4、 求序列:2!+3!+4!+5!+……+11!的值.请选择正确的答案填空(    )。#include<stdio.h>void main( ){        int  i;        long sum,t  ;  //sum代表和, t代表某项          sum = 0 ;        t   = 2 ;        for (i=1;i<=10;i++)        {            sum + = t;             _____;        }        printf(“sum = %ld”,sum);}

答案:  t *=(i+2) 

5、 编一程序,求100-999之间所有的水仙花数, 所谓水仙花数就是说数的百位。十位和个位数的立方和恰好等于它本身。请选择正确的答案填空 (    )。#include<stdio.h>void main( )  {        int  i,a,b,c;                for (_____)        {            a = i/100 ;           //求百位数            b =( i- a100)/10;     //求十位数            c = i%10;           //求个位数             if( aaa + bbb +cc*c == i)           {                 printf(” %6d”, i  );           }        } }

答案: i =100 ; i<=999 ; i++

6、 有以下程序#include <stdio.h>void  main(  ) {     int a=1,b;     for(b=1;b<=10;b++)     {         if(a>=8)            break;         if(a%2==1)        {            a+=5;            continue;        }         a-=3;     }     printf(“%d”,b); }程序运行后的输出结果是(     )。

答案: 4

7、 有以下程序#include <stdio.h>void  main( ){      int i;     for(i=0;i<3;i++)     {          switch(i)          {            case 1:                        printf(“%3d”,i);            case 2:                        printf(“%3d”,i);            default:                        printf(“%3d”,i);          }    }    }执行后输出结果是(    )。

答案: 0  1  1  1  2  2

8、 下面程序的输出是(    )。#include <stdio.h>void  main( ){    int y=9;    for(  ; y>0 ; y–)    {        if(y%3==0)        {            printf(“%3d”,–y);            continue;        }    }}

答案:   8  5  2

9、 有以下程序#include <stdio.h>void  main( ){     int x,i;    for(i=1;i<=50;i++)    {        x=i;        if(++x%2==0)            if(x%3==0)                if(x%7==0)                    printf(“%d”,i);    }}输出结果是(    )。 

答案: 41

10、 以下程序为求序列:1/2、3/4、5/8、7/16、9/32、……所有大于或等于0.000001的数据项之和。请选择正确的答案填空(    )。#include<stdio.h>void main( ){        float sum, a , b  ;  //sum代表和, a代表分子, b代表分母        sum = 0.0 ;        a = 1;                  //分子赋初值        b = 2 ;                //分母赋初值        while (a / b >=1e-6)        {                _____;                a = a + 2;    //求下一项分子                b = b * 2;    //求下一项分母        }        printf(“sum = %f”,sum);}

答案: sum += (a / b) 

11、 已知abc + cba = 1333,a, b, c,为一位数,以下程序为求所有可能的a, b, c的程序。请选择正确的答案填空(    )。#include<stdio.h>void main( )  {        int  i,a,b,c;                for (i =100 ; i<=999 ; i++)        {            a = i/100 ;           //求百位数            b =( i- a100)/10;     //求十位数            c = i%10;           //求个位数             if( _____)           {                 printf(” a=%d,b=%d,c=%d”,a,b,c  );           }        } }

答案: (a100+b10+c+c100+b10+a)==1333

12、 以下程序为求两个正整数的最大公约数的程序。请选择正确的答案填空(    )。#include<stdio.h>void main( )  {        int  i, a, b;        scanf(“%d%d”,&a,&b);        for (_____ ; i > 0 ; i –)        {            if( (a % i == 0) && (b % i == 0))           {                 printf(” the max = %d “, i ) ;                 break ;           }        } }

答案: i = (a<b ? a : b)

13、 以下程序为判断一个正整数是否为素数的程序。请选择正确的答案填空(    )。#include<stdio.h>void main( )  {        int  i, a ;        scanf(“%d”,&a);        for (i = 2 ; i < a ; i ++)        {            if(____)            {                 break ;            }        }        if(i >= a)        {                printf(“%d is a sushu.”,a);        }        else        {                printf(“%d is not a sushu.”,a);        } }

答案: a % i == 0

14、 用100元钱买100只鸡,其中母鸡每只3元,公鸡每只2元,小鸡1元3只,且每种鸡至少买1只。以下程序为计算百钱买百鸡所有可能购买方案的程序。请选择正确的答案填空(    )。#include<stdio.h>void main( ){        int  a, b, c; //a,b,c分别代表母鸡、公鸡和小鸡数        for (a = 1 ; a <= 98 ; a ++)        {            for (b = 1 ; b <= 98 ; b ++)           {                  for (c = 1 ; c <= 98 ; c ++)                  {                           if(_________)                           {                                  printf(“muji : %d,  gongji: %d, xiaoji: %d”,a,b,c);                            }                  }           }        }}

答案: (a+b+c==100) && (a3+b2+c/3 ==100) && (c %3 ==0)

15、 计算1!, 2!, 3!, ……,10! 的值,并输出结果。请选择正确的答案填空(    )。#include<stdio.h>void main( ){        int  i;        long int s =1  ;  //s代表阶乘的结果          for (i=1;i<=10;i++)        {            ____;             printf(“%d! = %ld”, i, s);        }}

答案: s *= i 

16、 for循环语句中的三个表达式起着不同的作用,表达式1一般用于进入循环前给某些变量赋初值;

答案: 正确

17、 在for循环语句中,表达式1、表达式2和表达式3都是逗号运算表达式;

答案: 错误

18、 在C语言编程中应该尽量少用空格或者空行;

答案: 错误

19、 在C语言编程中,如果出现嵌套的大括弧对{ },使用缩进对齐的格式能增强程序的可读性;

答案: 正确

20、 C语言的辅助控制语句包括break,continue、return和goto语句;

答案: 正确

21、 C语言编程中,不提倡把多个语句写在一行中,提倡一行只写一条语句;

答案: 正确

22、 在C语言编程时,要养成修改代码同时修改相应注释的习惯,以保证注释与代码的一致性。

答案: 正确

23、 在C语言编程中,相对独立的程序块之间、变量说明之后加上空行可以增加程序的可读性。

答案: 正确

第五周:函数(1) 第五周单元测试

1、 下列关于C语言程序的结构化设计,说法错误的是( )

答案: 只有一个源文件,对函数大小没有限制

2、 定义函数void fun()函数,函数的返回值类型为()

答案: 函数无返回值

3、 下面关于函数描述正确的是()

答案: 函数的定义不可以嵌套,但是调用可以嵌套

4、 若定义函数时函数的返回类型缺省,则函数的默认数据类型为()

答案: int

5、 一个函数返回值的类型是由( )决定的

答案: 定义函数时指定的函数数据类型

6、 下面叙述中正确的是( )

答案: 对于用户自己定义的函数,在使用前必须加以说明

7、 函数的形参可以是()

答案: 局部自动变量

8、 有如下定义的函数:func(int a){    printf(“%d”,a);}则该函数的返回值类型是()

答案: int类型

9、 函数内部的局部静态变量,下列说法正确的是( )

答案: 在函数退出后不被释放,程序执行结束释放

10、 局部自动变量,下列说法正确的是()

答案: 进入函数分配内存,退出函数,释放内存

11、 下列说法不正确的是( )

答案: 全局静态变量和局部静态变量,作用域和寿命相同

12、 下面程序段运行的结果为()#include <stdio.h>int f();int f() {   static int i=0;    int s=1;       s+=i;    i++;    return s; } void main() {   int i,a=0;    for(i=0;i<5;i++)      a+=f();    printf(“%d”,a); }

答案: 15

13、 下面程序段运行的结果为( )#include <stdio.h>int try1( );int try1( ){    static int x=3;    x++;    return x;}void main(){    int i,x;    for(i=0; i<=2; i++)        x=try1( );    printf(“%d”, x);}

答案: 6

14、 下面程序的运算结果为( )#include <stdio.h>void fun();int main(){   int a=10;      fun();   printf(“%3d”,a);   return 0;}void fun(){   int a=20;   printf(“%3d”,a);}

答案:  20 10

15、 以下正确的函数形式是( )

答案: int fun(int x,int y){    double z;   z=x+y;   return z;}

16、 以下程序的输出结果是()#include <stdio.h>int i=10;int func();void main(){   int j=1;   j=func();   printf(“%3d”,j);   j=func();   printf(“%3d”,j);}int func(){   int k=0;      k=k+i;   i=i+10;   return k;}

答案:  10 20  

17、 函数内定义的局部变量可以在函数运行结束后继续被调用

答案: 错误

18、 变量根据其作用域的范围可以分作局部变量和全局变量

答案: 正确

19、 当变量的存储类型定义缺省时,系统默认为变量的存储类型为auto类型,分配在静态区

答案: 错误

20、 在一个函数内定义的静态局部变量不能被另外一个函数所调用

答案: 正确

21、 函数调用语句:func(rec1,rec2+rec3,(rec4,rec5));中,含有的实参个数是5

答案: 错误

22、 变量被定义后,它的作用域和寿命就被确定了,并且不可改变。

答案: 正确

23、 在同一个作用域不可定义同名变量,在不同的作用域可以定义同名变量

答案: 正确

24、 函数内部的静态变量,在函数退出后不被释放

答案: 正确

25、 C语言中函数返回值的类型由return语句中的表达式的类型决定

答案: 错误

26、 C语言中一般全局变量与静态全局变量生存期不同

答案: 错误

27、 程序进行编译时,不为形式参数分配存储空间

答案: 正确

28、 编译器根据函数的原型来检查函数的调用正确与否

答案: 正确

第六周:函数(2) 第六周单元测验

1、 下列说法中正确的是()

答案: 函数原型是一条语句,不包括函数体

2、 在调用函数时,如果实参是整型变量,它与对应形参之间的数据传递方式是()

答案: 单向值传递 

3、 若定义函数float *fun( ),则函数fun的返回值为( )

答案: 一个指向变量的指针

4、 C程序中各函数之间可以通过多种方式传递数据,下列不能用于实现数据传递的方式是( )

答案: 同名的局部变量

5、 以下结论中只有( )是正确的

答案: 所有的递归程序均可以采用非递归算法实现

6、 main()函数的数据类型,可以是( )

答案: void

7、 下面程序段运行的结果为( )#include <stdio.h>int fun(float x,float y);int fun(float x,float y){   return x > y ? x : y;}void main(){   printf(“%d,%d”,fun(3,5),fun(4.8,4.6));}

答案: 5,4

8、 下面程序的运算结果为( )#include <stdio.h>int fun(int n);int fun(int n){   if(n == 1 || n == 2)     return 1;   return fun(n-1)+fun(n-2);}void main(){   printf(“%d”,fun(6));}

答案: 8

9、 以下程序运行结果是( )#include <stdio.h>void f(int a, int b);void f(int a, int b){   int t;   t = a;    a = b;    b = t;}void main(){   int x = 3, y = 2, z = 1;      if (x > y)     f(x, y);   if (y > z)     f(y, z);   if (x > y)     f(x, y);   printf(“%d, %d, %d”, x, y, z);}

答案: 3, 2, 1

10、 以下程序的输出结果是( )#include <stdio.h>int func(int s);void main( ){   int i,x=0;   for(i=0;i<4;i++)   {      x=func(i+1);      printf(“%3d”,x);   }  printf(“”);}int func(int s){    int x;    static int t=3;    x=s+t;    t++;    return x;}

答案:   4  6  8  10  

11、 以下程序的执行结果是()#include <stdio.h>int swap(int a,int b);void main(){   int a,b;       a=3,b=10;   swap(a,b);   printf(“a=%d,b=%d”,a,b);   }int swap(int a,int b){   int temp;      temp=a;   a=b;   b=temp;   return 0;}

答案: a=3,b=10 

12、 以下程序的执行结果是()#include <stdio.h>int sum(int k);void main(){   int s,i;   for(i=1;i<=10;i++)      s=sum(i);   printf(“s=%d”,s);}int sum(int k){   int x=0;      return (x+=k);      }

答案: s=10

13、 以下程序的执行结果是()#include <stdio.h>int func(int );void main(){    int a=1,i;        for(i=0;i<4;i++)    {         printf(“%3d”,func(a+i));    }}int func(int b){   static int i;   return   b+i;}

答案:   1  2  3  4  

14、 以下程序的执行结果是()#include <stdio.h>int multi(int x,int y);void main(){   int a,b,c;       a=10,b=12;   c=mult(a,b);   printf(“%d%d=%d”,a,b,c);}int multi(int x,int y){   return xy;}

答案: 1012=120

15、 以下程序的执行结果是()#include <stdio.h>int n;void func();void main(){   static int x=6;   int y;   y=n;   func();   printf(“x=%d,y=%d,n=%d”,x,y,n);}void func(){   static int x;   int y=10;   x=x+20;   n=n+2;   y=y+n;}

答案: x=6,y=0,n=2

16、 C语言中,函数调用时,形参与实参的个数可以不必保持一致

答案: 错误

17、 C语言函数间使用值传递数据时,对形参进行写操作,会影响主调函数里相关变量的值

答案: 错误

18、 C语言中,一个函数可以有多个返回值

答案: 错误

19、 C语言函数间使用传址方式传递数据时,对形参进行写操作,可以影响主调函数里相关变量的值

答案: 正确

20、 C语言中,使用全局变量可以使程序设计简单,移植性好

答案: 错误

21、 函数的递归调用是一个函数直接或间接地调用它自身

答案: 正确

第七周:数组(1) 第七周单元测验

1、 下列一维数组定义正确的是(   )

答案: int a[3];

2、 下列一维数组定义与初始化错误的是(    )

答案: int a[3] = 0;

3、 下列二维数组定义和初始化错误的是(    )

答案: int a[3][];

4、 在下列语句条件下,二维数组的定义和初始化错误的是(    )#define SIZE  9

答案: int a[][SIZE];

5、 假定int型变量在内存中占2个字节,那么二维数组int a[3][4]所占的字节数为 (    )

答案: 24

6、 若有说明:int a[][3]={{1,2,3},{4,5},{6,7}}; 则数组a的第一维的大小为 (    )

答案: 3

7、 下列关于数组概念的描述中,错误的是(    )

答案: 数组定义后,它的元素个数是可以改变的

8、 已知double dd[ ][3]={{1.2, 2.4, 3.6}, {4.8, 5.2},{6.4}}; dd[2][2]的值为(    )

答案: 0.0

9、 若有定义语句:int m[][3]={1,2,3,4,5,6,7};,则与该语句等价的是(   )

答案: int m[][3]={{1,2,3},{4,5,6},{7}};

10、 程序填空。程序功能:求矩阵的最小值,并记录最小值的行列号。#include <stdio.h>void main(){    int i, j, min;    int row=0,column=0;    int a[3][3]={{1,2,3},{2,-3,4},{9,4,7}};    min=a[0][0];    for(i=0;i<3;i++)    {        for(j=0;j<3;j++)        {            if(_____)            {                min=a[i][j];                row=i+1;                column=j+1;            }        }    }    printf(“min=%d,row=%d,column=%d”,min,row,column);}程序中空白处所填语句正确的为(    )

答案: min>a[i][j]

11、 若有定义语句int a[10]; 以下叙述中正确的是(   )

答案: a[0]是合法的数组元素,a[10]不是合法的数组元素

12、 下列有一行是错误的(每行程序前的数字表示行号),程序有错误的行数是(    )1  include <stdio.h>2  void main( )3  {4      int a[3] = {2*3};5      int i, sum=0;6      for( i=0; i<3; i++ )7      {8          scanf(“%d”, a[i]);9          sum += a[i];10     }11     printf( “%d”, sum );12  }

答案: 第8行有错误

13、 若有以下数组说明,则a[a[i]]元素数值是(    )。int a[12]={1,4,7,10,2,5,8,11,3,6,9,12}, int i=10;

答案: 6

14、 以下叙述中正确的是(    )

答案: 语句int a[8]={0};是合法的

15、 程序填空。程序功能:计算两个矩阵的乘积。#include <stdio.h>void main(){    int valueA[3][4]={{2,3,-5,0},{12,-1,2,8},{1,12,-2,1}};    int valueB[4][5]={{5,13,0,1,5},{-2,0,4,1,5},{5,3,2,1,0},{0,1,2,0,1}};        int valueC[3][5]={{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}};    int i,j,k;    for(i=0; i<3; i++)        for(j=0; j<5; j++)            for(k=0; k<4;k++)                ______;    for(i=0;i<3;i++)    {        printf(“”);        for(j=0;j<5;j++)            printf(“%5d”,valueC[i][j]);    }}程序中空白处所填语句正确的为(    )

答案: valueC[i][j] += valueA[i][k] * valueB[k][j]

16、 一维数组在内存中的存储空间是连续的;二维数组在存储中的存储空间每一行是连续,不同行之间则不连续。

答案: 错误

17、 数组可以动态指定大小。

答案: 错误

18、 数组初始化时可以仅初始化部分元素的值。

答案: 正确

19、 数组所占的元素取决于数组的大小,如果数组大小为N,则在该数组所占内存大小为N个字节。

答案: 错误

20、 同一个数组可以存放不同数据类型的数值。

答案: 错误

21、 二维数组初始化语句”int a[2][2] = {{0},{2}};” 是正确的。

答案: 正确


上方为免费预览版答案,如需购买完整答案,请点击下方红字

点击这里,购买完整版答案


为了方便下次阅读,建议在浏览器添加书签收藏本网页

添加书签方法:

1.电脑按键盘的Ctrl键+D键即可收藏本网页

2.手机浏览器可以添加书签收藏本网页

中国大学mooc慕课 C语言程序设计(华中科技大学)  答案满分完整版章节测试第1张

中国大学mooc慕课 C语言程序设计(华中科技大学)  答案满分完整版章节测试第2张


我们的公众号

打开手机微信,扫一扫下方二维码,关注微信公众号:萌面人APP

本公众号可查看各种网课答案,还可免费查看大学教材答案

点击这里,可查看公众号功能介绍

中国大学mooc慕课 C语言程序设计(华中科技大学)  答案满分完整版章节测试第3张


 

,

第一周:C语言概述 第一周单元测试

1、 以下关于C语言说法错误的是(   )。

答案: C语言程序习惯使用大写英文字母

2、 以下不正确的C语言标识符是(   )。

答案: xy.z

3、 以下正确的C语言标识符是(   )。

答案: x123

4、 一个C语言程序的执行是从(   )。

答案: main()函数开始,直到main()函数结束

5、 在C语言程序中,main()函数的位置(   )。

答案: 可以任意

6、 一个C程序是由(   )。

答案: 一个或多个函数组成

7、 C语言源程序的基本单位(   )。

答案: 函数 

8、 编辑程序的功能是(   )。

答案: 建立并修改程序

9、 C编译程序是(   )。

答案: 将C源程序编译成目标程序

10、 C编译程序能发现源程序的(   )。

答案: 语句的语法错误 

11、 带C语言编译器的CodeBlocks集成开发环境不能完成(   )。

答案: 设计C程序

12、 CodeBlocks调试程序进入调试状态后,可以(   )。

答案: 查看当前函数中有效作用域的变量

13、 一个C语言程序可以有多个main()函数

答案: 错误

14、 C语言程序区分大小写

答案: 正确

15、 C语言程序的变量名可以是关键字

答案: 错误

16、 C语言编译程序可以发现注释错误

答案: 错误

17、 CodeBLocks集成开发环境,可以设计C程序

答案: 错误

第二周:C语言变量、常量及表达式 第二周单元测验

1、 已知字符’A’的ASCII代码值是65,字符变量c1的值是’A’,c2的值是’D’。执行语句“printf(“%d,%d”, c1, c2 – 2);”后,输出的结果是(   )。

答案: 65,66

2、 字符串”\\”ABC\”\”的长度是(    )。

答案: 7

3、 设有整型变量i ,其值为020;整型变量j,其值为20。执行语句:                          printf(“%d,%d”, i , j);                            后,输出结果是(    )。

答案: 16,20

4、 设整型变量x为5,y为2,结果值为1的表达式是(    )。

答案: x != y || x >= y

5、 二进制加法10010100 + 00110010的和为(  )。

答案: 11000110

6、 属于整型常量的是(    )。

答案: 14

7、 x, a , b 均为整型变量,执行语句“x = a = 3 , b =( a–);” 后, x、a、b的值依次为(    )。

答案: 3,2,3

8、 设整型变量x的值为35,则表达式“(x & 15) && (x | 15)”的值是(    )。

答案: 1

9、 属于实型常量的是(    )。

答案: 1E-1

10、 设整型变量a为5,使整型变量b 不为2的表达式是(    )。

答案: b = a % 2; 

11、 设有整型变量n1、n2,其值均为3,执行语句“n2 = (n1++, n2++, ++n1);”后,n2的值是(    )。

答案: 5

12、 设单精度型变量f、g均为5.0,使f为10.0的表达式是(    )。

答案: f += g;

13、 表达式“1 ? (0 ? 3 : 2) : (10 ? 1 : 0)”的值为(    )。

答案: 2

14、 设x、y、z均为实型变量,代数式“x / (yz)”的C表达式写法正确的是(    )。

答案: x / (y * z)

15、 下面程序的输出是(    )。#include <stdio.h>void main( ){    int x=10, y=3;    printf(“%d”,y=x/y);}

答案: 3

16、 下列不正确的转义字符是(    )。

答案: ‘\084’

17、 若有以下定义:char a; int b;float c; double d;则表达式a*b+d-c值的类型为(    )。

答案: double

18、 以下程序的输出结果是(    )。#include <stdio.h>void main( ) {     int a=10,b=10;    printf(“%d,%d”, –a, ++b);}

答案: 9,11

19、 表达式1.5-7/2+4.3+5%2的值是(   )。

答案: 3.8

20、 若有以下程序:#include <stdio.h>void  main( ){       int k=2,i=2,m;    m=(k+=i*=k);    printf(“%d,%d”,m,i);}执行后的输出结果是(   )。

答案: 6,4 

21、 能正确表示逻辑关系:“a≥10或a≤0”的C语言表达式是(     )。

答案: a>=10‖a<=0

22、 已知unsigned int x = 012, y = 0x0f; 则表达式x & y的结果为(   )。

答案: 10

23、 已知unsigned int x = 012, y = 0x0f; 则表达式x | y的结果为(   )。

答案: 15

24、 已知unsigned int x = 012, y = 0x0f; 则表达式x ^ y的结果为(   )。

答案: 5

25、 已知unsigned int x = 012, y = 0x0f; 则表达式x & (y^y) 的结果为(   )。

答案: 0

26、 已知unsigned int x = 012, y = 0x0f; 则表达式(x >> 3) & (y << 4) 的结果为(   )。

答案: 0

27、 已知 int a = 5, b = 4; 则表达式 !a && ++b运行后,变量a,b的值分别为(    )。

答案: 5,4

28、 已知 int a = 5, b = 3; 则表达式 a || (b + 4) && ((++a) * (b++))运行后,表达式、变量a与b的值分别为(   )。

答案: 1,5,3

29、 已知 int a = 10, b = 20,c; max = b; 则表达式 c= (a > b) && (max = a)运行后,变量c与max的值分别为(   )。

答案: 0,20

30、 已知 unsigned int a = 1, b = 2, c = 3, d = 4; float f = 1.0;则表达式 f =(((a-b>d-c)?a++:b++),a*b)运行后,变量f的值为(   )。

答案: 4.0

31、 在C语言中,表达式“5&&6”的值为(   )。

答案: 1

32、 有以下程序#include <stdio.h>void main( ){    int a,b,c=290;    a=(c/100)%9;    b=(-1)&&(-1);    printf(“%d,%d”,a,b);}输出结果是(    )。

答案: 2,1

33、 下面程序的输出是(     )。#include <stdio.h>void  main( ){     int a=-1,b=4,k;    k=(a++<0)&&(!(b–<=0));    printf(“%d,%d,%d%”,k,a,b);}

答案: 1,0,3

34、 有以下程序#include <stdio.h>void  main( ){     int a,b,d=25;    a=d/10%9;    b=a&&(-1);    printf(“%d,%d”,a,b);}程序运行后的输出结果是(    )。

答案: 2,1

35、 在C语言程序中对用到的所有变量都必须先进行定义并指定其数据类型。

答案: 正确

36、 一个变量在内存中占据一定的存储单元。

答案: 正确

37、 在C语言程序中语句”float a=b=c=1.0;”是合法的。

答案: 错误

38、 自增运算符(++)或自减运算符(–)不能用于常量。

答案: 正确

39、 在C程序的表达式中,为了明确表达式的运算次序,提倡使用小括号”( )”。

答案: 正确

40、 %运算符要求运算的操作数必须是整型数。

答案: 正确

41、 关系表达式的值可以是任意整数。

答案: 错误

42、 在C语言中,逗号运算符的优先级最低。

答案: 正确

43、 C语言允许混合类型数据之间进行运算。

答案: 正确

44、 转义字符表示法只能表示字符不能表示数字。

答案: 错误

45、 在C语言标识符定义中,大小写字母是不加区分的。

答案: 错误

第三周:C程序及流程控制(1) 第三周单元测验

1、 C语言的结构化程序设计所包含的结构是(  )。

答案: 顺序结构、选择结构和循环结构

2、 下面哪个语句不便于C语言结构化编程的是(   )。

答案: goto语句

3、 C语言的流程控制语句不包括(    )。

答案: 表达式语句

4、 C语言的辅助控制语句不包括(    )。

答案: swicth …case语句

5、 关于C语言的复合语句,下面哪种说法是正确的(    )。

答案: 将若干条语句用括弧{ }括起来就构成了复合语句;

6、 关于C语言的空语句,下面哪种说法是正确的(    )。

答案: 只有分号的语句就叫空语句;

7、 关于表达式语句,下面哪种说法是正确的(    )。

答案: 任何一个表达式加上一个分号就是一条表达式语句;

8、 关于while循环,下面哪种说法是错误的(    )。

答案: while循环的循环体不能为空语句;

9、 阅读以下程序:#include <stdio.h>void  main( ) {     int x;     scanf(“%d”,&x);     if(x–<5)         printf(“%d”, x);     else         printf(“%d”, x++); }程序运行后,如果从键盘上输入5,则输出结果是 (     )。

答案: 4

10、 有如下程序,该程序的输出结果是(    )。#include <stdio.h>void  main( ){     int x=1,a=0,b=0;    switch(x)    {        case 0: b++;        case 1: a++;        case 2: a++;                     b++;    }    printf(“a=%d,b=%d”,a,b);}

答案: a=2,b=1

11、 有以下程序#include <stdio.h>void  main( ){      int a=16,b=21,m=0;    switch(a%3)    {        case 0:                         m++;                    break;          case 1:                        m++;          switch(b%2)          {                    default:                                   m++;                   case 0:                               m++;                               break;          }    }    printf(“%d”,m);}程序运行后的输出结果是(    )。

答案: 3

12、 有以下程序#include <stdio.h>void  main( ){     int a=5,b=4,c=3,d=2;     if(a>b && b>c)          printf(“%d”,d);     else if(c-1>=d)          printf(“%d”,d+1);     else          printf(“%d”,d+2);}执行后输出结果是(     ) 。

答案: 2

13、 有以下程序#include <stdio.h>void  main( ){    int a=3,b=4,c=5,d=2;    if(a<b)    {        if(b>c)            printf(“%d  “,d++ +1);        else            printf(“%d  “,++d +1);    }        printf(“%d”,d);} 程序运行后的输出结果是(    )。

答案: 4  3

14、 有以下程序#include <stdio.h>void  main( ){       int i,s=0;     for(i=1;i<10;i+=2)            s+=i+1;     printf(“%d”,s);}程序运行后的输出结果是(    )。

答案: 数1~10中的偶数之和

15、 以下程序段的输出结果是(    )。 int x=3; do {      printf(“%3d”,x-=2); } while(!(–x)); 

答案: 1  -2

16、 以下程序中,while循环的循环次数是(    )。#include <stdio.h>void  main(  ){     int  i=0;    while(i<10)    {           if(i<1)               continue;        if(i==5)              break;         i++;    }……}

答案: 死循环,不能确定次数

17、 有以下程序#include <stdio.h>void  main( ){     int a = 12, b = -34, c = -56, min;    min = a;    if(min > b)        min = b;    if(min > c)        min = c;    printf(“min = %d”, min);}输出结果是(    )。

答案: min = -56

18、 有以下程序#include <stdio.h>void  main( ){     int a ;    scanf(“%d”,&a);    if(a >= 0)    {        if( a % 2 ==0)            printf(“%d is a positive even number.”, a);        else            printf(“%d is a positive odd number.”, a);    }    else    {        if( a % 2 ==0)            printf(“%d is a negative even number.”, a);        else            printf(“%d is a negative odd number.”, a);    }}若通过键盘输入-11,则运行结果是(    )。

答案: -11 is a negative odd number.

19、 有以下程序#include <stdio.h>void  main( ){     char c ;    while(( c = getchar( )) != ‘$’)    {        if(‘A’ <= c && c <= ‘Z’)            putchar(c + 32);        else if(‘a’ <= c && c <= ‘z’)            putchar(c);    }}当输入为abc&%ABC#!$时,运行结果是(    )。

答案: abcabc

20、 输入一个字符,判断该字符是数字、字母、空格还是其它字符。请选择正确的答案填空 (    )。#include <stdio.h>void  main( ){     char c ;    c = getchar( );    if(____)        printf(“It is an ENGLISH character.”);    else if(‘0’ <= c && c <= ‘9’)        printf(“It is a DIGITAL character.”);    else if(c == 32)        printf(“It is a SPACE character.”);    else         printf(“It is other character.”);}当输入为abc*&%ABC#!$时,运行结果是(    )。

答案: (‘A’ <= c && c <= ‘Z’)  || (‘a’ <= c && c <= ‘z’)

21、 程序读入10个整数,统计其中非负数的个数,并计算非负数之和。请选择正确的答案填空 (    )。#include <stdio.h>void  main( ){     int i, a, s = 0, count = 0  ;    for(i = 0; i < 10; i ++)    {        scanf(“%d”,&a);        if( a < 0)            continue;        ________    }    printf(“s = %d \t count = %d “, s,count);}

答案: s+=a; count++;

22、 C语言程序的结构和版式是没有任何规律的;

答案: 错误

23、 初学者编写C语言的程序不需要养成加注释的习惯;

答案: 错误

24、 使用复合语句便于程序的结构化;

答案: 正确

25、 结构化程序设计的三种基本结构是顺序结构、选择结构和循环结构。

答案: 正确

26、 break语句的功能只是用于退出循环;

答案: 错误

27、 C语言中一般情况下不推荐使用goto 语句;

答案: 正确

28、 switch多分支选择语句的功能可以用条件分支嵌套语句来实现

答案: 正确

29、 空语句就是程序中没有什么作用的语句;

答案: 错误

30、 while循环和for循环可以相互替代;

答案: 正确

31、 在一些特定的应用中,用switch多分支选择语句代替条件分支嵌套语句可以提高程序的可读性。

答案: 正确

第四周:C程序及流程控制(2) 第四周单元测验

1、 如下程序,求序列:1、3、5、7…….的前20项之和,请选择正确的答案填空(  )。#include<stdio.h> void main( )  {        int  i;        int  sum, t ;  //sum代表和, t代表某项          sum  =  0 ;        t     =  1 ;            for (i=1 ; _____  ;   i++)        {             sum + = t;             t += 2;       }       printf(” sum = %d”,sum);}

答案: i<=20

2、 计算2+4+6+8+……+100的值,请选择正确的答案填空(   )。#include<stdio.h> void main( )  {        int  i;        int  s, t ;  //s代表和, t代表某项          s  =  0 ;        t   =  2 ;            for (i=1 ;  i <= 50 ;   i++)        {           _______;           t += 2;        }        printf(” sum = %d”,s);}

答案: s =s +t

3、 如下程序,求序列:1!,   2!,   3!,   4!………..的前八项之和.请选择正确的答案填空 (    )。#include<stdio.h>void main( ){        int  i;        ____ ;  //sum代表和, t代表某项          sum = 0 ;        t   = 1 ;            for (i=1;i<=8;i++)        {            sum += t;             t *= (i+1);        }        printf(” sum = %ld”,sum);}

答案: long sum,t

4、 求序列:2!+3!+4!+5!+……+11!的值.请选择正确的答案填空(    )。#include<stdio.h>void main( ){        int  i;        long sum,t  ;  //sum代表和, t代表某项          sum = 0 ;        t   = 2 ;        for (i=1;i<=10;i++)        {            sum + = t;             _____;        }        printf(“sum = %ld”,sum);}

答案:  t *=(i+2) 

5、 编一程序,求100-999之间所有的水仙花数, 所谓水仙花数就是说数的百位。十位和个位数的立方和恰好等于它本身。请选择正确的答案填空 (    )。#include<stdio.h>void main( )  {        int  i,a,b,c;                for (_____)        {            a = i/100 ;           //求百位数            b =( i- a100)/10;     //求十位数            c = i%10;           //求个位数             if( aaa + bbb +cc*c == i)           {                 printf(” %6d”, i  );           }        } }

答案: i =100 ; i<=999 ; i++

6、 有以下程序#include <stdio.h>void  main(  ) {     int a=1,b;     for(b=1;b<=10;b++)     {         if(a>=8)            break;         if(a%2==1)        {            a+=5;            continue;        }         a-=3;     }     printf(“%d”,b); }程序运行后的输出结果是(     )。

答案: 4

7、 有以下程序#include <stdio.h>void  main( ){      int i;     for(i=0;i<3;i++)     {          switch(i)          {            case 1:                        printf(“%3d”,i);            case 2:                        printf(“%3d”,i);            default:                        printf(“%3d”,i);          }    }    }执行后输出结果是(    )。

答案: 0  1  1  1  2  2

8、 下面程序的输出是(    )。#include <stdio.h>void  main( ){    int y=9;    for(  ; y>0 ; y–)    {        if(y%3==0)        {            printf(“%3d”,–y);            continue;        }    }}

答案:   8  5  2

9、 有以下程序#include <stdio.h>void  main( ){     int x,i;    for(i=1;i<=50;i++)    {        x=i;        if(++x%2==0)            if(x%3==0)                if(x%7==0)                    printf(“%d”,i);    }}输出结果是(    )。 

答案: 41

10、 以下程序为求序列:1/2、3/4、5/8、7/16、9/32、……所有大于或等于0.000001的数据项之和。请选择正确的答案填空(    )。#include<stdio.h>void main( ){        float sum, a , b  ;  //sum代表和, a代表分子, b代表分母        sum = 0.0 ;        a = 1;                  //分子赋初值        b = 2 ;                //分母赋初值        while (a / b >=1e-6)        {                _____;                a = a + 2;    //求下一项分子                b = b * 2;    //求下一项分母        }        printf(“sum = %f”,sum);}

答案: sum += (a / b) 

11、 已知abc + cba = 1333,a, b, c,为一位数,以下程序为求所有可能的a, b, c的程序。请选择正确的答案填空(    )。#include<stdio.h>void main( )  {        int  i,a,b,c;                for (i =100 ; i<=999 ; i++)        {            a = i/100 ;           //求百位数            b =( i- a100)/10;     //求十位数            c = i%10;           //求个位数             if( _____)           {                 printf(” a=%d,b=%d,c=%d”,a,b,c  );           }        } }

答案: (a100+b10+c+c100+b10+a)==1333

12、 以下程序为求两个正整数的最大公约数的程序。请选择正确的答案填空(    )。#include<stdio.h>void main( )  {        int  i, a, b;        scanf(“%d%d”,&a,&b);        for (_____ ; i > 0 ; i –)        {            if( (a % i == 0) && (b % i == 0))           {                 printf(” the max = %d “, i ) ;                 break ;           }        } }

答案: i = (a<b ? a : b)

13、 以下程序为判断一个正整数是否为素数的程序。请选择正确的答案填空(    )。#include<stdio.h>void main( )  {        int  i, a ;        scanf(“%d”,&a);        for (i = 2 ; i < a ; i ++)        {            if(____)            {                 break ;            }        }        if(i >= a)        {                printf(“%d is a sushu.”,a);        }        else        {                printf(“%d is not a sushu.”,a);        } }

答案: a % i == 0

14、 用100元钱买100只鸡,其中母鸡每只3元,公鸡每只2元,小鸡1元3只,且每种鸡至少买1只。以下程序为计算百钱买百鸡所有可能购买方案的程序。请选择正确的答案填空(    )。#include<stdio.h>void main( ){        int  a, b, c; //a,b,c分别代表母鸡、公鸡和小鸡数        for (a = 1 ; a <= 98 ; a ++)        {            for (b = 1 ; b <= 98 ; b ++)           {                  for (c = 1 ; c <= 98 ; c ++)                  {                           if(_________)                           {                                  printf(“muji : %d,  gongji: %d, xiaoji: %d”,a,b,c);                            }                  }           }        }}

答案: (a+b+c==100) && (a3+b2+c/3 ==100) && (c %3 ==0)

15、 计算1!, 2!, 3!, ……,10! 的值,并输出结果。请选择正确的答案填空(    )。#include<stdio.h>void main( ){        int  i;        long int s =1  ;  //s代表阶乘的结果          for (i=1;i<=10;i++)        {            ____;             printf(“%d! = %ld”, i, s);        }}

答案: s *= i 

16、 for循环语句中的三个表达式起着不同的作用,表达式1一般用于进入循环前给某些变量赋初值;

答案: 正确

17、 在for循环语句中,表达式1、表达式2和表达式3都是逗号运算表达式;

答案: 错误

18、 在C语言编程中应该尽量少用空格或者空行;

答案: 错误

19、 在C语言编程中,如果出现嵌套的大括弧对{ },使用缩进对齐的格式能增强程序的可读性;

答案: 正确

20、 C语言的辅助控制语句包括break,continue、return和goto语句;

答案: 正确

21、 C语言编程中,不提倡把多个语句写在一行中,提倡一行只写一条语句;

答案: 正确

22、 在C语言编程时,要养成修改代码同时修改相应注释的习惯,以保证注释与代码的一致性。

答案: 正确

23、 在C语言编程中,相对独立的程序块之间、变量说明之后加上空行可以增加程序的可读性。

答案: 正确

第五周:函数(1) 第五周单元测试

1、 下列关于C语言程序的结构化设计,说法错误的是( )

答案: 只有一个源文件,对函数大小没有限制

2、 定义函数void fun()函数,函数的返回值类型为()

答案: 函数无返回值

3、 下面关于函数描述正确的是()

答案: 函数的定义不可以嵌套,但是调用可以嵌套

4、 若定义函数时函数的返回类型缺省,则函数的默认数据类型为()

答案: int

5、 一个函数返回值的类型是由( )决定的

答案: 定义函数时指定的函数数据类型

6、 下面叙述中正确的是( )

答案: 对于用户自己定义的函数,在使用前必须加以说明

7、 函数的形参可以是()

答案: 局部自动变量

8、 有如下定义的函数:func(int a){    printf(“%d”,a);}则该函数的返回值类型是()

答案: int类型

9、 函数内部的局部静态变量,下列说法正确的是( )

答案: 在函数退出后不被释放,程序执行结束释放

10、 局部自动变量,下列说法正确的是()

答案: 进入函数分配内存,退出函数,释放内存

11、 下列说法不正确的是( )

答案: 全局静态变量和局部静态变量,作用域和寿命相同

12、 下面程序段运行的结果为()#include <stdio.h>int f();int f() {   static int i=0;    int s=1;       s+=i;    i++;    return s; } void main() {   int i,a=0;    for(i=0;i<5;i++)      a+=f();    printf(“%d”,a); }

答案: 15

13、 下面程序段运行的结果为( )#include <stdio.h>int try1( );int try1( ){    static int x=3;    x++;    return x;}void main(){    int i,x;    for(i=0; i<=2; i++)        x=try1( );    printf(“%d”, x);}

答案: 6

14、 下面程序的运算结果为( )#include <stdio.h>void fun();int main(){   int a=10;      fun();   printf(“%3d”,a);   return 0;}void fun(){   int a=20;   printf(“%3d”,a);}

答案:  20 10

15、 以下正确的函数形式是( )

答案: int fun(int x,int y){    double z;   z=x+y;   return z;}

16、 以下程序的输出结果是()#include <stdio.h>int i=10;int func();void main(){   int j=1;   j=func();   printf(“%3d”,j);   j=func();   printf(“%3d”,j);}int func(){   int k=0;      k=k+i;   i=i+10;   return k;}

答案:  10 20  

17、 函数内定义的局部变量可以在函数运行结束后继续被调用

答案: 错误

18、 变量根据其作用域的范围可以分作局部变量和全局变量

答案: 正确

19、 当变量的存储类型定义缺省时,系统默认为变量的存储类型为auto类型,分配在静态区

答案: 错误

20、 在一个函数内定义的静态局部变量不能被另外一个函数所调用

答案: 正确

21、 函数调用语句:func(rec1,rec2+rec3,(rec4,rec5));中,含有的实参个数是5

答案: 错误

22、 变量被定义后,它的作用域和寿命就被确定了,并且不可改变。

答案: 正确

23、 在同一个作用域不可定义同名变量,在不同的作用域可以定义同名变量

答案: 正确

24、 函数内部的静态变量,在函数退出后不被释放

答案: 正确

25、 C语言中函数返回值的类型由return语句中的表达式的类型决定

答案: 错误

26、 C语言中一般全局变量与静态全局变量生存期不同

答案: 错误

27、 程序进行编译时,不为形式参数分配存储空间

答案: 正确

28、 编译器根据函数的原型来检查函数的调用正确与否

答案: 正确

第六周:函数(2) 第六周单元测验

1、 下列说法中正确的是()

答案: 函数原型是一条语句,不包括函数体

2、 在调用函数时,如果实参是整型变量,它与对应形参之间的数据传递方式是()

答案: 单向值传递 

3、 若定义函数float *fun( ),则函数fun的返回值为( )

答案: 一个指向变量的指针

4、 C程序中各函数之间可以通过多种方式传递数据,下列不能用于实现数据传递的方式是( )

答案: 同名的局部变量

5、 以下结论中只有( )是正确的

答案: 所有的递归程序均可以采用非递归算法实现

6、 main()函数的数据类型,可以是( )

答案: void

7、 下面程序段运行的结果为( )#include <stdio.h>int fun(float x,float y);int fun(float x,float y){   return x > y ? x : y;}void main(){   printf(“%d,%d”,fun(3,5),fun(4.8,4.6));}

答案: 5,4

8、 下面程序的运算结果为( )#include <stdio.h>int fun(int n);int fun(int n){   if(n == 1 || n == 2)     return 1;   return fun(n-1)+fun(n-2);}void main(){   printf(“%d”,fun(6));}

答案: 8

9、 以下程序运行结果是( )#include <stdio.h>void f(int a, int b);void f(int a, int b){   int t;   t = a;    a = b;    b = t;}void main(){   int x = 3, y = 2, z = 1;      if (x > y)     f(x, y);   if (y > z)     f(y, z);   if (x > y)     f(x, y);   printf(“%d, %d, %d”, x, y, z);}

答案: 3, 2, 1

10、 以下程序的输出结果是( )#include <stdio.h>int func(int s);void main( ){   int i,x=0;   for(i=0;i<4;i++)   {      x=func(i+1);      printf(“%3d”,x);   }  printf(“”);}int func(int s){    int x;    static int t=3;    x=s+t;    t++;    return x;}

答案:   4  6  8  10  

11、 以下程序的执行结果是()#include <stdio.h>int swap(int a,int b);void main(){   int a,b;       a=3,b=10;   swap(a,b);   printf(“a=%d,b=%d”,a,b);   }int swap(int a,int b){   int temp;      temp=a;   a=b;   b=temp;   return 0;}

答案: a=3,b=10 

12、 以下程序的执行结果是()#include <stdio.h>int sum(int k);void main(){   int s,i;   for(i=1;i<=10;i++)      s=sum(i);   printf(“s=%d”,s);}int sum(int k){   int x=0;      return (x+=k);      }

答案: s=10

13、 以下程序的执行结果是()#include <stdio.h>int func(int );void main(){    int a=1,i;        for(i=0;i<4;i++)    {         printf(“%3d”,func(a+i));    }}int func(int b){   static int i;   return   b+i;}

答案:   1  2  3  4  

14、 以下程序的执行结果是()#include <stdio.h>int multi(int x,int y);void main(){   int a,b,c;       a=10,b=12;   c=mult(a,b);   printf(“%d%d=%d”,a,b,c);}int multi(int x,int y){   return xy;}

答案: 1012=120

15、 以下程序的执行结果是()#include <stdio.h>int n;void func();void main(){   static int x=6;   int y;   y=n;   func();   printf(“x=%d,y=%d,n=%d”,x,y,n);}void func(){   static int x;   int y=10;   x=x+20;   n=n+2;   y=y+n;}

答案: x=6,y=0,n=2

16、 C语言中,函数调用时,形参与实参的个数可以不必保持一致

答案: 错误

17、 C语言函数间使用值传递数据时,对形参进行写操作,会影响主调函数里相关变量的值

答案: 错误

18、 C语言中,一个函数可以有多个返回值

答案: 错误

19、 C语言函数间使用传址方式传递数据时,对形参进行写操作,可以影响主调函数里相关变量的值

答案: 正确

20、 C语言中,使用全局变量可以使程序设计简单,移植性好

答案: 错误

21、 函数的递归调用是一个函数直接或间接地调用它自身

答案: 正确

第七周:数组(1) 第七周单元测验

1、 下列一维数组定义正确的是(   )

答案: int a[3];

2、 下列一维数组定义与初始化错误的是(    )

答案: int a[3] = 0;

3、 下列二维数组定义和初始化错误的是(    )

答案: int a[3][];

4、 在下列语句条件下,二维数组的定义和初始化错误的是(    )#define SIZE  9

答案: int a[][SIZE];

5、 假定int型变量在内存中占2个字节,那么二维数组int a[3][4]所占的字节数为 (    )

答案: 24

6、 若有说明:int a[][3]={{1,2,3},{4,5},{6,7}}; 则数组a的第一维的大小为 (    )

答案: 3

7、 下列关于数组概念的描述中,错误的是(    )

答案: 数组定义后,它的元素个数是可以改变的

8、 已知double dd[ ][3]={{1.2, 2.4, 3.6}, {4.8, 5.2},{6.4}}; dd[2][2]的值为(    )

答案: 0.0

9、 若有定义语句:int m[][3]={1,2,3,4,5,6,7};,则与该语句等价的是(   )

答案: int m[][3]={{1,2,3},{4,5,6},{7}};

10、 程序填空。程序功能:求矩阵的最小值,并记录最小值的行列号。#include <stdio.h>void main(){    int i, j, min;    int row=0,column=0;    int a[3][3]={{1,2,3},{2,-3,4},{9,4,7}};    min=a[0][0];    for(i=0;i<3;i++)    {        for(j=0;j<3;j++)        {            if(_____)            {                min=a[i][j];                row=i+1;                column=j+1;            }        }    }    printf(“min=%d,row=%d,column=%d”,min,row,column);}程序中空白处所填语句正确的为(    )

答案: min>a[i][j]

11、 若有定义语句int a[10]; 以下叙述中正确的是(   )

答案: a[0]是合法的数组元素,a[10]不是合法的数组元素

12、 下列有一行是错误的(每行程序前的数字表示行号),程序有错误的行数是(    )1  include <stdio.h>2  void main( )3  {4      int a[3] = {2*3};5      int i, sum=0;6      for( i=0; i<3; i++ )7      {8          scanf(“%d”, a[i]);9          sum += a[i];10     }11     printf( “%d”, sum );12  }

答案: 第8行有错误

13、 若有以下数组说明,则a[a[i]]元素数值是(    )。int a[12]={1,4,7,10,2,5,8,11,3,6,9,12}, int i=10;

答案: 6

14、 以下叙述中正确的是(    )

答案: 语句int a[8]={0};是合法的

15、 程序填空。程序功能:计算两个矩阵的乘积。#include <stdio.h>void main(){    int valueA[3][4]={{2,3,-5,0},{12,-1,2,8},{1,12,-2,1}};    int valueB[4][5]={{5,13,0,1,5},{-2,0,4,1,5},{5,3,2,1,0},{0,1,2,0,1}};        int valueC[3][5]={{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}};    int i,j,k;    for(i=0; i<3; i++)        for(j=0; j<5; j++)            for(k=0; k<4;k++)                ______;    for(i=0;i<3;i++)    {        printf(“”);        for(j=0;j<5;j++)            printf(“%5d”,valueC[i][j]);    }}程序中空白处所填语句正确的为(    )

答案: valueC[i][j] += valueA[i][k] * valueB[k][j]

16、 一维数组在内存中的存储空间是连续的;二维数组在存储中的存储空间每一行是连续,不同行之间则不连续。

答案: 错误

17、 数组可以动态指定大小。

答案: 错误

18、 数组初始化时可以仅初始化部分元素的值。

答案: 正确

19、 数组所占的元素取决于数组的大小,如果数组大小为N,则在该数组所占内存大小为N个字节。

答案: 错误

20、 同一个数组可以存放不同数据类型的数值。

答案: 错误

21、 二维数组初始化语句”int a[2][2] = {{0},{2}};” 是正确的。

答案: 正确

上方为免费预览版答案,如需购买完整答案,请点击下方红字

点击这里,购买完整版答案


为了方便下次阅读,建议在浏览器添加书签收藏本网页

添加书签方法:

1.电脑按键盘的Ctrl键+D键即可收藏本网页

2.手机浏览器可以添加书签收藏本网页

中国大学mooc慕课 C语言程序设计(华中科技大学)  答案满分完整版章节测试第1张

中国大学mooc慕课 C语言程序设计(华中科技大学)  答案满分完整版章节测试第2张


我们的公众号

打开手机微信,扫一扫下方二维码,关注微信公众号:萌面人APP

本公众号可查看各种网课答案,还可免费查看大学教材答案

点击这里,可查看公众号功能介绍

中国大学mooc慕课 C语言程序设计(华中科技大学)  答案满分完整版章节测试第3张


 

供偷赴寿柔孟德想柏铂浩卿对