C程序设计基础(厦门大学) 中国大学mooc答案满分完整版章节测试

编并项绰呜强抵盼氛狠卷爬春


第一周 C语言简介 选择题

1、 下面的叙述正确的是()。

答案: 一个C的源程序可以由一个或多个函数组成

2、 C程序是从()开始执行的。

答案: 主函数

3、 关于C程序的叙述,正确的是(  )。

答案: 一条语句可以写在多行,也可以多条语句写在一行

4、 以下正确的printf语句是()。

答案: ‍printf (“This is a C program.”);

5、    /*程序功能:打印输出hello world #include <stdio.h>   int main()  {    printf(“Hello, world”);    return 0;}上面程序的运行结果是(  )

答案: 程序出错,不能运行

6、 设有程序“1.cpp”,编译后运行该程序,执行的是(    )文件。

答案: 1.exe

7、 下面程序的错误是()#include <stdio.h> int mian() {    printf(“hello world”)             return 0;}

答案: printf(“hello world”)  后面少分号;
主函数名写错

8、 输出结果为500+200=700的语句是()。

答案: printf(“500+200=%d”,500+200);;
printf(“500+200=700”);

9、 输出结果为2564=1600的语句是()。

答案: printf(“2564=%d”,2564);;
printf(“25
64=1600″);

10、 下面是关于C程序注释的叙述,其中正确的是(  )。

答案: /……/可以注释多行,也可以注释一行;
//是行注释,从//开始至行尾为注释内容

11、 下面程序的错误是()#include <stdio.h>  int mian() {    printf(“hello world”)             return 0;}

答案: printf(“hello world”)  后面少分号;
主函数名写错

第一周 C语言简介 判断题(本周语法汇总)

1、 编写C程序时,main函数必不可少。

答案: 正确

2、 printf(“”);  可实现换行

答案: 正确

3、 C的每条语句结束处必须用分号。

答案: 正确

4、 注释语句不影响程序的运行。

答案: 正确

5、 若使用printf输出结果,则必须在程序前添加#include <stdio.h>

答案: 正确

6、 C程序中的标点符号(如分号;)必须用英文的标点符号。

答案: 正确

7、 printf(“”);  可实现换行

答案: 正确

8、 printf(“”);  可实现换行

答案: 正确

 

第二周 C语言基础语法 语法知识选择题

1、 下列浮点数的表示中不正确的是(    )。

答案: e23

2、 合法的C语言标识符是(    )

答案: sum

3、 不合法的C语言标识符是 (    )。

答案: 4d

4、 下列定义变量的语句中错误的是(  )。

答案: Double a1;

5、 在C语言中,要求运算数必须是整型的运算符是(     )。

答案: %

6、 下面(   )语句正确地描述了计算公式   C程序设计基础(厦门大学) 中国大学mooc答案满分完整版章节测试第1张

答案: y = (axx*x)/(x – b);

7、 下面(   )是合法的赋值语句 .

答案:  i=1;

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

答案: 3

9、 下面程序的输出是(   ) 。#include <stdio.h>int  main(){ int  a= 5; printf(“a=%d”,++a+2); return 0;}

答案: a=8

10、 78%10的结果是(   )。

答案: 8

11、 下面程序的输出是(   ) 。 #include  <stdio.h>int  main(){   int  a=8;   printf(“%d”,(a++)*2);   return 0;}

答案: 16

12、 下面程序的输出是(   ) 。#include  <stdio.h>int  main(){   int  a=3;   printf(“%d”,(a–)*7);   return 0;}  

答案: 21

13、 下面程序的输出是(   ) 。#include <stdio.h>int  main(){   int  b=3,a= 3;   printf(“%d,%d”,b,a–);   return 0;} 

答案: 3,3

14、 i=1;执行(    )语句后,变量i的值不会发生变化。

答案: i+5;

15、 int x;scanf(“%d”,&x);下面(   )可以获得x的个位数。

答案: x%10;

16、 语句float x=3.0 ,y=4.0;下列表达式中y的值为9.0的是(  )。

答案: y+=x+2.0

17、 有关运算符的正确描述是(  )

答案: 单目运算符优先级高于双目运算符

18、 下面(          )语句正确地描述了方程 C程序设计基础(厦门大学) 中国大学mooc答案满分完整版章节测试第2张

答案: ‍y = a * x * x * x + c;;
y = (a * x * x * x) + c;

19、 下面(   )能完成变量a,b的值的交换。

答案: t=a;a=b;b=t;;
a=a+b;b=a-b;a=a-b;

20、 (   )可以使整型变量i的值加1 。

答案: i++;;
++i;;
i=i+1;;
i+=1;

21、 int  y,a;scanf(“%d”,&y);输入任意整数,下面(   )中,a是y的百位数。

答案: a=y/100%10;;
a=y%1000/100;

第二周 C语言基础语法 第二周 易错知识点练习1(选做)

1、 当x是41.0时,算术表达式5/9*(x-32)的运算结果是(   )。

答案: 0

2、 C程序设计基础(厦门大学) 中国大学mooc答案满分完整版章节测试第3张

答案: 3.14159r*r/(a+b) 

3、 当x是41.0时,printf(“%f”,5.0/9*(x-32));输出结果是(   )。

答案: 5.000000

4、 x为int型,表达式 (x=1)+2的值是(    ),x的值是(    )。

答案: 3,1

5、 int a=10,b=100;printf(“%d,%d,”,  a++,++b);printf(“%d”,  a);程序的输出结果是(  )。

答案: 10,10111

6、 在C语言中,下面(   )是正确的赋值表达式。

答案: x=2;
b=a=2

 

第三周 格式化输入输出及选择结构1 选择题—计分

1、 ‍能正确表示逻辑关系x<=y<=z的C语言表达式为(  ) 

答案: (x<=y)&&(y<=z)  

2、 能正确表示逻辑关系“a大于等于10或a小于等于0”的C语言表达式是 (       ) 

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

3、 能正确表示逻辑关系“79<X<90”的C语言表达式是(  )

答案: ‍ ( X>79 ) && ( X<90 )  

4、 设a为整型变量,不能正确表达数学关系10<a<15的C语言表达式是( )

答案: ‍10<a<15           

5、 设x,t均为int型变量,则执行语句“x=10; t=x&&x>10;”后,t的值为( )

答案: ‍0

6、 下面程序,运行后的输出结果是(  )#include<stdio.h>int main(){ int  a=1, b = 3, c = 4;if(a<b)  a=b;if(a<c)  a=c;printf(“%d, %d, %d”, a, b, c);}

答案: 4,3,4  

7、 语法不正确的语句是(   )

答案: ‍if (x==y) && (x!=0)  x++;

8、 如果整型变量a,b,c的值分别为5,4,3,则语句if(a>b>c) c++; 执行后c的值是( )

答案: 3

9、 如果整型变量a,b,c的值分别为3,4,5,则语句 if(a<b<c) c++;执行后c的值是( )

答案: 6

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

答案: 无输出‍

11、 C语言语句中,可以用来决定分支流程的表达式是(  )

答案: ‍任意表达式

12、 int x=102,y=12;printf(“%2d,%3d”,x,y);执行后输出结果是(    )

答案: 102, 12

13、 设i是 int 型变量 ,j是 float 型变量 , 用下面的语句给这两个变量输入值: scanf(“i=%d, j=%f”,&i,&j);  为了把 10 和 2.5分别赋给 i 和  j, 则正确的输入为(   ) 

答案: i=10,j=2.5< 回车 > 

14、 执行下面语句,int a =1,b=2,c=3;if(a>c)  b =c; a=c; c=b;a,b,c的值分别为(        )(用逗号分隔)

答案: 3,2,2

15、 请选出正确的输入语句(   )。

答案: double f;scanf(“%lf”,&f);

16、 在printf函数中,浮点型数据输出的格式控制符有(   )。

答案: %e;
%f;
%g

17、 下面程序中,(   )可以输出变量a,b,c的最大值。

答案: if(a>=b && a>=c )   printf( “最大值为%d”,a); if(b>=a && b>=c)    printf( “最大值为%d”,b); if(c>=a && c>=b)    printf( “最大值为%d”,c); ;
max=a; if(b>max) max=b; if(c>max) max=c;printf( “最大值为%d”,max);

18、 设a=1, b=2, c=3,关系表达式a+b>=c 的值是(   )。
答案: 1

19、 设a=1, b=2, c=3,逻辑表达式a && b && c的值是(   )。
答案: 1

20、 设a=1, b=2, c=3,逻辑表达式a || !b || !c的值是(   )。
答案: 1

21、 输入一个考试分数(0至100范围内),如果分数小于60分,则输出“不及格”;大于90分输出“优秀”;大于等于60并且小于等于90,则输出“合格”。(有1个空,答案一行写一个,不要添加多余的空格)#include <stdio.h> int main(){   int x;    printf(“请输入分数(0-100): “);  scanf(“%d”,&x);    if(x<60)             printf( “不及格”);   if(x>90)             printf( “优秀”);                             printf( “合格”);           //注意分数在一个区间内,C语言中该如何描述        return 0;}
答案: (以下答案任选其一都对)if(x>=60 && x<=90);
if(60<=x && x<=90);
if(60<=x && 90>=x);
if(x>=60 && 90>=x);
if(x>=60&&x<=90);
if(60<=x&&x<=90);
if(60<=x&&90>=x);
if(x>=60&&90>=x);
if((x>=60)&&(x<=90))

22、 我国的邮政编码由六位阿拉伯数字组成,前第三位代表邮区,厦门市的邮政编码前三位为361 。下面的程序功能:如果输入的邮政编码前3位是361,则输出“厦门市的邮件”;如果不是361,则输出“不是厦门市的邮件”。请完善程序(有2个空,答案一行写一个,不要添加多余的空格).#include <stdio.h> int main(){   int code;    printf(“请输入邮政编码: “);  scanf(”         %*3d”,&code);           //用scanf函数截取输入邮政编码的前3位    if(361         code )    printf( “厦门市的邮件”);   if (361!=code)   printf( “不是厦门市的邮件”);       return 0;}需要更多样例参考的同学可查阅课件 “ 选择结构初步 ” 里的最后一个文档  “ 习题解析 ”中第2题
答案: %3d
==

23、 设x,t均为int型变量,则执行语句“x=10;   t = x && x > 10 ;”后,t的值为( )提示:赋值运算优先级较低,低于算术、关系、逻辑运算。

答案: ‍0

24、 int x=102,y=12;printf(“%2d,%3d”,x,y);执行后输出结果是(    )提示:当%md中m小于数据的实际宽度时,按实际宽度输出。

答案: 102, 12

25、 执行下面语句,int a =1,b=2,c=3;if(a>c)  b =c; a=c; c=b;a,b,c的值分别为(        )(用逗号分隔)提示:由 if 控制的分支语句只有一条

答案: 3,2,2

26、 输入一个考试分数(0至100范围内),如果分数小于60分,则输出“不及格”;大于90分输出“优秀”;大于等于60并且小于等于90,则输出“合格”。(有1个空,答案一行写一个,不要添加多余的空格)

include <stdio.h>

 int main()

  int x;
  
  printf(“请输入分数(0-100): “);
  scanf(“%d”,&x);
  
  if(x<60)             printf( “不及格”); 
  if(x>90)             printf( “优秀”); 
                            printf( “合格”);           //注意分数在一个区间内,C语言中该如何描述
      
  return 0;
}

答案: (以下答案任选其一都对)if(x>=60 && x<=90);
if(60<=x && x<=90);
if(60<=x && 90>=x);
if(x>=60 && 90>=x);
if(x>=60&&x<=90);
if(60<=x&&x<=90);
if(60<=x&&90>=x);
if(x>=60&&90>=x);
if((x>=60)&&(x<=90))

27、 我国的邮政编码由六位阿拉伯数字组成,前第三位代表邮区,厦门市的邮政编码前三位为361 。
下面的程序功能:如果输入的邮政编码前3位是361,则输出“厦门市的邮件”;如果不是361,则输出“不是厦门市的邮件”。
请完善程序(有2个空,答案一行写一个,不要添加多余的空格).

include <stdio.h> int main(){   int code;    printf(“请输入邮政编码: “);  scanf(”         %*3d”,&code);           //用scanf函数截取输入邮政编码的前3位

  
  if(361         code )    printf( “厦门市的邮件”);   if (361!=code)   printf( “不是厦门市的邮件”);       return 0;}

需要更多样例参考的同学可查阅课件 “ 选择结构初步 ” 里的最后一个文档  “ 习题解析 ”中第2题
答案: %3d
==

第三周 格式化输入输出及选择结构1 第三周 易错知识点练习(选做)

1、 int x=8;在C程序中,表达式0<=x<=3的运算结果是(  )。

答案: 1

2、 int x=2,y=2;printf(“%d”, (x=0)&&(y=3));printf(“x=%d    y=%d “, x,y);输出结果是(   )。

答案: 0x=0  y=2

3、 int x=2,y=2;printf(“%d  “, (x=4)||(y=4));printf(“x=%d    y=%d “, x,y);第二个printf的输出结果是(   )。

答案: x=4   y=2

4、 scanf(“%d”,&a); if(a<60) printf(“a=%d\n”,a); printf(“OVER”);如果输入50,则输出结果是(   )。

答案: a=50OVER

5、 scanf(“%d”,&a); if(a<60) printf(“a=%d\n”,a); printf(“OVER”);如果输入70,则输出结果是(   )。

答案: OVER

 

第四周 选择结构2 第四周 易错知识点练习(选做)

1、 int x=0;                          if(!x)    printf(“x为非零”);else    printf(“x为零”);

答案: x为非零

2、 a= 10;if (a%2==0)  ;     printf(“偶数”); else    printf(“奇数”);程序的运行是(   )。

答案: 出错

3、 int x=2, y=-1, z=2;if (x<y)if (y<0) z=0;else z+=1;printf(“%d”,z);

答案: 2

4、 有如下程序段:if (q%p==0)      a=q/p;     printf(“%d=%d%d”,q,p,a);                      //输出因式分解q=pa else    printf(“不能整除”);如果q=8,p=2,则输出(   )。 

答案: 该段程序有语法错误,不能执行。

第四周 选择结构2 多分支选择题

1、 分析以下程序, 下列说法正确的是(  )#include<stdio.h>main(){     int x=5,a=0,b=0;    if(x=a+b) printf(“ * “);    else   printf(“# # # #”);}‍

答案: 输出# # # #

2、 分析以下程序, 下列说法正确的是(  )#include<stdio.h> main(){     int x=6,a=8,b=3;    if(x=a+b) printf(“ * “);    else   printf(“# # # #”);}

答案: 输出 * *  

3、 分析以下程序, 下列说法正确的是(  )#include<stdio.h> main(){     int x=0,a=0,b=0;    if(x==a+b) printf(“ * “);    else   printf(“# # # #”);}

答案: 输出 * *

4、 运行以下程序,如果从键盘上输入5,则输出结果是( )#include<stdio.h> int  main(){    int x;    scanf(“%d”, &x);    if ( x–< 5)            printf(“%d”, x);    else        printf(“%d”,x++);}提示:C程序设计基础(厦门大学) 中国大学mooc答案满分完整版章节测试第4张

答案: 4

5、 运行以下程序,如果从键盘上输入5,则输出结果是( )#include<stdio.h> int  main(){    int x;    scanf(“%d”, &x);    if ( x–< 5)            printf(“%d”, x);    else        printf(“%d”,++x);}可以参考本周课件“附加例题解析与作业指导”—-“选择结构附加例题解析”文档的第一个例题

答案: ‍5

6、 运行以下程序,如果从键盘上输入9,则输出结果是( )#include<stdio.h> int  main(){    int x;    scanf(“%d”, &x);    if ( ++x< 10)            printf(“%d”, x);    else        printf(“%d”,–x);}可以参考本周课件“附加例题解析与作业指导”—-“选择结构附加例题解析”文档的第一个例题

答案: ‍9

7、 以下程序的输出是( )#include<stdio.h> int main(){     float x=2.0,y;     if (x<0.0)             y=0.0;    else  if (x<10.0)           y=1.0/x;    else            y= 1.0;    printf(“%f”, y);}

答案: ‍0.500000

8、 ‍下面程序的运行结果是( )。#include <stdio.h>main(){     int a=12, b= -34, c=56, min=0;    min=a;    if(min>b)            min=b;    if(min>c)  ‍          min=c;    printf(“%d”, min);}可以参考本周课件“附加例题解析与作业指导”—-“选择结构附加例题解析”文档的最后一个例题

答案: -34

9、 分析以下程序, 输出结果是(  )#include<stdio.h>int main(){    int x=5;    if(x) printf(“ * “);    printf(“# # # #”);}

答案:  * # # # #

10、 分析以下程序, 输出结果是(  )#include<stdio.h>int main(){    int x=5;        if(x) x=6;    x=7;        printf(“%d”,x);}

答案: 7

11、 按功能键F5进入调试状态后,可以(      )。

答案: 设置断点;
控制程序一步一步地执行,每执行一步,都可以暂停;
观察变量或表达式值的变化

12、 下面(   )是正确的符号函数程序。当x>0时,y=1当x=0时,y=0当x<0时,y=-1(提示:按if-else配对规则分析程序,y值的运算结果与符号函数一致,才是正确的程序)

答案: if(x>0)     y=1;else     if(x==0)    y=0;    else y=-1;;
y=0;if(x!=0)    if(x>0)   y=1;     else y=-1;

13、 程序功能:输入一个整数,当它是偶数时,输出“该数是偶数”,否则,输出“该数是奇数”。请完善程序,空格处应填(       )。#include <stdio.h> int main(){  int x;   printf(“请输入x: “);  scanf(“%d”,&x);   if(x%2==0)   printf( “该数是偶数”);       //偶数除以2的余数为0               printf( “该数是奇数”);     return 0;}

答案: else;
if(x%2!=0);
else if(x%2!=0)

14、 输入一个考试分数(0至100范围内),如果分数小于60分,则输出“不及格”;否则输出“及格”。(程序有1个空,请选择正确的答案)#include <stdio.h> int main(){   int x;    printf(“请输入分数(0-100): “);  scanf(“%d”,&x);    if(x<60)             printf( “不及格”);                       printf( “及格”);         return 0;}

答案: else;
if(x>=60);
else if(x>=60)

15、 读程序,写出运行结果。#include <stdio.h>main(){    int a=1,b=3,c=5;if (c==a+b) printf(“yes”);else printf(“no”);}
答案: no

16、 读程序,写出运行结果。#include <stdio.h>int main(){    int x=2, y=-1, z=5;   if(x<y)   if(y<0)    z=0;   else   z=z+1;   printf(“%d”,z); }
答案: 5

17、 读程序,写出运行结果。#include <stdio.h>main(){ float a,b,c,t;a=3;b=7;c=1;if(a>b)   {t=a;a=b;b=t;}if(a>c)   {t=a;a=c;c=t;}if(b>c)    {t=b;b=c;c=t;}printf(“%5.2f,%5.2f,%5.2f”,a,b,c);      //注意%5.2f 的输出格式与逗号}
答案: 1.00, 3.00, 7.00

18、 下面是一个旅游自助程序。程序先输出选择菜单,    C程序设计基础(厦门大学) 中国大学mooc答案满分完整版章节测试第5张如果用户输入1,则提示输入租车数量,用变量i保存,然后计算需支付的金额,并输出。如果用户输入2,则提示输入购票数量,用变量j保存,然后计算需支付的金额,并输出。如果用户输入其它数,则提示选择错误。费用计算方法:  租一辆车需支付150元。  门票一张60元,如果购票数>=10,则每张50元。请完善程序。(程序有2个空,答案一行写一个,不要添加多余的空格)#include <stdio.h>int main(){int choose,i,j,money; printf(“\t\t旅游自助服务”); printf(“\t1—租车\t2—购买门票”); printf(“请选择您需要的服务:”);      scanf(“%d”,&choose); if(             )  {  printf(“请输入租车数量”);  scanf(“%d”,&i);  money=150i;  printf(“您需支付:%d元”,money);  }           (choose==2)  {  printf(“请输入购票数量”);  scanf(“%d”,&j);  if(j>=10) money=50j; else money=60*j;  printf(“您需支付:%d元”,money);  } else  {  printf(“选择错误”);  } return 0;}
答案: (以下答案任选其一都对)choose==1
else if;
1==choose
else if

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

答案: 4

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

答案: ‍5

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

答案: ‍9

22、 ‍下面程序的运行结果是( )。#include <stdio.h>main(){     int a=12, b= -34, c=56, min=0;    min=a;    if(min>b)            min=b;    if(min>c)  ‍          min=c;    printf(“%d”, min);}

答案: -34

23、 读程序,写出运行结果。#include <stdio.h>int main(){    int x=2, y=-1, z=5;   if(x<y)   if(y<0)    z=0;   else   z=z+1;   printf(“%d”,z); }
答案: 5
分析:else与其上面最近的未配对的 if 配对,因此,
if(y<0)
z=0;
else
z=z+1;
是一条双分支语句
该语句是第1个if———if (x<y)的内嵌语句,当x<y时,才执行 2<-1不成立,所以,内嵌语句不执行,z无任何变化<=”” span=””></y)的内嵌语句,当x<y时,才执行>

 

第五周 循环基础 第五周 易错知识点练习(选做)

1、 下面图中用箭头表示for循环语句的执行顺序,其中(  )是正确的。

答案: C程序设计基础(厦门大学) 中国大学mooc答案满分完整版章节测试第6张

2、 sum = 0;for (i = 1; i<=10; i++) ;        sum = sum + i;printf(“%d”, sum);输出结果是(  )。

答案: 11

3、 sum = 0;for (i = 1; i<=10; i++)      {         sum = sum + i;         i++;      }printf(“%d”, sum);输出结果是(  )。

答案: 25

4、 int i,count=0;  for(i=1;i<=20;i++)   {               if(i%3==0 || i%7==0)             printf(“%d\t”,i);             count++;             if(count%5==0)                 printf(“”);  } 程序运行结果是(   )。

答案: C程序设计基础(厦门大学) 中国大学mooc答案满分完整版章节测试第7张

5、 int i,count=0;  for(i=1;i<=20;i++)   {               if(i%3==0 || i%7==0)             {  printf(“%d\t”,i);                count++;                if(count%5==0)                    printf(“”);   }     } 程序运行结果是(   )。

答案: C程序设计基础(厦门大学) 中国大学mooc答案满分完整版章节测试第8张

6、 scanf(“%d”, &m);for (i =2; i<=m-1; i++)  if ( m % i != 0)       printf(“%d是素数”, m);该程序是错误的判定素数程序,下面(    )是该程序的输出。

答案: 当m为7时,重复输出5行: 7是素数;
当m为8时,重复输出4行: 8是素数

 

第五周 循环基础 单循环选择、填空题

1、 设有如下程序段,则输出结果为()int k=0,a;for (a=1;a<=1000;a++)      k=k+1;printf(“k=%d”,k);提示:可参考课件“附加例题解析”文档中的例题

答案: k=1000

2、 设有如下程序段,则最后一次输出的是()int a;for (a=1;a<=1000;a++)     printf(“a=%d”,a);提示:可参考课件“附加例题解析”文档中的例题

答案: ‍a=1000

3、 设有如下程序段,则输出结果是()int a;for (a=1;a<=1000;a++) ;printf(“a=%d”,a);提示:可参考课件“附加例题解析”文档中的例题

答案: a=1001

4、 设有如下程序段,则输出结果为()int k=0,a;for (a=1;a<=1000;a++) {a=a+1;k=k+1;}printf(“k=%d”,k); 

答案: k=500

5、 int i,j=10;for( i=1; i==j; i++); 的循环次数是()提示:可参考课件“附加例题解析”文档中的例题

答案: ‍0

6、 int i, j;j=10;for(i=1; i<=j; i++)    j–; 程序的循环次数是()

答案: ‍5

7、 语句for(x=0,y=0; y!=1&&x<4; x++); 是()

答案: 循环4次‍

8、 设有程序段:int k=10;while(k=0)k = k- 1; 则下面叙述正确的是() 

答案: ‍循环体语句一次也不执行

9、 ‍设有程序段:int k=10;while(k==0)k = k- 1; 则下面叙述正确的是()

答案: 循环体语句一次也不执行

10、 ‍设有程序段:int k=10;while(k!=0) k = k- 1;则下面叙述正确的是()

答案: while循环重复执行10次

11、 与语句while(!x);等价的语句是() 

答案: ‍while(x= =0); 

12、 int i=0, j;for( j=10; i<j; j–)    i++; 程序的循环次数是()

答案: 5‍语法错误 5

13、 设有程序段,以下说法正确的是()x = -1;do { x = x*x;} while( !x); 

答案: ‍循环体将执行一次 

14、  C语言中while 和do-while 循环的主要区别是()

答案: ‍do-while的循环体至少无条件执行一次

15、 下列语句不是死循环的是()‍

答案: ‍int i =10;while(i)i–;

16、 下面程序的功能是:计算1~10之间的奇数之和及偶数之和,空白处应填 ()#include<stdio.h>int main(){ int a, b, c, i; a = c = 0; for(i=0; i<=10; i+=2) {     a += i;                    }  printf(“偶数之和=%d!”, a);  printf(“奇数之和=%d!”, c-11);  }

答案: c+=i+1;‍

17、 下面程序的功能是()#include<stdio.h>int main(){ int x,s=0,i;  for(i=1; i<=5; i++) {    scanf(“%d”,&x);     s=s+x;           }  printf(“s=%d”, s);   return 0;}

答案: 输入任意5个整数,输出这5个数的和

18、 下面程序的功能是()#include<stdio.h>int main(){ int x,s=0,i; scanf(“%d”,&x);  while(x!=0) {      s=s+x;    scanf(“%d”,&x);   }  printf(“s=%d”, s);   return 0;}

答案: 输入一组整数,以输入0作为结束,求所有数的和并输出

19、 for (i = 1; i<=10; i++)           printf(“*”);循环结束后,i 的值是(  )。

答案: 11

20、 下面(   )循环体执行10次。

答案: for(i=1;i<=10;i=i+1){循环体;};
for(i=2;i<=20;i=i+2){循环体;};
for(i=0;i<=9;i=i+1){循环体;};
for(i=10;i>=1;i=i-1){循环体;}

21、 下面(   )是正确的判断素数程序(m>1)。

答案: j=0;for (i =2; i<=m-1; i++)  if ( m % i != 0)       j++;if(j==m-2) printf(“%d是素数”, m);;
j=0;for (i =2; i<=m-1; i++)  if ( m % i == 0)       j++;if(j==0) printf(“%d是素数”, m);;
flag=0;for (i =2; i<=m-1; i++)  if ( m % i == 0)       flag=1;if(flag==0) printf(“%d是素数”, m);

22、 编程:输入一个整数,计算该整数的位数,并输出位数。输入样例:12345输出样例:输入的是5位数请完善程序。(程序有1个空,答案一行写一个,不要添加多余的空格) #include <stdio.h>int main( ){    int i=0,k,j;    scanf(“%d”,&k);    do       {       k= k/10;       i++;      }while(            );   printf(“输入的是%d位数”, i); }提示:第二周讨论题—–讨论一类赋值语句的特点,在置顶贴的回复中,有本题的相关内容。这一类赋值语句常用于循环中。
答案: (以下答案任选其一都对)k!=0;
0!=k;
!k==0
分析:每次循环,k= k/10; k的最后一位被舍弃,
i 保存位数,每次循环, k 舍弃1位,i加1 。
直至 k为 0 时,所有位都被舍弃,此时,i的值就是k的位数。
具体可以看第二周讨论题—–讨论一类赋值语句的特点, 在置顶贴的回复中,有举例

23、 编程:输入一个整数,计算该整数的位数,并输出位数。输入样例:12345输出样例:输入的是5位数请完善程序。(程序有1个空,答案一行写一个,不要添加多余的空格) #include <stdio.h>int main( ){    int i=0,k,j;    scanf(“%d”,&k);    do       {                                i++;      }while(k!=0);   printf(“输入的是%d位数”, i); }提示:第二周讨论题—–讨论一类赋值语句的特点,在置顶贴的回复中,有本题的相关内容。这一类赋值语句常用于循环中。
答案: (以下答案任选其一都对)k=k/10;;
k/=10;
分析:每次循环,k= k/10; k的最后一位被舍弃,
i 保存位数,每次循环, k 舍弃1位,i加1 。
直至 k为 0 时,所有位都被舍弃,此时,i的值就是k的位数。
具体可以看第二周讨论题—–讨论一类赋值语句的特点, 在置顶贴的回复中,有举例

24、 编程:输入一个整数,计算该整数的位数,并输出位数。输入样例:12345输出样例:输入的是5位数请完善程序。(程序有1个空,答案一行写一个,不要添加多余的空格) #include <stdio.h>int main( ){    int i=0,k,j;    scanf(“%d”,&k);         if(k==0) i=1;    while(            )            //注意,不要漏考虑k为负数的情况                 {        i++;        k= k/10;       }   printf(“输入的是%d位数”, i); }提示:第二周讨论题—–讨论一类赋值语句的特点,在置顶贴的回复中,有本题的相关内容。这一类赋值语句常用于循环中。
答案: (以下答案任选其一都对)k!=0;
0!=k;
!k==0
分析:每次循环,k= k/10; k的最后一位被舍弃,
i 保存位数,每次循环, k 舍弃1位,i加1 。
直至 k为 0 时,所有位都被舍弃,此时,i的值就是k的位数。
具体可以看第二周讨论题—–讨论一类赋值语句的特点, 在置顶贴的回复中,有举例

25、
编程:输入一个整数,计算该整数的位数,并输出位数。
输入样例:12345
输出样例:输入的是5位数
请完善程序。(程序有1个空,答案一行写一个,不要添加多余的空格)
 

include <stdio.h>

int main( )
{
    int i=0,k,j;
    scanf(“%d”,&k);                      //k也可能是负整数

    do 
      {
       k= k/10;
       i++;
      }while(            );

   printf(“输入的是%d位数”, i); 
}

提示:参考本周视频“求输入数的位数”。

答案: (以下答案任选其一都对)k!=0;
0!=k;
!k==0

26、 编程:输入一个整数,计算该整数的位数,并输出位数。输入样例:12345输出样例:输入的是5位数请完善程序。(程序有1个空,答案一行写一个,不要添加多余的空格) #include <stdio.h>int main( ){    int i=0,k,j;    scanf(“%d”,&k);                    //k也可能是负整数    do       {                                i++;      }while(k!=0);   printf(“输入的是%d位数”, i); }提示:参考本周视频“求输入数的位数”
答案: (以下答案任选其一都对)k=k/10;;
k/=10;

 

第六周 循环进阶 循环进阶选择、填空题

1、 运行下面的程序,得到的输出是()#include<stdio.h>int main() {  int i, j;  for(i=1;i<=2;i++)     for(j=1;j<=2;j++)  printf(“i=%d, j=%d”,i,j);}

答案: i=1,  j=1i=1 , j=2i=2 , j=1i=2 , j=2

2、 ‍运行下面的程序,输出的星号个数一共是()#include<stdio.h>int main() {  int i,j;  for(i=1;i<=4;i++)  {   for(j=1;j<=i;j++)         putchar(‘ ‘);      putchar(‘*’);      putchar(”);  }}

答案: 4

3、 运行下面的程序,输出的星号个数一共是()#include<stdio.h>int main() {  int i,j;  for(i=1;i<=4;i++)    for(j=1;j<=i;j++)         putchar(‘ ‘);      putchar(‘*’);      putchar(”);}

答案: 1

4、 执行下面的程序片段,k的值是() int k=0,i,j; for(i=0;i<5;i++)  for(j=0;j<3;j++)      k=k+1 ;

答案: 15

5、 若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是

答案: for( i=1; i<=5; i++ ){    p=1;    p*=i;}‍

6、 下面程序的功能是输出以下形式的图案,则在下划线处应填入的是    *#include <stdio.h>int main(){     int i, j;    for( i=1; i<=4; i++)    {        for( j =1; j<=              ; j++)         putchar(‘‘);        putchar(”);    }    return 0;}

答案: 2*i-1‍

7、 下面程序的功能是输出以下形式的图案,则在下划线处应填入的是( ) * *  #include <stdio.h>int main(){     int i, j;    for( i=1; i<=4; i++)    {        for( j =1; j<=              ; j++)         putchar(‘‘);        putchar(”);    }    return 0;}

答案: 2(5-i)-1

8、 鸡兔同笼,共有98个头,386只脚,编程求鸡、兔各多少只。代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>int main(){    int x, y;    for (x=1; x<98; x++)    {           _(1)        if ( ‍  (2) ___ )        {                printf(“x = %d, y = %d”, x, y);        }    }    return 0;}

答案: (1) y = 98 – x;(2) 2x+4y == 386;‍

9、 打印所有的“水仙花数”。所谓“水仙花数”,是指一个三位数,其各位数字的立方和等于该数本身。例如,153是“水仙花数”,因为C程序设计基础(厦门大学) 中国大学mooc答案满分完整版章节测试第9张。代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>int main(){    int i, j, k, n;    printf(“result is:”);    for (n=100; (1)_ ; n++)    {        i = n / 100;                          //得到百位        j = _(2) ;                           k = n % 10;                           //得到个位          if ( (3)___‍)        {                printf(“%d\t “,n);            //输出结果        }    }    printf(“”);    return 0;}

答案: ‍(1) n<1000(2) (n – i * 100) / 10(3) i100+j10+k == iii+jjj+kkk

10、 下面程序的功能是()#include<stdio.h>int main(){ int x,s,i; scanf(“%d”,&x); s=x; for(i=1; i<=6; i++) {    scanf(“%d”,&x);     if(s<x)  s=x;           }  printf(“s=%d”, s);   return 0;}提示:可参考课件“附加例题解析”中文档“求最值及其位置”,帮助理解。

答案: 输入7个整数,输出其中的最大数

11、 阅读下面的程序,该程序完成的功能有(   ) #include <stdio.h>int main(){     int number,min;                                    int i,n=1;     printf(“请输入第1个数”);    scanf(“%d”,&number);      min=number;                           //只有1个数时,最小数就是这个数,设min初值为第1个数     for(i=2;i<=8;i++)    {         printf(“请输入第%d个数”,i);         scanf(“%d”,&number);                   if(min>number)                           //min与新输入的数比,如果更大,则        {             min=number;                          // min更新为较小的数             n=i;                                         // n更新为较小数的位置                          }      }                      printf(“第%d个数最小,为%d”,n,min);            //输出最小数的位置与最小数    return 0;} 提示:可参考课件“附加例题解析”中文档“求最值及其位置”,帮助理解。

答案: 输出8个数中的最小数;
输出最小数的位置

12、 下面(   )仅输出m的大于1的最小因子。

答案: for (i =2; i<=m-1; i++)  if ( m % i == 0)  {   printf(“%d is 最小因子”, i);   break;  } ;
i=2;while ( m % i != 0)  i++;printf(“%d is 最小因子”, i);

13、 程序功能:输入n的值(n<11),计算1!+2!+3!+……+n!,并输出计算结果。请完善程序。(程序有1个空,答案一行写一个,不要添加多余的空格)#include <stdio.h>int main(){     int i, n;    long sum=0,fac=1;                            //fac存储每个加项(阶乘)的值     printf(“请输入n的值:”);    scanf(“%d”,&n);    for( i=1; i<=n; i++)    {                                   //后一加项与前一加项的关系  sum=sum+fac;    }    printf(“和为%ld”,sum);    return 0;}提示:可以参考“累加和”中讲解的最后一个例题
答案: (以下答案任选其一都对)fac=faci;;
fac=i
fac;;
fac*=i;

14、 编写作图程序:输入一个整数n,输出由n行上三角形与n+1行下三角形组成的如下菱形。    输入样例:                                    5                                     输出样例:C程序设计基础(厦门大学) 中国大学mooc答案满分完整版章节测试第10张(程序有3个空,答案一行写一个,不要添加多余的空格)#include<stdio.h>int main(){ int n,i, j;  scanf(“%d”,&n);  for(i=1;i<= n;i++)                    //输出n行上三角形  {    for(j=1;j<= n-i+1;j++)              //输出每行号前的空格          (1)     for(j=1;j<=   (2)    ;j++)              //输出第i行的号      putchar(‘‘);    putchar(”);    }   for(i=1;i<=  (3)  ;i++)            //输出n+1行下三角形  {    for(j=1;j<=i-1;j++)       putchar(‘ ‘);    for(j=1;j<= 2n+3-2i;j++)       putchar(‘‘);    putchar(”);  }  return 0;}提示:n行上三角形的编程,可以参考本周教学内容:循环的嵌套中讲解的最后一个例题n+1行下三角形的编程与上三角类似,如何用公式表示第i行的个数,可参考循环的嵌套小节中的“问与答”文档
答案: (以下答案任选其一都对)putchar(‘ ‘);
2
i-1
n+1;
printf(” “);
2i-1
n+1;
putchar(‘ ‘);
2
i-1
1+n;
printf(” “);
2i-1
1+n;
putchar(‘ ‘);
i
2-1
n+1;
printf(” “);
i2-1
n+1;
putchar(‘ ‘);
i
2-1
1+n;
printf(” “);
i*2-1
1+n

15、 编程输出如下图的九九乘法口诀表:  C程序设计基础(厦门大学) 中国大学mooc答案满分完整版章节测试第11张(程序有2个空,答案一行写一个,不要添加多余的空格) #include <stdio.h>int main( ){ int i,j;  printf(“\t\t\t\t乘法口诀表”);  for( i=1;i<=9;i++)                              //外循环输出9行  {      for( j=1;j<=   (1)  ;  j++)                         //内循环每行输出 i 列         printf(“%d%d=%d\t”,i,j,   (2)     );          //输出乘法表     printf(“”);                                     //输出一行后换行} return 0;}提示:1、注意规律,第 i 行第 j 列输出的是: ij=ij的积;2、可以参照本周教学内容:循环的嵌套中输出直角三角形的例题,试试将输出字符’‘的语句替换为输出一条乘法口诀。
答案: (以下答案任选其一都对)i
ij;
i
j
i

16、 下面程序的功能是()

include<stdio.h>

int main()
{
 int x,s,i;
 scanf(“%d”,&x);
 s=x;
 for(i=1; i<=6; i++)
 {
    scanf(“%d”,&x); 
    if(s<x)  s=x;          
 } 
 printf(“s=%d”, s); 
  return 0;
}

提示:可参考本周视频“求最值及其位置”

答案: 输入7个整数,输出其中的最大数

17、 阅读下面的程序,该程序完成的功能有(   )
 

include <stdio.h>

int main()

    int number,min;                                
    int i,n=1; 
    printf(“请输入第1个数”);
    scanf(“%d”,&number);  
    min=number;                           //只有1个数时,最小数就是这个数,设min初值为第1个数
 
    for(i=2;i<=8;i++)
    {
         printf(“请输入第%d个数”,i);
         scanf(“%d”,&number);  
        
         if(min>number)                           //min与新输入的数比,如果更大,则
        {
             min=number;                          // min更新为较小的数
             n=i;                                         // n更新为较小数的位置                  
        }
      }
                  
    printf(“第%d个数最小,为%d”,n,min);            //输出最小数的位置与最小数
    return 0;
}
 

提示:可参考本周视频“求最值及其位置”。

答案: 输出8个数中的最小数;
输出最小数的位置

18、
编写作图程序:输入一个整数n,输出由n行上三角形与n+1行下三角形组成的如下菱形。
    输入样例:                           
         5                                 
    输出样例:
C程序设计基础(厦门大学) 中国大学mooc答案满分完整版章节测试第10张
(程序有3个空,答案一行写一个,不要添加多余的空格)

include<stdio.h>

int main()
{ int n,i, j;
  scanf(“%d”,&n);
  for(i=1;i<= n;i++)                    //输出n行上三角形
  {
    for(j=1;j<= n-i+1;j++)              //输出每行号前的空格
          (1)
    for(j=1;j<=   (2)    ;j++)              //输出第i行的

      putchar(‘‘);
    putchar(”);
    }
 
  for(i=1;i<=  (3)  ;i++)            //输出n+1行下三角形
  {
    for(j=1;j<=i-1;j++) 
      putchar(‘ ‘);
    for(j=1;j<= 2
n+3-2i;j++) 
      putchar(‘
‘);
    putchar(”);
  }
  return 0;
}

提示:
n行上三角形的编程,可以参考本周教学视频:“循环的嵌套”中讲解的最后一个例题
n+1行下三角形的编程与上三角类似,如何用公式表示第i行*的个数,可参考循环的嵌套小节中的“问与答”文档

答案: (以下答案任选其一都对)putchar(‘ ‘);
2i-1
n+1;
printf(” “);
2
i-1
n+1;
putchar(‘ ‘);
2i-1
1+n;
printf(” “);
2
i-1
1+n;
putchar(‘ ‘);
i2-1
n+1;
printf(” “);
i
2-1
n+1;
putchar(‘ ‘);
i2-1
1+n;
printf(” “);
i
2-1
1+n

19、 编程输出如下图的九九乘法口诀表:
 
 C程序设计基础(厦门大学) 中国大学mooc答案满分完整版章节测试第11张

(程序有2个空,答案一行写一个,不要添加多余的空格)
 

include <stdio.h>

int main( )
{ int i,j;
  printf(“\t\t\t\t乘法口诀表”);
  for( i=1;i<=9;i++)                              //外循环输出9行
  { 
     for( j=1;j<=   (1)  ;  j++)                         //内循环每行输出 i 列
         printf(“%d*%d=%d\t”,i,j,   (2)     );          //输出乘法表
     printf(“”);                                     //输出一行后换行
}
 return 0;
}

提示:
1、注意规律,第 i 行第 j 列输出的是: ij=ij的积;
2、可以参考本周视频:“编程案例解析:九九乘法表”
答案: (以下答案任选其一都对)i
ij;
i
j
i

 



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

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


 

点关注,不迷路,微信扫一扫下方二维码

关注我们的公众号:阿布查查  随时查看答案,网课轻松过

C程序设计基础(厦门大学) 中国大学mooc答案满分完整版章节测试第14张


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

电脑浏览器添加/查看书签方法

1.按键盘的ctrl键+D键,收藏本页面

C程序设计基础(厦门大学) 中国大学mooc答案满分完整版章节测试第15张

2.下次如何查看收藏的网页?

点击浏览器右上角-【工具】或者【收藏夹】查看收藏的网页

C程序设计基础(厦门大学) 中国大学mooc答案满分完整版章节测试第16张


手机浏览器添加/查看书签方法

一、百度APP添加/查看书签方法

1.点击底部五角星收藏本网页

C程序设计基础(厦门大学) 中国大学mooc答案满分完整版章节测试第17张

2.下次如何查看收藏的网页?

点击右上角【┇】-再点击【收藏中心】查看

C程序设计基础(厦门大学) 中国大学mooc答案满分完整版章节测试第18张

二、其他手机浏览器添加/查看书签方法

1.点击【设置】-【添加书签】收藏本网页

C程序设计基础(厦门大学) 中国大学mooc答案满分完整版章节测试第19张

2.下次如何查看收藏的网页?

点击【设置】-【书签/历史】查看收藏的网页

C程序设计基础(厦门大学) 中国大学mooc答案满分完整版章节测试第20张

卉宪授姓舒乘妹别雄屑嘶骡寝