C语言程序设计(东北大学) 中国大学MOOC答案100分免费版

主题1:计算机及程序设计概述 测验测试

1、 测试题目

A:1
B:2
C:3
D:4
答案: 3

作业第1周 程序设计入门 本周作业

1、 已知矩形的长为100,宽为200,请编写C语言程序,计算其面积,并输出。
评分规则:  如下情况给出main函数类型给2分int main(){}或main(){}
如下情况写出return语句给2分int main(){return 0;}或main(){return 0;}或者void main(){ }
如下情况给6分int main(){printf(“%d”,100200);return 0;}或main(){printf(“%d”,100200);return 0;}或者void main(){ printf(“%d”,100200);}或者int main(){    int a=100,b=200;    printf(“%d”,ab);    return 0;}或者int main(){    float a=100,b=200;    float s=ab;    printf(“%f”,s);    return 0;}或者int main(){    int a=100,b=200;    int s=ab;    printf(“%d”,s);    return 0;}

2、 从键盘读入圆形半径r,计算其面积,并输出
评分规则:  给出主函数定义,给2分int main(){ }或void main(){}或main(){}
声明变量正确,给2分int main(){  float r,s;}或void main(){ float r,s;}或main(){ float r,s;}或者int main(){  double r,s;}
调用printf函数正确,给2分int main(){  float r,s; printf(“%f”,s);}或void main(){ float r,s; printf(“%f”,s);}或main(){ float r,s; printf(“%f”,s);}
调用scanf函数输入数据正确,给2分int main(){  float r,s; scanf(“%f”,&r);}或void main(){ float r,s; scanf(“%f”,&r);}或main(){ float r,s; scanf(“%f”,&r);}
面积计算正确,给2分。其中3.14可以为3.1415926、3.1416等其它近似值int main(){  float r,s; scanf(“%f”,&r); s=3.14rr; printf(“%f”,s);}或void main(){ float r,s; scanf(“%f”,&r); s=3.14rr; printf(“%f”,s);}或main(){ float r,s; scanf(“%f”,&r); s=3.14rr; printf(“%f”,s);}

第1周 程序设计入门 本周测试

1、 面向过程的高级语言包括( )

A:C,JAVA
B:C,BASIC
C:C++.NET,ASP
D:C,VB
答案: C,BASIC

2、 程序设计语言包括( )

A:高级语言
B:机器语言、汇编语言、高级语言
C:机器语言
D:汇编语言
答案: 机器语言、汇编语言、高级语言

3、 用C语言编写的代码程序( )

A:可立即执行
B:是一个源程序
C:经过编译即可执行
D:经过解释才能执行
答案: 是一个源程序

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

A:用C程序实现的算法必须要有输入和输出操作
B:用C程序实现的算法可以没有输出但必须要有输入
C:用C程序实现的算法可以没有输入但必须要有输出
D:用C程序实现的算法可以既没有输入也没有输出
答案: 用C程序实现的算法可以没有输入但必须要有输出

5、 程序设计的基本步骤主要包括( )。

A:确定数据结构,算法描述、编写程序以及程序测试
B:确定程序设计方法,描述数据方式、编写程序以及程序调试
C:确定程序实现算法、编写程序以及程序测试
D:数据描述,算法描述、编写程序
答案: 确定数据结构,算法描述、编写程序以及程序测试

6、 一个C语言程序总是从( )。

A:主过程开始执行
B:主函数开始执行
C:子程序开始执行
D:主程序开始执行
答案: 主函数开始执行

7、 C语言规定:在一个源程序中,main函数的位置( )

A:必须在最开始
B:必须在系统调用的库函数的后面
C:必须在最后
D:可以任意位置
答案: 可以任意位置

8、 (2012.03全国二级C题)以下叙述中错误的是( )

A:一个C程序中可以包含多个不同名的函数
B:一个C程序只能有一个主函数
C:C程序在书写时,有严格的缩进要求,否则不能编译通过
D:C程序的主函数必须用main作为函数名
答案: C程序在书写时,有严格的缩进要求,否则不能编译通过

9、 (2007.04全国二级C题)下列叙述中错误的是( )

A:计算机不能直接执行用C语言编写的源程序
B:C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件
C:后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件
D:后缀为.obj和.exe的二进制文件都可以直接运行
答案: 后缀为.obj和.exe的二进制文件都可以直接运行

10、 C语言中如何实现注释

A:通过  /   /  界定的内容为注释内容。例如 / 测试 /
B: 一行中\开始的剩余部分为注释内容。例如  int a=10;\测试
C: 一行中#开始的剩余部分为注释内容。例如  int a=10;#测试
D: 一行中@开始的剩余部分为注释内容。例如  int a=10;@测试
答案: 通过  /   /  界定的内容为注释内容。例如 / 测试 /

11、 C语言中主函数的名称是

A:main
B:MAIN
C:Main
D:WinMain
答案: main

12、 如下属于C基本语句的是?

A:#include <stdio.h>
B:x=sin(100)
C:x=1+2
D:1+2;
答案: 1+2;

13、 C语言中界定函数开始与结束的符号是

A:{   }
B:[ ]
C:(   )
D:< >
答案: {   }

14、 关于C语言基本语句说法正确的是?

A:基本语句必须在一行中
B:基本语句必须以分号;作为结束标志
C:基本语句以回车符作为结束标志
D:#include <stdio.h>属于基本语句
答案: 基本语句必须以分号;作为结束标志

15、 实现向显示器输出信息的函数是

A:scanf
B:printfun
C:print
D:printf
答案: printf

第2周 信息编码与基本运算 本周测试

1、 (2007.04全国二级C题)按照C语言规定的用户标识符命名规则,不能出现在标识符中的是()

A:大写字母
B:减号
C:数字字符
D:下划线
答案: 减号

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

A:_abc
B:MD
C:Int
D:x.c
答案: x.c

3、 ()是c语言提供的合法的数据类型关键字

A:Int
B:long
C:Char
D:integer
答案: long

4、 以下选项中不属于C语言的类型的是( )

A:signed short int
B:unsigned long int
C:unsigned int
D:long short
答案: long short

5、 (2011.09全国二级C题)以下选项中关于C语言常量的叙述错误的是()。

A:所谓常量,是指在程序运行过程中,其值不能被改变的量

B:常量分为整型常量、实型常量、字符常量和字符串常量

C:常量可分为数值型常量和非数值型常量

D:经常被使用的变量可以定义成常量

答案: 经常被使用的变量可以定义成常量

6、 不正确的变量说明是( )

A:unsigned int ui
B:short int s
C:double int a
D:int I,j,k
答案: double int a

7、 (2012.03全国二级C题)关于C语言中数的表示,以下叙述中正确的是()

A:只有整型数在允许范围内能精确无误的表示,实型数会有误差
B:只要在允许范围内整型数和实型数都能精确的表示
C:只有实型数在允许范围内能精确无误的表示,整型数会有误差
D:只有用八进制表示的数才不会有误差
答案: 只有整型数在允许范围内能精确无误的表示,实型数会有误差

8、 已知char a=’\17’,变量a中( )

A:包含1个字符
B:包含2个字符
C:包含3个字符
D:说明非法
答案: 包含1个字符

9、 以下能正确声明整型变量x,y和z并为其赋初值5的语句是( )

A:int x=y=z=5;
B:int x,y,z=5;
C:int x=5,y=5,z=5;
D:x=y=z=5;
答案: int x=5,y=5,z=5;

10、 (2010.09全国二级C题)有定义:int a; long b; double x,y; 则以下选项中正确的表达式是( )

A:a%(int)(x-y)
B:a=x/10=y;
C:(a*y)%b
D:y=x+y=x
答案: a%(int)(x-y)

11、 设有定义:int  x=2;,以下表达式中,值不为6的是

A:x=x+1
B:x++,2
x
C:x=(1+x)
D:2
x, x+=2
答案: 2*x, x+=2

12、 若有int n=6;表达式n%=n+=n-=n*n的值为( )

A:10
B:0
C:12
D:6
答案: 0

13、 (2009.09全国二级C题)表达式(int)((double)9/2)-(9)%2的计算结果是( )

A:0
B:3
C:4
D:5
答案: 3

14、 sizeof(float)是( )

A:一个双精度型表达式
B:一个整型表达式
C:一个函数调用
D:一个不合法的表达式
答案: 一个整型表达式

15、 以下表达式不等价的一组是( )

A:a&=b与a=a&b
B:a|=b与a=a|b
C:a!=b与a=a!b
D:a^=b与a=a^b
答案: a!=b与a=a!b

16、 若有char ch=’A;则表达式ch=(ch>=’A’&&ch<=’Z’)?(ch+32):ch的值是( )

A:A
B:a
C:Z
D:z
答案: a

17、 判断char型变量c1是否为大写字母的正确表达式是( )

A:’A'<=c1<=’Z’
B:(c1>=’A’)&(c1<=’Z’)
C:(c1>=’A’)&&(c1<=’Z’)
D:(‘A'<=c1)AND(‘Z’>=c1)
答案: (c1>=’A’)&&(c1<=’Z’)

18、 正确表达式数学不等式 10<x<100的C语言表达式是?(假设x已经声明)()

A:10<x<100
B:10>x>100
C:10<x && x<100
D:10<x and x<100
答案: 10<x && x<100

19、 正确表达式数学不等式 |x|<100 其x不等于0的C语言表达式是?(假设x已经声明)()

A:-100<x && x<100 && x!=0
B:-100<x && x<100 && x<>0
C:-100<x<0 &&  0<x<100
D:-100<x<0 ||  0<x<100
答案: -100<x && x<100 && x!=0

20、 表达式 (x=100,y=200)+!(0<x<20)的值为?(假设x,y已经声明为int类型)

A:100
B:200
C:101
D:201
答案: 200

21、 可以实现绝对值运算的|x|的表达式是?(假设x已经声明float类型)

A:(x<0?-x:x)
B:(x>0?-x:x)
C:(x<0&&x=-x)
D:(x>0||x=-x)
答案: (x<0?-x:x)

作业第2周 信息编码与基本运算 本周作业

1、 从键盘读入三角形三边长度a,b,c,利用海伦公式计算其面积,并输出
评分规则:  给出主函数定义,给1分int main(){ }或void main(){}或main(){}
声明变量正确,给1分int main(){  float a,b,c; float s;}或void main(){ float a,b,c; float s;}或main(){ float a,b,c; float s;}或者int main(){  float a,b,c; float s;}或者int main(){  float a,b,c; float s=0;}
调用scanf和printf 函数输入数据正确,给2分例如int main(){  float a,b,c; float s; scanf(“%f%f%f”,&a,&b,&c);printf(“%f”,s);}或void main(){ float a,b,c; float s; scanf(“%f%f%f”,&a,&b,&c);printf(“%f”,s);}或main(){ float a,b,c; float s; scanf(“%f%f%f”,&a,&b,&c);printf(“%f”,s);}或者main(){ float a,b,c; float s; scanf(“%f,%f,%f”,&a,&b,&c);printf(“%f”,s);}如下形式的printf函数调用也正确printf(“s=%f”,s);printf(“s=%.2f”,s);printf(“s=%7.2f”,s);
周长计算正确,给2分。重点考查  p=(a+b+c)/2.0;参考代码如下:int main(){  float a,b,c; float p; scanf(“%f%f%f”,&a,&b,&c);p=(a+b+c)/2.0; }或void main(){ float a,b,c; float p; scanf(“%f%f%f”,&a,&b,&c);p=(a+b+c)/2.0;}或main(){ float a,b,c; float p; scanf(“%f%f%f”,&a,&b,&c);p=(a+b+c)/2.0;}
面积计算正确,给2分。重点考查  s=sqrt(p(p-a)(p-b)(p-c));参考代码如下:int main(){  float a,b,c; float s; float p; scanf(“%f%f%f”,&a,&b,&c); p=(a+b+c)/2.0; s=sqrt(p(p-a)(p-b)(p-c)); printf(“%f”,s); }或void main(){ float a,b,c; float s; float p; scanf(“%f%f%f”,&a,&b,&c); p=(a+b+c)/2.0; s=sqrt(p(p-a)(p-b)(p-c)); printf(“%f”,s);}或main(){ float a,b,c; float s; float p; scanf(“%f%f%f”,&a,&b,&c); p=(a+b+c)/2.0; s=sqrt(p(p-a)(p-b)(p-c)); printf(“%f”,s);}

2、 从键盘读入二次方程系数a,b,c,假设其有实数根,请输出其根。
评分规则:  给出主函数定义,给1分int main(){ return 0;}或void main(){}或main(){return 0;}
声明变量正确,给1分int main(){  float a,b,c; float x1,x2;}或void main(){ float a,b,c; float x1,x2;}或main(){ float a,b,c; float x1,x2;}或者int main(){  float a,b,c; float x1,x2;}或者int main(){  double a,b,c; double x1,x2;}
调用scanf和printf 函数输入数据正确,给2分例如int main(){  float a,b,c; float x1,x2; scanf(“%f%f%f”,&a,&b,&c);printf(“x1=%f,x2=%f”,x1,x2);}或void main(){ float a,b,c; float x1,x2; scanf(“%f%f%f”,&a,&b,&c);printf(“x1=%f,x2=%f”,x1,x2);}或main(){ float a,b,c; float x1,x2; scanf(“%f%f%f”,&a,&b,&c);printf(“x1=%f,x2=%f”,x1,x2);}如下形式的printf函数调用也正确printf(“%f,%f”,x1,x2);printf(“%f%f”,x1,x2);printf(“%.2f,%.2f”,x1,x2);printf(“%7.2f,%7.2f”,x1,x2);
det=bb-4ac计算正确,给2分例如int main(){  float a,b,c; float x1,x2; float det; scanf(“%f%f%f”,&a,&b,&c); det = bb-4ac; printf(“x1=%f,x2=%f”,x1,x2);}或void main(){ float a,b,c; float x1,x2; float det; scanf(“%f%f%f”,&a,&b,&c); det = bb-4ac; printf(“x1=%f,x2=%f”,x1,x2);}或main(){ float a,b,c; float x1,x2; float det; scanf(“%f%f%f”,&a,&b,&c); det = bb-4ac; printf(“x1=%f,x2=%f”,x1,x2);} 
根计算正确例如int main(){  float a,b,c; float x1,x2; float det; scanf(“%f%f%f”,&a,&b,&c); det = bb-4ac; x1=(-b+sqrt(det))/(2a); x2=(-b-sqrt(det))/(2*a); printf(“x1=%f,x2=%f”,x1,x2); return 0;}

第3周 常用函数库与顺序结构 本周测试

1、 系统的标准输出文件stdout是指( )

A:键盘
B:显示器
C:软盘
D:硬盘
答案: 显示器

2、 c语言中标准输入文件stdin是指( )

A:键盘
B:显示器
C:鼠标
D:硬盘
答案: 键盘

3、 下列描述中,正确的是( )

A:所有的输入/输出都是通过调用库函数处理的
B:所有的输入/输出都是通过输入/输出语句实现的
C:getchar和putchar可以省略#include
D:在输入/输出格式中的*表示跳过数据的含义
答案: 所有的输入/输出都是通过调用库函数处理的

4、 (2001.09全国二级C题)x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是()

A:INPUT x、y、z;
B:scanf(“%d%d%d”,&x,&y,&z);
C:scanf(“%d%d%d”,x,y,z); 
D:read(“%d%d%d”,&x,&y,&z);
答案: scanf(“%d%d%d”,&x,&y,&z);

5、 (2005.09全国二级C题)以下叙述中正确的是()。

A:调用printf函数时,必须要有输出项
B:使用putchar函数时,必须在之前包含头文件stdio.h
C:在C语言中,整数可以以十二进制、八进制或十六进制的形式输出
D:调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII码
答案: 使用putchar函数时,必须在之前包含头文件stdio.h

6、 有以下程序void main(){int a=6,b=7;printf(“a=%%d,b=%%d”,a,b);}输出结果是( )。

A:a=b,y=3
B:a=%d,b=%d
C:a=%6,b=%7
D:a=%%6,b=%%d
答案: a=%d,b=%d

7、 (2010.03全国二级C题)有以下程序:   void  main()  {        char a,b,c,d;  scanf(“%c%c”,&a,&b);  c=getchar(); d=getchar();  printf(“%c%c%c%c”,a,b,c,d);  }  当执行程序时,按下列方式输入数据(从第1列开始,代表回车,注意:回车也是一个字符)  12  34  则输出结果是()。

A:1234
B:12
C:12      3
D:1234
答案: 12      3

8、 (2012.09全国二级C题)若有定义和语句:int a,b;scanf(“%d,%d”,&a,&b);以下选项中,不能将值3赋给变量a,值5赋给变量b的是()。

A:3,5,
B:3,5,4
C:3  5
D:3,5
答案: 3  5

9、 阅读程序,指出输出结果是( )。 void main(){char c1,c2,c3;c1=’a’;c2=’z’;c3=c2-c1;printf(“%c,%c,%d “,c1,c2,c3);}

A:a ,z ,25
B:A,Z,25
C:a,z,\
D:97,122,25
答案: a ,z ,25

10、 若运行以下程序时,从键盘输入25,15,10<回车>,则输出结果为( )。 void main() { int a1,a2,a3; scanf(“%d%d%d”,&a1,&a2,&a3);printf(“a1+a2+a3=%d”,a1+a2+a3) ;}

A:a1+a2+a3=50
B:a+a2+a3=25
C:a1+a2+a3=10
D:不确定值
答案: 不确定值

11、 以下程序段 :int a=1234;printf(“%2d”,a);输出结果是( )

A:12
B:23
C:1234
D:提示出错,无结果
答案: 1234

12、 (2011.09全国二级C题)以下不能输出字符A的语句是()。(注:字符A的ASCII码值为65,字符a的ASCII码值为97)

A:printf(“%c”,’a’-32); 
B:printf(“%d”,’A’);
C:printf(“%c”,65); 
D:printf(“%c”,’B’-1);
答案: printf(“%d”,’A’);

13、 下面语句中,正确的是( )。

A:printf(“%c”,”student”);
B:printf(“%c”,”c”);
C:printf(“%s”,&a);
D:printf(“%s”,”hello”);
答案: printf(“%s”,”hello”);

14、 有如下语句:scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);为使变量a的值为1,b的值为3,c的值为2,从键盘输入数据的正确格式是( )。

A:132
B:1,3,2
C:a=1,b=3,c=2 
D:a=1 b=3 c=2
答案: a=1,b=3,c=2 

15、 数字字符0的ASCII值为48,若有以下程序main(){       char  a=’a’,b=’b’;    printf(“%c,”,b++);    printf(“%d”,b-a);}程序运行后的输出结果是

A:0,2
B:c,2
C:b,2
D:2,50
答案: b,2

16、 有以下程序main(){   int  a,b,d=25;   a=d/10%9;   b=a&&(-1);   printf(“%d,%d”,a,b);}程序运行后的输出结果是

A:6,1
B:2,1
C:6,0
D:2,0
答案: 2,1

17、 若整型变量 int a=1,b=2,c=3,d=4;则条件表达式a<b?a:c<d?c:d的值

A:1
B:2
C:3
D:4
答案: 1

18、 有以下程序main(){       int  a,b,p;   scanf(“m=%dn=%dp=%d”,&a,&b,&p);   printf(“%d%d%d”,a,b,p);}若想从键盘上输入数据,使变量a中的值为12,b中的值为56,p中的值为89,则正确的输入是

A:m=12n=56p=89
B:m=12  n=56  p=89
C:a=12b=56p=89
D:12  56  89
答案: m=12n=56p=89 

19、 假设 float d=12.3456,则表达式printf(“%10.2f”,(int)d)的输出结果为

A:12.34
B:1.23
C:1.20
D:12.0
答案: 1.20

20、 假设 unsigned u=0,从键盘正确读入一个整数给u的语句是

A:scanf(“%d”,u);
B:scanf(“%u”,&u);
C:scanf(“%ud”,u);
D: scanf(“%ld”,&u);
答案: scanf(“%u”,&u);

21、 如下程序段执行的结果为int a=100,b=0,c;c=(b=100)+ (b>0) a++;printf(“c=%d”,c);

A:200
B:201
C:202
D:203
答案: 201

22、 如下程序段执行的结果为int a=100,b=200,c;c= a>b&&b+=100;c=b++;printf(“c=%d”,c);

A:200
B:201
C:300
D:301
答案: 200

23、 如下程序段执行的结果为    int a=100,b=200,c;    c=!a+(b>>2)%10;    printf(“c=%d”,c);

A:0
B:10
C:80
D:101
答案: 0

第4周 逻辑判断与选择结构 本周测试

1、 对下面的程序说法正确的是______。void main(){ int x=3,y=0,z=0;  if(x=y+z)    printf(“*”);  else    printf(“####”);}

A:输出为####
B:有语法错误,不能通过编译
C:输出为

D:通过编译,但是不能运行
答案: 输出为####

2、 执行下面程序的结果为______。void main(){  int a=3,b=4,t=1;  if(a>b)  {t=a;a=b;b=t;}  printf(“%d”,a);}

A:3
B:4
C:1
D:0
答案: 3

3、 执行下面语句段后的输出结果为______。   int i=-1;   if (i<=0)       printf(“*”);       i=2;    else       printf(“%%%%”);

A:有语法错误
B:

C:%%
D:%%%%c
答案: 有语法错误 

4、 下述语句中,______中的if 语法有错误

A:if(x!=y)        scanf(“%d”,x)else        scanf(“%d”,y);
B:if(x==y); 
C:if(x==y)          x+y;
D:if(x==y)     {x++;y++;}
答案: if(x!=y)        scanf(“%d”,x)else        scanf(“%d”,y);

5、 假设变量i为整型量,比较下面两条if语句,选出正确答案______。if(i!=0);  if(i);

A:两者作用等价
B:两者作用不同
C:两者作用相反
D:if(i)语法错
答案: 两者作用等价

6、 下面程序执行后输出结果是______。   void  main()   {  int n=0,m=1,x=2;      if(!n)  x-=1;      if(m)   x-=2;      if(x)   x-=3;        printf(“%d”,x);   }

A:-4
B:2
C:-6
D:-1
答案: -4

7、 阅读程序,分析输出结果是( )。#include <stdio.h>void main(){ int x=10,y=5; switch(x) { case 1:x++; default: x+=y;case 2:y–;case 3:x–;}printf(“x=%d,y=%d”,x,y);}

A:x=14,y=4
B:x=15,y=5
C:x=10,y=5
D:x=15,y=4
答案: x=14,y=4

8、 阅读程序,分析输出结果是( )。 #include <stdio.h>void main(){  int a=6,b=10,t; if((a=b)>0) t=a+b; printf(“%d”,t);}

A:20
B:16 
C:12
D:无输出
答案: 20

9、 阅读程序,分析输出结果是( )。 #include <stdio.h>void main( ){  int a=2,b=-1,c=2; if(a) if(b<0) c=0; else c++; printf(“%d”,c);}

A:0
B:1
C:2
D:3
答案: 0

10、 若执行下面的程序时从键盘输入10,则输出是( )。 void main( ){   int a; scanf(“%d”,&a); if(++a<10) printf(“%d”,a++); else  printf(“%d”,++a); }

A:12
B:11
C:10
D:9
答案: 12

11、 阅读程序,分析输出结果是( )。void main( ){   int x=0,a=1,b=1;  switch(x)  {        case 0: a++;     case 1: b++;break;     case 2: a++;b++;   }   printf(“a=%d,b=%d”,a,b);}

A:a=2,b=2
B:a=3,b=3
C:a=1,b=1
D:没有正确结果
答案: a=2,b=2

12、 下列条件语句中,功能与其他语句不同的是( )

A:if(a==0) printf(“%d”,x); else printf(“%d”,y); 
B:if(a) printf(“%d”,x); else printf(“%d”,y);
C:if(a==0) printf(“%d”,y); else printf(“%d”,x);
D:if (a!=0) printf(“%d”,x); else printf(“%d”,y);
答案: if(a==0) printf(“%d”,x); else printf(“%d”,y); 

13、 (201203二级c)若下面程序运行时从键盘输入9<回车>,则输出结果是()。#include <stdio.h>void main(){   int a;   scanf(“%d”, &a);   if(a++ < 9)        printf(“%d”, a);   else        printf(“%d”, a–);}

A:10
B:11
C:9
D:8
答案: 10

14、 有以下程序#include <stdio.h>main(){int y=9;if(y>0,y–) if(y%3==0) printf(“%d”,–y);printf(“%d”,y);}程序的运行结果是

A:8
B:88
C:99
D:9
答案: 8

15、 有以下程序#include <stdio.h>main(){int y=9;switch(y++){ case 9:y/=2; case 8:–y;}printf(“%d”,y);}程序的运行结果是

A:4
B:5
C:3
D:9
答案: 4

16、 以下程序#include <stdio.h>main(){int a=2,b=3,c=0;if(a=b) c=a;else    c=b; printf(“%d”,c);}程序的运行结果是

A:3
B:0
C:2
D:1
答案: 3

17、 有以下程序#include <stdio.h>main(){int a=2,b=1,c=0;if(a&b) c=a;else    c=b; printf(“%d”,c);}程序的运行结果是

A:1
B:0
C:2
D:3
答案: 1

18、 以下程序#include <stdio.h>main(){int a=2,b=1,c=0;if(a||b) c=a;else    c=b; printf(“%d”,c);}程序的运行结果是

A:2
B:0
C:3
D:1
答案: 2

19、 如下程序的运行结果是()int main(){    int a=2,b=1,c=0;    if(a>=b){        switch(a++,b++)        {        case 1:            c=a;        case 0:            c=b;break;        default:            c=0;        }    }    printf(“%d”,c);    return 0;}

A:2
B:0
C:1
D:3
答案: 2

20、 如下程序的运行结果是()int main(){    int a=0,b=0,c=0;    if(a=1,a>=b){        switch(b++)        {        case 1:            c=a;        case 0:            c=b;break;        default:            c=0;        }    }    printf(“%d”,c);    return 0;}

A:1
B:0
C:2
D:3
答案: 1

21、 如下程序的运行结果是()int main(){    int a=3,b=1,c=0;    if(a>b?a:b){        switch(b%10)        {        case 1:            c=a;        case 0:            c=b;break;        default:            c=0;        }    }    printf(“%d”,c);    return 0;}

A:1
B:0
C:2
D:3
答案: 1

主题4:逻辑判断与选择结构 主题4测验

1、 结构化程序的实现由( )组成程序逻辑。

A:顺序结构
B:分支结构
C:循环结构
D:顺序结构、分支结构和循环结构
答案: 顺序结构、分支结构和循环结构

2、 以下4个选项中,不能看作一条语句的是( )。

A:{;}
B:a=0,b=0,c=0;
C:if(a>0); 
D:if(b==0) m=1;n=2;
答案: if(b==0) m=1;n=2;

3、 下列语句中,合法的的赋值语句( )。

A:A=2+B++=A+2; 
B:A=2+B,B++,A+2
C:A=2+B,C=A+2; 
D:A=2+B+C=A+2
答案: A=2+B,C=A+2; 

4、 假设变量a为整型量,语句if (a!=0);和语句if(a);相比较,正确答案( )

A:两者作用不同
B:两者作用等价
C:两者作用相反
D:if(a)语法错
答案: 两者作用等价

5、 下面说法错误的是()。

A:语句if(a==0);逻辑结构出现错误
B:语句if(99)printf(“true!”);可以得到输出结果
C:语句 if (a=0) printf(“a is 0”);不能得到输出结果
D:语句if (a=1) printf(“a is 1”);的判断条件不起作用
答案: 语句if(a==0);逻辑结构出现错误

6、 假设有int型变量a=0,b=1,c=10,计算表达式a&&(b=c)后a,b,c的值是()。

A:a=0,b=1,c=10,
B:a=0,b=10,c=10,
C:a=0,b=1,c=1,
D:都不正确
答案: a=0,b=1,c=10,

7、 假设有int型变量a=0,b=1,c=10,计算表达式(b=c)||(a=b)后a,b,c的值是()。

A:a=0,b=1,c=10,
B:a=0,b=10,c=10,
C:a=10,b=10,c=10,
D:都不正确
答案: a=0,b=10,c=10,

8、 为了避免在嵌套的条件语句if-else中产生二义性,C语言规定:else子句总是与(  )

A:缩排位置相同的if配对
B:其之前最近且不带else的if配对
C:其之前最近的if配对
D:第一个if配对
答案: 其之前最近且不带else的if配对

9、 阅读下面程序:该程序(     )#include “stdio.h”  main()  {    int x=-10, y=5, z=0;    if (x=y+z)       printf(“” );    else        printf(“$$$”);  }

A:有语法错不能通过编译
B:输出

C:可以通过编译但不能通过连接
D:输出$$$
答案: 输出***

10、 若执行下面的程序时从键盘输入10,则输出是( )void main( ){  int a;   scanf(“%d”,&a);if(++a<10)       printf(“%d”,a++);else         printf(“%d”,++a); }

A:12
B:11
C:10
D:9
答案: 12

11、 假定所有变量均已正确说明,下列程序段运行后x的值是( )。a=b=c=1;x=30;    if(!a)  x–;      else if  (!c) x=3;         else x=4;

A:4
B:29
C:30
D:3
答案: 4

12、 阅读程序,该程序的输出结果是(    )。void main( )  {  int x=0,a=1,b=1;    switch(x){    case 0: a++;    case 1: b++;break;    case 2: a++;b++;     }    printf(“a=%d,b=%d”,a,b); }

A:a=3,b=3
B:a=2,b=2
C:a=1,b=1
D:没有正确结果
答案: a=2,b=2

13、 下列条件语句中,功能与其他语句不同的是( )。

A:if(a) printf(“%d”,x); else printf(“%d”,y);
B:if(a==0) printf(“%d”,y); else printf(“%d”,x);
C:if (a!=0) printf(“%d”,x); else printf(“%d”,y);
D:if(a==0) printf(“%d”,x); else printf(“%d”,y);
答案: if(a==0) printf(“%d”,x); else printf(“%d”,y);

14、 下列关于swith语句和break语句结论中,正确的是(     )

A:break语句是swith语句中的组成部分
B:在swith语句中可以根据需要使用或不需要使用break语句
C:在swith语句中必须使用break语句
D:break语句只能在swith语句中出现
答案: 在swith语句中可以根据需要使用或不需要使用break语句

15、 阅读程序,分析程序执行结果是(    )#include<stdio.h>int main(){ int n=0,m=1,x=2;  if(!n)x-=1;  if(m) x-=2;  if(x) x=x-3;  printf(“%d”,x);  return 0;}

A:2
B:-6
C:-1
D:-4
答案: -4

16、 以下正确的if语句是(    )

A:if  (n>0)  printf(“%f”,n)printf(“%f”,-n);
B:if  (n>0){ n=n+m;  printf(“%f”,n);  } else  printf(“%f”,-n); 
C:if  (n>0)         { n=n+m;  printf(“%f”,n);  };        else  printf(“%f”,-n);
D:if  (n>0)        { n=n+m;  printf(“%f”,n)  };        else  printf(“%f”,-n);
答案: if  (n>0){ n=n+m;  printf(“%f”,n);  } else  printf(“%f”,-n); 

17、 若执行下述程序时从键盘输入3  4,则输出结果是(  )。#include <stdio.h>main( ){  int a,b,s;scanf(“%d%d”,&a,&b);s=a; if (a<b) s=b; s=s; printf(“%d”,ss);    }

A:186
B:256
C:324
D:400
答案: 256

18、 设x=10,y=5;z=15,执行下面一段程序后z的结果是( )。   if(x>y)   if(y>z)x=y;   else z=y;

A:7
B:6
C:5
D:4
答案: 5

主题2:信息编码与数据类型 主题2测验

1、 (2007.04全国二级C题)按照C语言规定的用户标识符命名规则,不能出现在标识符中的是(    )。

A:大写字母
B:连接符
C:数字字符
D:下划线
答案: 连接符

2、 (     )是c语言提供的合法的数据类型关键字。

A:Int
B:long
C:Char
D:integer
答案: long

3、 (2011.09全国二级C题)以下选项中关于C语言常量的叙述错误的是(     )。

A:所谓常量,是指在程序运行过程中,其值不能被改变的量
B:常量分为整型常量、实型常量、字符常量和字符串常量
C:常量可分为数值型常量和非数值型常量
D:经常被使用的变量可以定义成常量
答案: 经常被使用的变量可以定义成常量

4、 数据类型描述中错误的是(     )。

A:计算机的字长限制了数据的表示范围
B:不同数据类型的数据表示形式、占用内存空间大小、合法的取值范围以及参与的运算种类都不相同
C:同一个数据类型具有同样的操作和同样的编码方式
D:可以改变程序中声明的数据类型
答案: 可以改变程序中声明的数据类型

5、 用C语言编写的代码程序(     )。

A:可立即执行
B:是一个源程序
C:经过编译即可执行
D:经过编译解释才能执行
答案: 是一个源程序

主题3:基本运算与顺序结构 主题3测验

1、 下面哪组是正确的运算符(    )。

A:<<  ||  +++
B:=>  ==  ++
C:=  ?:  %
D:sizeOF  ++  &
答案: =  ?:  %

2、 下面错误的表达式是(    )。

A:x&&y||z
B:4/x+y % 10
C:x=a?0.5:’A’
D:y=x+a=b+2
答案: y=x+a=b+2

3、 下面说法错误的是(    )。

A:一个常量或一个变量或一个函数都可以看成是一个表达式
B:运算符的结合性分为左结合性和右结合性
C:双目运算符的结合性都是自左向右
D:调用exp()函数时要使用#include <math.h>
答案: 双目运算符的结合性都是自左向右

4、 下面说法正确的是(   )。

A:负数参与“/”和“%”运算时,其结果与C89或C99的标准有关
B:C语言的“/”和“%”运算可以写成5/0或5%0的形式
C:赋值运算要求他的左操作数可以是变量、常量或另一个表达式
D:表达式(x=a>b)&&(y=c>d)是错误的写法
答案: 负数参与“/”和“%”运算时,其结果与C89或C99的标准有关

5、 表达式C语言程序设计(东北大学) 中国大学MOOC答案100分免费版第1张的正确写法是(   )。

A:3xxx+2xx-7x+10
B:3exp(x,3)+2exp(x,2)-7exp(x,1)+10
C:3
pow(3,x)+2pow(2,x)-7pow(1,x)+10
D:3exp(x,3)+2exp(x,2)-7x+10
答案: 3
xxx+2xx-7*x+10

6、 假设有下面程序段:int a;float b; b=a=4.5;下面错误的描述是(   )。

A:变量a的值是4
B:变量b的是4.0
C:赋值表达式a=4.5的结果值是4
D:变量b的值是4.5
答案: 变量b的值是4.5

7、 下面说法错误的是(   )。

A:参与处理的数据由一种数据类型转换为另一种数据类型叫做类型转换
B:隐式转换由编译系统自动完成,可能造成数据丢失或溢出
C:隐式转换可能发生在算术计算、赋值、输出以及函数调用时
D:(int )(x+y) 与(int ) x+y都是表示显示转换,其含义相同
答案: (int )(x+y) 与(int ) x+y都是表示显示转换,其含义相同

8、 假设a,b,c,x,y均为int型,下面说法正确的是(   )。

A:表达式“a+=2”等价于表达式“a=a+2”
B:表达式“a=b+c”等价于表达式“a=ab+c”
C:表达式“y=x++”等价于表达式“x++,y=x”
D:表达式“y=x++”等价于表达式“y=x,x++”
答案: 表达式“y=x++”等价于表达式“y=x,x++”

9、 下面能正确定义整型变量x、y和z并为其赋初值5的语句是(  )。

A:int x=y=z=5;
B:int x,y,z=5;
C:int x=5,y=5,z=5;
D:x=5,y=5,z=5;
答案: int x=5,y=5,z=5;

10、 假设a=6,表达式a+=a-=a*a的结果正确的是(   )。

A:0
B:6
C:36
D:-60
答案: -60

11、 假设有int 型变量i=1,j=2,k=3,下面正确的是(    )。

A:i>=j的值为1
B:i==j的值为1
C:(j<k)==(i<k)为0
D:(i==j)+(j==k)的值为0
答案: (i==j)+(j==k)的值为0

12、 假设有int型变量a=1,b=0,下面正确的是(    )。

A:(a==1)&&(b==0)的值为1 
B:!a+!b的值为0
C:(a==0)||(b=1)的值为0
D:!a&&!b的值为1
答案: (a==1)&&(b==0)的值为1 

13、 若希望当num的值为奇数时,表达式的值为“真”,num的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式是(  )。

A:num%2==1
B:!(num%2==0)
C:!(num%2)
D:num%2
答案: !(num%2)

14、 逻辑运算符两侧运算对象的数据(  )。

A:只能是0或1
B:只能是0或非0正数
C:只能是整型或字符型数据
D:可以是任何类型的数据
答案: 可以是任何类型的数据

15、 期末成绩由平时成绩times和期末上机考试grade两部分组成,要求times和grade只要有一项超过90分即为优秀。正确的写法是(    )。

A:(times>=90)||(grade>=90)
B:(times>=90)&&(grade>=90)
C:(times>=90||times<=100)&&(grade>=90||grade<=100)
D:(times>=90&&times<=100)||(grade>=90&&grade<=100)
答案: (times>=90&&times<=100)||(grade>=90&&grade<=100)

16、 正确描述数学式10≤x≤10的表达式是(   )。

A:-10<=x<=10
B:-10<=x&&x<=10
C:x>=-10&x<=10
D:-10<=x||x<=10
答案: -10<=x&&x<=10

17、 有下面程序段:        int a,b,c;        a=1,b=2;        c=a>b?a:b;        c=(a>=0?a:0)+c;      执行上述程序段后a,b,c的结果是(    )。

A:a=1,b=2,c=2
B:a=1,b=2,c=3
C:a=0,b=2,c=3
D:a=1,b=2,c=2
答案: a=1,b=2,c=3

18、 假设x为int型,下面说法正确的是(    )

A:逗号表达式x=25,x5的值和x的值分别是50,10
B:逗号表达式x=25,x5的值和x的值分别是10,50
C:逗号表达式(x=25,x2),x+10的值和x的值10,30
D:逗号表达式(x=25,x2),x+10的值和x的值20,20
答案: 逗号表达式x=25,x5的值和x的值分别是50,10

19、 sizeof(float)是(   )。

A:一个双精度型表达式
B:一个整型表达式
C:一个函数调用
D:一个不合法的表达式
答案: 一个整型表达式

作业第5周 迭代计算与循环结构 本周作业

1、 从键盘读入一个自然,判定其是否为回文数,如果是,输出该数;否则,输出0
评分规则:  #include <stdio.h>

include <stdlib.h>

int main()
{
    //1分
    unsigned int n,xn;
    unsigned int a,b;
    //1分
    scanf(“%u”,&n);
    //1分
    xn=0;
    a=n;
    //5分
    while(a){
        b=a % 10;
        a=a/10;
        xn=xn*10+b;
    }
    //1分
    if(xn!=n){
        xn=0;
    }
    //1分
    printf(“%u”,xn);
    return 0;
}

2、 计算sin(x)在区间[0,3.14]上的定积分,并输出结果。
评分规则:  #include <stdio.h>

include <stdlib.h>

include <math.h>

int main()
{
    //1分,变量声明
    double s,ya,yb,xa=0,xb=3.14,det;
    int n=0,i=0;
    //1分,划分区间,随意给大于1的数,越大越好
    n=10000;
    //将[xa,xb]划分n份
    //1分,计算区间宽度
    det=(xb-xa)/n;
    //1分
    s=0;
    //有n-1个区间
    for(i=0;i<n-1;i++){
        //每个区间可以看做一个梯形,计算每个梯形面积,并累加求和
        //3分
        xa=idet;
        xb=(i+1)
det;
        ya=sin(xa);
        yb=sin(xb);
        //2分
        s=s+det*(ya+yb)/2;
    }
    //输出1分
    printf(“%lf”,s);
    return 0;
}

第5周 迭代计算与循环结构 本周测试

1、 对于循环语句while(1); 描述正确的是( )。

A:死循环 
B:循环一次 
C:不执行循环体 
D:编译有错
答案: 死循环 

2、 下面程序的运行结果是( )#include <stdio.h>int  main(){    int c1=2, c2=0;    while(!c2–)      printf(“%d,  %d”,  c1–,  c2);    return  0;}

A:陷入死循环
B:不输出任何内容
C:输出2, -1 
D:输出2, 0
答案: 输出2, -1 

3、 若有语句while((ch=getchar())==’e’) printf(“*”);当输入字符串abcde<回车>时,while循环体执行()次。

A:1次
B:死循环
C:0次
D:5次
答案: 0次

4、 已知int t=0; while(t=1) {…} 则以下叙述正确的是()

A:循环控制表达式的值为0
B:循环控制表达式的值为1
C:循环控制表达式不合法
D:以上说法都不对
答案: 循环控制表达式的值为1

5、 以下程序段执行后的输出结果(   )。int i;   for(i=1; ; i++)     printf(“%d”,i++);

A:1
B:2
C:3
D:死循环
答案: 死循环

6、 设已声明int型变量i和k,则下面for循环语句()。   for(i=0;k= -1,k=1; i++,k++)       printf(“****”);

A:判断循环结束的条件不合法
B:是无限循环
C:循环依次也不执行
D:循环只执行一次
答案: 是无限循环

7、 以下程序中,for循环体执行的次数是()。#define  N  2#define  M  1+ N#define  K  M+1*M/2void  main(){     int   i;    for( i= 1;i < K; i++)    { …….. }   …….}

A:4
B:5
C:3
D:6
答案: 4

8、 与语句while(!x)等价的语句是( )。

A:while(x==0) 
B:while(x!=0)
C:while(x!=1)
D:while(~x)
答案: while(x==0) 

9、 以下关于循环的描述中,错误的是( )。

A:可以用for语句实现的循环一定可以用while语句实现
B:可以用while语句实现的循环一定可以用for语句实现
C: 可以用do…while语句实现的循环一定可以用while语句实现
D:do…while语句与while语句的区别仅仅是关键字while的位置不同
答案: do…while语句与while语句的区别仅仅是关键字while的位置不同

10、 在下列选项中,没有构成死循环的程序段是____

A:int i=100;while (1){ i=i%100+1; if (i>100) break;}
B:for( ; ; );
C:int s=26;  while (s) –s; 
D:int k=1000;do {++k;} while (k>=1000);
答案: int s=26;  while (s) –s; 

11、 下面程序执行后的输出结果是()。#include <stdio.h>void main( )  {     int  i,n=0;    for(i=2;i<5;i++)     {        do        { if(i%3) continue;            n++;         } while(!i);     n++;     }   printf(“n=%d”,n);  } 

A:n=5
B:n=2
C:n=3
D:n=4
答案: n=4

12、 以下正确的描述是()

A:continue语句的作用是结束整个循环的执行
B:只能在循环体内和switch语句体内使用break语句
C: 在循环体内使用break语句或continue语句的作用相同
D: 从多层循环嵌套中退出时, 只能使用goto语句
答案: 只能在循环体内和switch语句体内使用break语句

13、 (201203二级C)下面程序运行后的输出结果是()。 #include <stdio.h> void main()  {     int s = 0, n;    for(n = 0; n < 3; n++)     {      switch(s)         { case 0:          case 1:s += 1;          case 2:s += 2; break;          case 3:s += 3;          default: s += 4;          }      printf(“%d”, s);      }   }

A:124
B:136 
C:31014
D:3610
答案: 31014

14、 如下程序计算10名同学,每位同学4门课程的总分,并输出void main(){       int n,k;     float score,sum,ave;     sum=0.0;     for(n=1;n<=10;n++)      {        for(k=1;k<=4;k++)          {            scanf(“%f”,&score);               sum+=score;           }        ave=sum/4.0;        printf(“NO%d:%f”,n,ave);       }}上述程序运行后结果不正确,调试中发现有一条语句出现在程序中的位置不正确。这条语句是( )。

A:sum=0.0;
B:sum+=score;
C:ave=sum/4.0;
D:printf(“NO%d:%f”,n,ave);
答案: sum=0.0;

15、 分析程序执行过程,x的值为(  )。     void main()     {        int x,y;        for(x=1,y=1;x<=50;x++)        {          if(y>=15)  break;              if(y%5==1)            {              y+=5;              continue;              }          y-=2;         }         printf(“%d”,x);      }

A:3
B:6
C:4
D:5
答案: 4

16、 设x和y均为int型变量,则执行下的循环后,y值为      for(y=1,x=1;y<=50;y++)     {    if(x>=8)break;       if (x%2==1)        {  x+=5;   continue;}        x-=3;     }

A:2
B:4
C:6
D:8
答案: 4

17、 设j为int型变量,则下面for循环语句的执行结果是     for( j=9;j>3;j–)     { if(j%3)break;                 –j; –j;     }  printf(“%d”,j);

A:9 
B:6
C:3
D:0
答案: 3

18、 请读程序片段:    int a,b;    for(a=1,b=1; a<=80; a++)    {        if(b>=20)            break;        if(b%2==1)        {            b+=2;            continue;        }        b-=6;    }    printf(“%d”,a);上面程序的输出结果是

A:8 
B:9
C:10
D:11
答案: 11

19、 请读程序片段:    int a,b;    for(a=1,b=1; a<=80; a++,b++)    {        if(b<20)            continue;        if(b%2==1)        {            b+=2;            break;        }     }    printf(“%d”,a);上面程序的输出结果是

A:80
B:20
C:21
D:23
答案: 21

20、 设j为int型变量,则下面for循环语句的执行结果是     for( j=9;j>3;j–);     { j-=2;     }    printf(“%d”,j);

A:3
B:2
C:1
D:死循环
答案: 1

21、 如下程序中实现sum=1+2+3+…+n的程序是

A:int sum=0,i;for(i=0;i<n;i++)sum+=i;
B:int sum=0,i;for(i=0;i<n;i++); sum+=i;
C:int sum=0,i;for(i=1;i<=n;i++); sum+=i;
D:int sum=0,i;for(i=1;i<=n;i++) sum+=i;
答案: int sum=0,i;for(i=1;i<=n;i++) sum+=i;

22、 假设整型变量n,m,i已经声明和赋值,且大于n>2.有如下运算规则:如果n是素数,m=0;否则,m=n。如下程序中正确实现此运算的是?

A:m=n;for(i=2;i<n;i++) if(n%i==0){ m=0;break; }
B:m=0;for(i=2;i<n;i++) if(n%i==0){ m=n;break; }
C:m=0;for(i=2;i<n;i++) if(n%i==0){ m=n;continue; }
D:m=n;for(i=2;i<n;i++) if(n%i==0){ m=0;continue; }
答案: m=n;for(i=2;i<n;i++) if(n%i==0){ m=0;break; }

23、 使用穷举法求解如下(1)(2)构成的方程组 (1)x+y=100; (2)2x+y/3=100;如下程序中正确的是?

A:  int x,y;  for(x=1;x<100;x++){    for(y=1;y<100;y++){        if(x+y==100&& 2x+y/3==100){            printf(“x=%d,y=%d”,x,y);        }    }  }
B:  int x,y;  for(x=1;x<100;x++){    for(y=1;y<100;y++){        if(x+y==100&& 6x+y==300){            printf(“x=%d,y=%d”,x,y);        }    }  }
C:  int x,y;  for(x=1;x<100;x++){    for(y=1;y<100;y++){        if(x+y=100&& 2
x+y/3=100){            printf(“x=%d,y=%d”,x,y);        }    }
D:  int x,y;  for(x=1;x<100;x++){    for(y=1;y<100;y++){        if(x+y=100&& 6x+y=300){            printf(“x=%d,y=%d”,x,y);        }    }
答案:   int x,y;  for(x=1;x<100;x++){    for(y=1;y<100;y++){        if(x+y==100&& 6
x+y==300){            printf(“x=%d,y=%d”,x,y);        }    }  }

主题5:迭代运算与循环结构 主题5测验

1、 下面说法错误的是()

A:当条件满足时重复执行某一段程序(代码)就是循环
B:循环体只有一条语句时,可以不写成复合语句形式
C:while语句、for语句可以相互转换
D:do…while语句可以实现前判断结构
答案: do…while语句可以实现前判断结构

2、 下面说法错误的是(   )

A:for语句通常用于循环次数已知或给定循环条件的循环处理
B:while语句可以实现直到型循环结构
C:while语句和for语句的循环体可能一次都不被执行
D:do…while语句的条件表达式在每一次执行循环体之后进行判断
答案: while语句可以实现直到型循环结构

3、 下面说法错误的是(    )

A:循环结构分为前判断结构和后判断结构
B:while语句和do…while语句可以实现标记式循环
C:可以用for语句实现的循环一定可以用while语句实现
D:do…while语句与while语句的区别仅仅是关键字while的位置不同
答案: do…while语句与while语句的区别仅仅是关键字while的位置不同

4、 下面描述错误的是(  )

A:循环体中的break语句的功能是退出循环体
B:空语句是一个只有分号而无表达式的语句
C:循环体中的continue语句的功能是终止程序的执行
D:while循环与for循环可以相互嵌套
答案: 循环体中的continue语句的功能是终止程序的执行

5、 下面说法错误的是(    )

A:各循环语句所描述的循环结构必须完整,相互之间不允许交叉
B:for语句可以嵌套while语句
C:do…while语句不能嵌套while语句,容易引起二义性
D:do-while循环体中一定要有使条件表达式的值变为零的操作
答案: do…while语句不能嵌套while语句,容易引起二义性

6、 下面说法错误的是(     )

A:break语句可退出循环体而执行该循环语句后面的语句
B:break语句可以出现在switch语句和循环语句中
C:continue语句只能出现在循环结构中
D:goto语句即可以从函数体跳出,也可以跳入函数体中
答案: goto语句即可以从函数体跳出,也可以跳入函数体中

7、 2.   设有:int x=100,y;  for(y=100;x!=y;++x,y++)       printf(“****”);  则关于以下for循环的正确判断是(     )

A:循环体只执行一次
B:是无限循环
C:循环体一次都不执行
D:for语句中存在语法错误
答案: 循环体一次都不执行

8、 与语句while(x)等价的语句是(     )

A:while(x==0)
B:while(x!=0)
C:while(x!=1)
D:while(x==1)
答案: while(x!=0)

9、 以下不是无限循环的是(    )

A:for(y=6,x=1;x<y;x+=2,y-=2) ;
B:for( ; ; ) ;
C:while(-5) x++;
D:for(i=20; ; i–) sum+=i;
答案: for(y=6,x=1;x<y;x+=2,y-=2) ;

10、 设i和k都是int类型,则for循环语句(     )for(i=0,k=-1;k=1;i++,k++) printf(“****”);

A:循环结束的条件不合法
B:循环体一次也不执行
C:循环体只执行一次
D:是死循环
答案: 是死循环

11、 设有程序段,正确的是(     )int x=10;while (x=0)     x=x-1;

A:while循环执行10次
B:循环是无限循环
C:循环体语句一次也不执行
D:循环体语句只执行一次
答案: 循环体语句一次也不执行

12、 以下程序段中的do-while循环(  )。m=-1;do{     m=m*m;}while(!m);

A:是死循环
B:执行二次
C:执行一次
D:有语法错误
答案: 执行一次

13、 语句for (表达式1;  ; 表达式3)等价于(     )

A:for (表达式1; 0 ; 表达式3)
B:for (表达式1; 1 ; 表达式3)
C:for (表达式1; 表达式1; 表达式3)
D:for (表达式1; 表达式3; 表达式3)
答案: for (表达式1; 1 ; 表达式3)

14、 若k为整型变量,则以下for循环的执行次数是(      )for  (k=2; k==0;  )    printf(“%d”,k–);

A:无限次
B:0次
C:1次
D:2次
答案: 0次

15、 若有以下程序段:  for (m=1; m<=100; m++)    {  scanf(“%d”, &y);       if (y<0)           continue;       printf(“%3d”, m);    }正确的描述是(    )

A:当y<0时整个循环结束 
B:y>=0时什么也不输出
C:printf函数永远也不执行
D:最多允许输出100个非负整数
答案: 最多允许输出100个非负整数

16、 下列关于swith语句和break语句结论中,正确的是(     )

A:break语句是swith语句中的组成部分
B:在swith语句中可以根据需要使用或不需要使用break语句
C:在swith语句中必须使用break语句
D:break语句只能在swith语句中出现
答案: 在swith语句中可以根据需要使用或不需要使用break语句 

第6周 集合数据及其处理 本周测试

1、 以下不正确的语句是__。

A:double x[3]={2.0,4.0,6,0,8.0,10.0};
B:char c1[]={‘1′,’2′,’3′,’4′,’5’};
C:char c2[]={‘\x10′,’\xa’,’\x8′};
D:int y[]={0,1,3,5,7,9};
答案: int y[]={0,1,3,5,7,9};

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

A:3
B:2
C:无确定值
D:4
答案: 3

3、 引用数组元素时,数组下标可以是____

A:实型常量
B:实型变量
C:整型常量
D:值在[0,n-1]之间的整型表达式,其中n为数组长度
答案: 值在[0,n-1]之间的整型表达式,其中n为数组长度

4、 定义了一维int型数组a[10]后,下面错误的引用是_____

A:a[10]=2;
B:a[1]=a[2]a[0];
C:a[0]=1;
D:a[0]=5
2;
答案: a[10]=2;

5、 若有说明:int a[3][4];则对a数组元素的非法引用是__

A:a[0][2*1]
B:a[0][4]
C:a[1][3]
D:a[4-2][0]
答案: a[0][4]

6、 以下能对二维数组a进行正确初始化的语句是__。

A:int a[][3]={{1,0,1},{},{1,1}};
B:int a[2][]={{1,0,1},{5,2,3}};
C:int a[][2]={{1,2,3},{4,5,6}};
D:int a[][4]={{1,2,3},{4,5},{6}};
答案: int a[][4]={{1,2,3},{4,5},{6}};

7、 若二维数组a有m列,则在a[i][j]前的元素个数为__。

A:jm+i
B:i
m+j+1
C:im+j-1
D:i
m+j
答案: i*m+j

8、 若有说明语句:int a[][3]={1,2,3,4,5,6,7,8};则a数组的行数是

A:无确定值
B:3
C:2
D:1
答案: 3

9、 定义如下变量和数组:    int k;    int a[3][3]={1,2,3,4,5,6,7,8,9};    则下面语句的输出结果是__。  for(k=0;k<3;k++) printf(“%d “,a[k][2-k]);

A:3 6 9
B:1 5 9
C:1 4 7
D:3 5 7
答案: 3 5 7

10、 下面程序的运行结果是__int main(){  int a[6],i; for(i=1;i<6;i++) {  a[i]=9(i-2+4(i>3))%5; printf(“%2d”,a[i]); } return 0;}

A:-4 0 4 0 4
B:-4 0 4 4 3
C:-4 0 4 0 3
D:-4 0 4 4 0
答案: -4 0 4 4 3

11、 定义如下的变量和数组int i;int y[2][3]={2,4,6,8,10,12}则下面语句输出结果for(i=0;i<2;i++)printf(“%d “,y[1-i][i+1]);

A:10 4
B:8 12
C:6 10
D:10 6
答案: 10 6

12、 以下程序段给数组所有的元素的输入数据,请选择正确的答案#include<stdio.h>main(){float x[5],m=0;while(m<5)scanf(“%.2f”,______);}

A:x+m
B:&x[m+1]
C:&x[++m]
D:&x[m++]
答案: &x[m++]

13、 要求下面的程序运行后,显示如下结果:2  10   4   61   5   2   32   4   7   85   1   3   2则程序中的划线处应填入_.#include <stdio.h>void main( ){ int a[4][4]={ _ };  int i,j;  for(i=0;i<4;i++)    {for(j=0;j<4;j++)  printf(“%4d”,a[i][j]);     printf(“”); } 

A:{1,5,2,3},{2,4,7,8},{5,1,3,2}
B:{2,10,4,6},{1,5,2,3},{2,4,7,8},{5,1,3,2}
C:{5,1,3,2},{2,4,7,8},{1,5,2,3}
D:{2,1,2,5},{10,5,4,1},{4,2,7,3},{6,3,8,2}
答案: {2,10,4,6},{1,5,2,3},{2,4,7,8},{5,1,3,2}

14、 执行下面的程序段后,变量a中的值为int  a=3, s[5]={1};s[0]=a;  a=s[2]*10;

A:0 
B:33
C:30
D:10
答案: 0 

15、 执行下面的程序段后,变量a中的值为int  a=3, s[5]={1,2};s[0]=a;  a=s[2]*10;

A:0
B:30
C:20
D:10
答案: 0

16、 下列程序执行后的输出结果是int a[3][3]={1,2,3,4,5,6,7,8,9};printf(“%d “,a[1][2]);

A:2
B:3
C:5 
D:6
答案: 6

17、 下列程序执行后的输出结果是int a[10]={1,2,3,4,5,6,7,8,9,10};putchar(a[1]+’a’);

A:c 
B:67
C:’a’
D:68
答案: c 

18、 以下定义一维数组语句中错误的是

A:int a[8]={0,1,2,3,4,5};
B:double a[]={0,1,2,3,4,5};
C:int a[]={‘A’,’B’,’C’};
D:int a[5]=”012345″;
答案: int a[5]=”012345″;

19、 如下程序的输出结果是int main(){ int a[10]={1,2,2,3,3,4,5,6,7},i;    int k=3; for(i=0;i<10;i++) {        if(a[i]==k){            printf(“%3d”,i);        } } return 0;}

A:1 2
B:3 4 
C:3
D:4
答案: 3 4 

20、 如下程序的输出结果是int main(){ int a[10]={1,2,2,3,3,4,5,6,7,8},i;    int k=3; for(i=0;i<10;i++) {        if(a[i]==k){            a[i]=a[i+1];        } } for(i=0;i<10;i++)        printf(“%2d”,a[i]); return 0;}

A:1 2 2 3 3 4 5 6 7 8
B:1 2 2 3 4 4 5 6 7 8
C:1 2 2 4 5 6 7 8 0 0
D:1 2 2 4 5 6 7 8 8 8
答案: 1 2 2 3 4 4 5 6 7 8

21、 如下程序的输出结果是int main(){ int a[10]={1,2,2,3,3,4,5,6,7,8},i;    int k=3; for(i=0;i<10;i++) {        if(a[i]==k){            a[i]=a[i+1];            i–;        } } for(i=0;i<10;i++)        printf(“%2d”,a[i]); return 0;}

A:死循环
B:1 2 2 3 4 4 5 6 7 8
C:1 2 2 4 5 6 7 8 0 0
D:1 2 2 4 5 6 7 8 8 8
答案: 死循环

22、 如下程序的输出结果是int main(){ int a[10]={1,2,2,3,3,4,5,6,7,8},i;    int k=3; for(i=0;i<10;i++) {        if(a[i]==k){            int j;            for(j=i;j<10-1;j++)                a[j]=a[j+1];            i–;        } } for(i=0;i<10;i++)        printf(“%2d”,a[i]); return 0;}

A:死循环
B:1 2 2 3 4 4 5 6 7 8
C:1 2 2 4 5 6 7 8 0 0
D:1 2 2 4 5 6 7 8 8 8
答案: 1 2 2 4 5 6 7 8 8 8

23、 如下程序的输出结果是int main(){ int a[10]={1,2,2,3,3,4,5,6,7,8},i;    int k=3; for(i=0;i<10;i++) {        if(a[i]==k){            int j=10-1;            while(j>i){                a[j+1]=a[j];                j–;            }        } } for(i=0;i<10;i++)        printf(“%2d”,a[i]); return 0;}

A:程序存在错误
B:1 2 2 3 3 3 4 4 5 6 7 8
C:1 2 2 3 3 0 4 4 5 6 7 8
D:1 2 2 3 3 4 4 4 5 6 7 8
答案: 1 2 2 3 3 3 4 4 5 6 7 8

24、 如下程序的输出结果是int main(){ int a[3][4]={1,2,3,4,5,6,7,8,9};    int i; for(i=0;i<3;i++) {     int j=0;     for(j=0;j<3;j++){            if(a[i][3]>a[i][j])                a[i][3]=a[i][j];     } } for(i=0;i<3;i++)        printf(“%2d”,a[i][3]); return 0;}

A:3 6 9
B:1 4 7
C:4 8 0
D:1 5 0
答案: 1 5 0

25、 如下程序的输出结果是int main(){ int a[3][4]={{1,2,3},{4,5,6},{7,8,9}};    int i; for(i=0;i<3;i++) {     int j=0;     for(j=0;j<3;j++){            a[i][3]+=a[i][j];     } } for(i=0;i<3;i++)        printf(“%5d”,a[i][3]); return 0;}

A:6 15 24
B:0 0 0
C:6 18 17
D:6 16 19
答案: 6 15 24

第7周 字符数据处理 单元测试

1、 以下不正确的语句是__。

A:double x[5]={2.0,10.0};
B:char c1[]={‘1′,’2′,’3′,’4′,’5’};
C:char c2[]={‘\x10′,’\xa’,’\x8′};
D:int y[5]={0,1,3,5,7,9};
答案: int y[5]={0,1,3,5,7,9};

2、 下面错误的初始化语句是_____

A:char str[]=”hello”;
B:char str[]={‘hello’};
C:char str[100]=”hello”;
D:char str[]={‘h’,’e’,’l’,’l’,’o’};
答案: char str[]={‘hello’};

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

A:3
B:2
C:4
D:无确定值
答案: 3

4、 引用数组元素时,数组下标可以是_____

A:整型常量
B:整型变量
C:整型表达式
D:可以为整型常量、整型变量、整型表达式,且要求大于等于0,小于等于数组长度减一
答案: 可以为整型常量、整型变量、整型表达式,且要求大于等于0,小于等于数组长度减一

5、 若有以下说明:int x[9]={1,2,3,4,5,6,7,8,9}; char c=’a’,d,f;则数值为3的表达式是(  )

A:x[f-c]
B:x[‘c’-‘d’]
C:x[‘c’-c]
D:x[3]
答案: x[‘c’-c]

6、 已有定义:char a[]=”xyz”,b[]={‘x’,’y’,’z’};,以下叙述中正确的是

A:a数组长度小于b数组长度
B:a数组长度大于b数组长度
C:数组a和b的长度相同
D:上述说法都不对
答案: a数组长度大于b数组长度

7、 定义了一维int型数组a[10]后,下面错误的引用是_____。

A:a[10]=2;
B:a[1]=a[2]a[0];
C:a[0]=1;
D:a[0]=5
2;
答案: a[10]=2;

8、 若有说明:int a[3][4];则对a数组元素的非法引用是__

A:a[0][2*1]
B:a[0][4]
C:a[1][3]
D:a[4-2][0]
答案: a[0][4]

9、 以下能对二维数组a进行正确初始化的语句是__。

A:int a[2][3]={{1,0,1},{1},{1,1}};
B:int a[2][]={{1,0,1},{5,2,3}};
C:int a[][2]={{1,2,3},{4,5,6}};
D:int a[][4]={{1,2,3},{4,5},{6}};
答案: int a[][4]={{1,2,3},{4,5},{6}};

10、 若二维数组a有m列,则在a[i][j]前的元素个数为__。

A:jm+i
B:i
m+j+1
C:im+j-1
D:i
m+j
答案: i*m+j

11、 若有语句:int a[][3]={{1,2},{3,4,5},{6},{7,8}};则a数组的行数是

A:4
B:3
C:2
D:1
答案: 4

12、 定义如下变量和数组:    int k;    int a[3][3]={1,2,3,4,5,6,7,8,9};    则下面语句的输出结果是__。for(k=0;k<3;k++) printf(“%d “,a[k][2-k]);

A:3 6 9
B:1 5 9
C:1 4 7
D:3 5 7
答案: 3 5 7

13、 下面程序的运行结果是__。    main()    {      int a[6],i;      for(i=1;i<6;i++)      { a[i]=9(i-2+4(i>3))%5;        printf(“%2d”,a[i]);      }}

A:-4 0 4 0 4
B:-4 0 4 4 3
C:-4 0 4 0 3
D:-4 0 4 4 0
答案: -4 0 4 4 3

14、 下面程序的运行结果是__。    main()    {       int a[6][6],i,j;      for(i=1;i<6;i++)      for(j=1;j<6;j++)        a[i][j]=(i/j)*(j/i);      for(i=1;i<6;i++)      { for(j=1;j<6;j++)           printf(“%2d”,a[i][j]);           printf(“”);}}

A: 1 0 0 0 0 0 1 0 0 0   0 0 1 0 0   0 0 0 1 0   0 0 0 0 1
B:1 0 0 0 10 1 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 1
C:1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
D: 0 0 0 0 1 0 0 0 1 0  0 0 1 0 0  0 1 0 0 0  1 0 0 0 0
答案:  1 0 0 0 0 0 1 0 0 0   0 0 1 0 0   0 0 0 1 0   0 0 0 0 1

15、 定义如下的变量和数组int I;int y[2][3]={2,4,6,8,10,12}则下面语句输出结果for(I=0;I<2;I++)printf(“%d,”,y[1-I][I+1]);

A:10,4
B:8,12
C:6,10
D:10,6
答案: 10,6

16、 以下程序段给数组所有的元素的输入数据,请选择正确的答案#include<stdio.h>main(){float x[5];int m=0;while(m<5)scanf(“%f”,______);}

A:x+m
B:&x[m+1]
C:&x[++m]
D:&x[m++]
答案: &x[m++]

17、 定义如下变量和数组int m;int a[2][2]={1,2,3,4};则下面语句的输出结果是for(m=0;m<2;m++;)printf(“%d,”,a[m][1-m]);

A:1,4
B:3,4
C:2,3
D:1,2
答案: 2,3

18、 下面程序的运行结果是__。    #include “stdio.h”    #include “string.h”    main()    {   char a[80]=”AB”,b[80]=”LMNP”;        int i=0;        strcat(a,b);        while(a[i++]!=’\0′) b[i]=a[i];        puts(b);}

A:LB
B:ABLMNP
C:LBLMNP
D:AB
答案: LBLMNP

19、 下面程序段的运行结果是char x[5]={‘a’,’b’,’\0’,’c’,’\0′};printf(“%s”,x);

A:’a”b’
B:abc
C:ab c
D:ab
答案: ab

20、 #include<stdio.h>main() {int A[2][3]={1,3,5}; printf(“%d”,A[1][1]);}上述程序的输出结果为____。

A:3
B:1
C:5
D:0
答案: 0

21、 要求下面的程序运行后,显示如下结果:2  10   4   61   5   2   32   4   7   85   1   3   2则程序中的划线处应填入_.#include <stdio.h>void main( ){ int a[4][4]={ _ };  int i,j;  for(i=0;i<4;i++)    {for(j=0;j<4;j++)  printf(“%4d”,a[i][j]);     printf(“”); }  

A:{1,5,2,3},{2,4,7,8},{5,1,3,2}
B:{2,10,4,6},{1,5,2,3},{2,4,7,8},{5,1,3,2}
C:{5,1,3,2},{2,4,7,8},{1,5,2,3}
D:{2,1,2,5},{10,5,4,1},{4,2,7,3},{6,3,8,2}
答案: {2,10,4,6},{1,5,2,3},{2,4,7,8},{5,1,3,2}

22、 有以下程序int main(){ char a[]={‘1’, ‘2’, ‘3’}, b[10]={‘1’, ‘2’, ‘3’};printf(“%d %d”, strlen(a), strlen(b));return 0;}以下叙述中正确的是

A:在给a和b数组置初值时,对于没给初值的元素,自动赋值为0,故输出的长度都为3
B:由于a数组中没有字符串结束符,长度不能确定;但b数组中字符串长度为3
C:由于b数组中没有字符串结束符,长度不能确定;但a数组中字符串长度为3
D:由于a和b数组中都没有字符串结束符,故长度都不能确定
答案: 在给a和b数组置初值时,对于没给初值的元素,自动赋值为0,故输出的长度都为3

23、 执行下面的程序段后,输出结果为多少char a[]={‘1’, ‘2’, ‘3’}, b[10]={‘1’, ‘2’, ‘3’};printf(“%d,%d”, sizeof(a), sizeof(b));

A:3,3 
B:4,10 
C:3,10 
D: 4,4
答案: 3,10 

24、 有以下程序int main(){ char a[]={1,2,3}, b[]={“123”};printf(“%s %s”, a, b);return 0;}

A:数组a和数组b均存储了字符串”123″
B:数组a和数组b存储的字符串长度相等
C:数组a长度小于数组b的长度
D:程序存在语法错误,不能运行。
答案: 数组a长度小于数组b的长度

25、 有以下程序int main(){ char a[100]=”Hi”,char b[]=”NEU”;strcat(a,b);printf(“%d”,strlen(a));return 0;}输出结果为

A:3
B:4
C:5
D:6
答案: 5

26、 以下程序int main(){     char words[][30]={“Hi”,”NEU”,”C”,”Programming”};    int i=0;    for(i=1;i<=3;i++){        printf(“%s”,words[i]);    }return 0;}

A:HiNEUC
B:NEUC
C:NEUCProgramming
D:HiNEUCProgramming
答案: NEUCProgramming

27、 如下程序的输出结果是int main(){ int a[10]={1,2,2,3,3,4,5,6,7},i,j;    int k=3; for(i=0;i<10;i++) {        if(a[i]==k){             for(j=i;j<9;j++) a[j]=a[j+1];        } } printf(“%d”,a[5]); return 0;}

A:4
B:5
C:6
D:7
答案: 5

28、 如下程序的输出结果是int main(){ int a[10]={1,2,3,3,4,5,6,7,8},i,j;    int k=3; for(i=0;i<10;i++) {        if(a[i]==k){             for(j=i;j<9;j++) a[j+1]=a[j];        } } printf(“%d”,a[5]);}

A:3
B:4
C:5
D:6
答案: 3

29、 如下程序的输出结果是int  main(){ char books[][20]={“English”,”Math”,”Physical”}; int i,j; for(i=0;i<3;i++) {        strcat(books[i],”book”); } printf(“%s”,&books[i-1][3]); return 0;}

A:Physicalbook
B:sical
C:Physical
D:sicalbook
答案: sicalbook

30、 如下程序的输出结果是int  main(){ char books[][20]={“English”,”Math”,”Physical”}; int i,j; for(i=0;i<3;i++) {        for(j=0;books[i][j]!=0;j++){            if(books[i][0]<books[i][j])                books[i][0]= books[i][j];        } } printf(“%c”,books[0][0]); return 0;}

A:E
B:s
C:n
D:h
答案: s

主题6:集合数据与数组 主题6测验

1、 以下为一维整型数组a的正确说明是( )

A:int a(10);
B:int n=10,a[n];
C:int n;scanf(“%d”,&n); int a[n];
D:#define SIZE 10;int a[SIZE];
答案: #define SIZE 10;int a[SIZE];

2、 以下对二维数组a的正确说明是(  )

A:int a[3][];
B:float a(3)(4);
C:double  a[1][4]; 
D:float a[3,4];
答案: double  a[1][4]; 

3、 在C语言中,引用数组元素时,其数组下标的数据类型允许是(  )。

A:整型常量
B:整型表达式
C:整型常量或整型表达式
D:任何类型的表达式
答案: 整型常量或整型表达式

4、 若有说明:int a[10]; 则对数组元素的正确引用是(  )

A:a[10]
B:a[3,5]
C:a(5)
D:a[10-10]
答案: a[10-10]

5、 以下能对一维数组a进行正确初始化的语句是(  )。

A:int a[10]=(0,0,0,0,0);
B:int a[10]={ };
C:int a[]={0}; 
D:int a[10]={10*1};
答案: int a[]={0}; 

6、 若有说明:int a[3][4];则对a数组元素的正确引用是(  )

A:a[2][4]
B:a[1,3]
C:a[1+1][0]
D:a(2)(1)
答案: a[1+1][0]

7、 若有说明:int a[3][4]={0};则下面正确的叙述是(  )。

A:只有数组元素a[0][0]可得到初值0
B:此说明语句不正确
C:数组a中各元素都可得到初值,但其值不一定为0
D:数组a中每个元素均可得到初值0
答案: 数组a中每个元素均可得到初值0

8、 对以下说明语句的正确理解是(  )。int a[10]={6,7,8,9,10};

A:将5个初值依次赋给a[1]至a[5]
B:将5个初值依次赋给a[0]至a[4]
C:将5个初值依次赋给a[6]至a[10]
D:因为数组与初值的个数不相同,所以此语句不正确
答案: 将5个初值依次赋给a[0]至a[4]

9、 定义如下变量和数组:int k;    int a[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是(  )。for(k=0;k<3;k++)printf(“%d”,a[k][2-k]);

A:3 5 7
B:3 6 9
C:1 5 9
D:1 4 7
答案: 3 5 7

10、 已知 int a[][4]={1,2,3,4,5,6,7};需要()个存储单元存储数组a。

A:7 
B:8
C:9
D:无法确定
答案: 8

11、 定义了一维int型数组a[10]后,下面错误的引用是( )。

A:a[0]=1;
B:a[10]=2;
C:a[0]=52;
D:a[1]=a[2]
a[0];
答案: a[10]=2;

12、 阅读程序,指出输出结果( )。 main() { int aa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}}; int i,s=0; for(I=0;i<4;i++) s+=aa[i][1]; printf(“%d”,s);}

A:11
B:19
C:13
D:20
答案: 19

13、 若有说明:int a[3][4];则对a数组元素的不正确引用是(  )。

A:a[0][3]
B:a[1][4]
C:a[1+1][0]
D:a[2][1]
答案: a[1][4]

14、 若有说明:int a[3][4];则对a数组元素的非法引用是(  )。

A:a[0][2*1]
B:a[1][3]
C:a[4-2][0]
D:a[0][4]
答案: a[0][4]

15、 若有说明:int a[][4]={0,0};则下面不正确的叙述是(  )。

A:数组a中的每个元素都可得到初值0
B:二维数组a的第1维大小为1
C:因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行数为1
D:只有数组元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0
答案: 只有数组元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0

16、 下面程序(  )。(每行程序前的数字为行号)1  main{}2  {3     float a[10]={0.0};4     int i;5     for(i=0;i<3;i++) scanf(%d”,&a[i]);6     for(i=1;i<10;i++) a[0]=a[0]+a[i];7     printf(“%f”,a[0]);8  }

A:没有错误
B:第3行有错误 
C:第5行有错误
D:第7行有错误
答案: 第5行有错误

17、 以下不正确的定义语句是(  )。

A:double x[5]={2.0,4,0,6,0,8,0,10.0};
B:B.int y[5]={0,1,3,5,7,9};
C:char c1[]={‘1′,’2′,’3′,’4′,’5’};
D:char c2[]={‘\x10′,’\xa’,’\x8′};
答案: B.int y[5]={0,1,3,5,7,9};

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

A:2
B:3
C:4
D:无确定值
答案: 3

19、 定义如下变量和数组:int k, a[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是(  )。for(k=0;k<3;k++) printf(“%d”,a[k][k]);

A:3 5 7
B:3 6 9
C:1 5 9
D:1 4 7
答案: 1 5 9

20、 若有以下程序段:int a[]={4,0,2,3,1},i,j,t;for(i=1;i<5;i++){      t=a[i];    j=i-1;     while(j>=0 && t>a[j])    {         a[j+1]=a[j];        j–;    }    a[j+1]=t; }则该程序段的功能是(  )。

A:对数组a进行插入排序(升序)
B:对数组a进行插入排序(降序)
C:对数组a进行选择排序(升序)
D:对数组a进行选择排序(降序)
答案: 对数组a进行插入排序(降序)


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

点击这里,购买完整答案


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

添加书签方法:

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

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

C语言程序设计(东北大学) 中国大学MOOC答案100分免费版第2张

C语言程序设计(东北大学) 中国大学MOOC答案100分免费版第3张