大学MOOC 2016秋C语言程序设计(哈尔滨学院)(中国高校计算机教育大学MOOC联盟)1001772001 最新慕课完整章节测试答案
第一周从问题到C语言程序设计
文章目录
1.1-测试题
1、多选题:
算法的描述方法除了自然语言之外,还包括:
选项:
A: 流程图
B: NS流程图
C: 伪代码
D: 程序语言
答案: 【 流程图;
NS流程图;
伪代码;
程序语言】
2、多选题:
结构化程序设计方法包含三种基本结构:
选项:
A: 顺序结构
B: 选择结构
C: 循环结构
D: 跳转结构
答案: 【 顺序结构;
选择结构;
循环结构】
3、判断题:
goto语句很方便,应该随意使用
选项:
A: 正确
B: 错误
答案: 【 错误】
4、判断题:
程序设计包括以下五个步骤:(1)确定问题可计算;(2)建立问题的数学模型;(3)设计算法和数据结构;(4)选择合适的计算机语言编写程序;(5)调试运行程序分析结果。这种说法正确吗?
选项:
A: 正确
B: 错误
答案: 【 正确】
5、判断题:
算法的特征包括:有穷性,确定性,有效性,有零或多个输入,有一或多个输出。这种说法正确吗?
选项:
A: 正确
B: 错误
答案: 【 正确】
6、填空题:
计算复杂度包括【 】复杂度和空间复杂度。
答案: 【 时间】
第二周数据计算实现与顺序结构程序设计一
小测验2.1
1、单选题:
以下程序的输出结果是____。 #include <stdio.h>
main( )
{ int x=10, y=10;
printf("%d %dn", x--, --y);
}
选项:
A: 10 10
B: 9 9
C: 9 10
D: 10 9
答案: 【 10 9】
小测验2.2
1、单选题:
已知:x=10,y=2; 表达式x-5<=x+y的值是____
选项:
A: 0
B: 1
C: 11
D: 9
答案: 【 1】
第二周作业
1、单选题:
已知:char a;int b;float c;double d;执行语句 c=a+b+c+d;后,变量c的数据类型是____
选项:
A: float
B: int
C: char
D: double
答案: 【 float】
2、单选题:
已知 int i=5;执行语句 i+=++i;i的值是____
选项:
A: 12
B: 10
C: 11
D: 其他答案都不对
答案: 【 12】
3、单选题:
已知int x=5,y=5,z=5;执行语句x%=y+z;后,x的值是____
选项:
A: 5
B: 0
C: 1
D: 6
答案: 【 5】
4、单选题:
下列可以正确表示字符型常数的是____
选项:
A: 't’
B: "a"
C: "n"
D: 297
答案: 【 't’】
5、单选题:
字符串"\65a,n"的长度是____
选项:
A: 5
B: 8
C: 7
D: 6
答案: 【 5】
6、单选题:
把算术表达式
表示为一个C语言表达式,正确的写法是____
选项:
A: –(31.6*a*8+1.0/7)*12
B: –(31.6a*8+1/7)*12
C: –(31.6a*8.0+1.0/7.0)*12
D: –31.6*a*8+1.0/7*12
答案: 【 –(31.6*a*8+1.0/7)*12】
7、单选题:
温度华氏和摄氏的关系是: C=5(F-32)/9。已知:float C,F;由华氏求摄氏的正确的赋值表达式是____
选项:
A: C=5*(F-32)/9
B: C=5/9(F-32)
C: C=5/9*(F-32)
D: 三个表达式都正确
答案: 【 C=5*(F-32)/9】
8、单选题:
已知int i=10;表达式“20-0<=i<=9”的值是____
选项:
A: 1
B: 0
C: 19
D: 20
答案: 【 1】
9、单选题:
已知:int x,y;double z;则以下语句中错误的函数调用是____
选项:
A: scanf ("%x%o%6.2f",&x,&y,&z)
B: scanf ("%d,%lx,%le",&x,&y,&z)
C: scanf ("%2d%d%lf",&x,&y,&z)
D: scanf ("%x%*d%o",&x,&y)
答案: 【 scanf ("%x%o%6.2f",&x,&y,&z)】
10、单选题:
已知” int a=5,b=5,c;”,则执行表达式” c=a=a>b”后变量 a 的值为____
选项:
A: 0
B: 1
C: 4
D: 5
答案: 【 0】
第三周数据计算实现与顺序结构程序设计二
本节作业
1、填空题:
假设a和b都是16位二进制整数,它们的值分别是:a: 1010,1001,0101,0111b: 0110,0000,1111,1011则c=(a>>2)|~b运算后,c的二进制表示为 。
答案: 【 1011111101010101##%_YZPRLFH_%##1011,1111,0101,0101】
本节测验
1、单选题:
[4]
选项:
A: x1,x2
B: x1;x2
C: &x1,&x2
D: &x1;&x2
答案: 【 x1,x2】
2、单选题:
[3]
选项:
A: (-b-q)/(2*a)
B: -b-q/2*a
C: (-b-q)/2a
D: (-b-q)/2*a
答案: 【 (-b-q)/(2*a)】
3、单选题:
请选择正确的语句来完善程序,完成如下的功能:
求一元二次方程
的根。
#include <math.h>
int main()
{ float a, b, c, x1, x2, q;
printf("Please input a, b, cn");
scanf("%f,%f,%f",&a,&b, [1] );
q=sqrt( [2] );
x1=(-b+q)/(2*a);
x2= [3] ;
printf("x1=%.0f, x2=%.0fn", [4] );
}
[1]
选项:
A: c
B: &c
C: %c
D: f
答案: 【 &c】
4、单选题:
[2]
选项:
A: b*b-4*a*c
B: 4*a*c-b*b
C: b^2-4ac
D: 4ac-b^2
答案: 【 b*b-4*a*c】
第四周选择结构的程序设计
小测验1
1、单选题:
执行下列程序段后,x、y和z的值分别是 int x=10,y=20,z=30;
if(x>y) z=x;x=y;y=z;
选项:
A: 10,20,30
B: 20,30,30
C: 20,30,10
D: 20,30,20
答案: 【 20,30,30】
小测验2
1、单选题:
if语句的控制条件 。
选项:
A: 只能用关系表达式
B: 只能用关系表达式或逻辑表达式
C: 只能用逻辑表达式
D: 可以用任何表达式
答案: 【 可以用任何表达式】
小测验3
1、单选题:
下面的程序片段所表示的数学函数关系是 y=-1;
if (x!=0) { if (x>0) y=1;}
else y=0;
选项:
A: 
B: 
C: 
D: 
答案: 【 
】
小测验4
1、单选题:
若a和b均是整型变量,以下正确的switch语句是
选项:
A: A. switch (a/b)
{ case 1: case 3.2: y=a+b; break ;
case 0: case 5: y=a-b;
}
B: B. switch (a*a+b*b);
{case 3:
case 1: y=a+b; break ;
case 0: y=b-a; break; }
C: C. switch a
{ default : x=a+b;
case 10 : y=a-b;break;
case 11 : y=a*d; break; }
D: D. switch(a+b)
{case 10: x=a+b; break;
case 11: y=a-b; break;
}
答案: 【 D. switch(a+b)
{case 10: x=a+b; break;
case 11: y=a-b; break;
}】
小测验5
1、单选题:
以下程序的输出结果是____main( )
{ int w=4,x=3,y=2,z=1;
if(x>y&&!(z==w))printf(”%dn”,(w<x?w:z<y?z:x));
else printf(”%dn”, (w>x?w:z>y?z:x));
}
选项:
A: 1
B: 2
C: 3
D: 4
答案: 【 1】
2、填空题:
if (!k) a=3;语句中的!k可以改写为 ,使其功能不变。
答案: 【 k==0】
3、填空题:
以下程序的输出是 main( )
{ int a=0, b=0, c=0;
if (a=b+c) printf (”*** a=%dn”, a);
else printf (”$$$ a=%dn”, a);
}
答案: 【 $$$ a=0】
第四周作业
1、单选题:
下面程序的输出是 #include <stdio.h>
main ( )
{ int x=1, y=0, a=0, b=0;
switch ( x )
{ case 1: switch ( y )
{ case 0: a++; break;
case 1: b++; break;
}
case 2: a++; b++;
break;
}
printf ("a=%d,b=%dn", a, b );
}
选项:
A: a=2,b=1
B: a=1,b=1
C: a=1,b=0
D: a=2,b=2
答案: 【 a=2,b=1】
2、单选题:
以下程序的输出结果是 main( )
{ float x=2,y;
if (x<0) y=0;
else if (x<5&&!x) y=1/(x+2);
else if (x<10) y=1/x;
else y=10;
printf(”%fn”,y);
}
选项:
A: 0.500000
B: 0.000000
C: 0.250000
D: 10.000000
答案: 【 0.500000】
3、填空题:
若下列程序执行后t的值为4,则执行时输入a,b的值范围是 #include ”stdio.h”
main( )
{ int a, b, s=1, t=1;
scanf (”%d, %d”, &a, &b);
if (a>0) s+=1;
if (a>b) t+=s;
else if(a==b) t=5;
else t = 2*s;
printf (”s=%d, t=%dn”, s,t);
}
答案: 【 0<a<b】
4、填空题:
下列程序段当a的值为014和0x14时的执行结果分别是 if ( a=0xA | a >12 )
if ( 011&10==a ) printf (”%d!n”,a);
else printf (”Right!%dn”,a);
else printf (”Wrong!%dn”,a);
答案: 【 10! Right!11】
第五周循环结构的程序设计一
小测验1
1、单选题:
下列程序执行的结果是 a=1;b=2;c=3;
while(a<b<c) {t=a;a=b;b=t;c--;}
printf(”%d,%d,%d”,a,b,c);
选项:
A: 1,2,0
B: 2,1,0
C: 1,2,1
D: 2,1,1
答案: 【 1,2,1】
小测验2
1、单选题:
指出程序结束之时,j、i、k的值分别是 main( )
{ int a=10,b=5,c=5,d=5,i=0,j=0,k=0;
for (;a>b;++b) i++;
while (a>++c) j++;
do k++; while (a>d++);
}
选项:
A: j=5,i=4,k=6;
B: i=5,j=4,k=6;
C: j=6,i=5,k=7;
D: j=6,i=6,k=6;
答案: 【 i=5,j=4,k=6;】
2、单选题:
下列程序段 x=3;
do{ y = x--;
if ( !y ) { printf(”x”); continue; }
printf(”#”);
} while(1<=x<=2);
选项:
A: 输出 ##
B: 输出 ##x
C: 是死循环
D: 有语法错
答案: 【 是死循环】
小测验3
1、单选题:
下面程序的功能是计算1-3+5-7+ …… -99+101的值。 ① main()
{ int i,t=1,s=0;
for(i=1;i<=101;i+=2)
{ ① ;
s=s+t;
② ;
}
printf(”%dn”,s};
}
选项:
A: t = i * t
B: t = i * (t+1)
C: t = (i+1)* t
D: t = (i-1) * t
答案: 【 t = i * t 】
2、单选题:
②
选项:
A: t = s
B: t = -s
C: t = s > 0 ? -1 : 1
D: t = s < 0 ? -1 : 1
答案: 【 t = s > 0 ? -1 : 1】
3、判断题:
for语句的三个表达式都是必须的。
选项:
A: 正确
B: 错误
答案: 【 错误】
小测验4
1、单选题:
下面程序的功能是从键盘上输入若干学生的学习成绩,统计并输出最高成绩和最低成绩,当输入为负数时结束输入。 ① main()
{ float x,amax,amin;
scanf(”%f”,&x);
amax=x;
amin=x;
while( ① )
{ if(x>amax) amax=x;
if( ② ) amin=x;
scanf(”%f”,&x);
}
printf(”namax=%fnamin=%fn”,amax,amin);
}
选项:
A: x >= 0
B: x <= 0
C: x > 0
D: x < 0
答案: 【 x >= 0】
2、单选题:
②
选项:
A: x <= amin
B: x > amin
C: x < amin
D: x >= amin
答案: 【 x < amin】
第六周循环结构的程序设计二
小测验1
1、单选题:
下面程序的输出结果是 #include<stdio.h>
int main( )
{ int i,j;
float s;
for(i=6;i>4;i--)
{s=0.0;
for(j=i;j>3;j--)s=s+i*j;
}
printf(”%fn”,s);
}
选项:
A: 135.000000
B: 90.000000
C: 45.000000
D: 60.000000
答案: 【 45.000000】
小测验2
1、单选题:
下列说法中正确的是
选项:
A: break 可以用在任何选择和循环结构与居中
B: break 可以用在switch结构和任何循环结构中
C: continue可以用在switch结构和任何循环结构中
D: continue的功能是结束当前所在的循环
答案: 【 break 可以用在switch结构和任何循环结构中】
第六周作业
1、单选题:
求取满足式
的n,正确的语句是____
选项:
A: for(i=1,s=0;(s=s+i*i)<=1000;n=i++)
B: for(i=1,s=0;(s=s+i*i)<=1000;n=++i)
C: for(i=1,s=0;(s=s+i*++i)<=1000;n=i)
D: for(i=1,s=0;(s=s+i*i++)<=1000;n=i)
答案: 【 for(i=1,s=0;(s=s+i*i)<=1000;n=i++)】
2、单选题:
下面的for语句 for(x=0,y=10;(y>0)&&(x<4);x++,y-- )
选项:
A: 循环执行4次
B: 是无限循环
C: 循环次数不定
D: 循环执行3次
答案: 【 循环执行4次】
3、单选题:
已知int i=1; 执行语句while (i++<4) ;后,变量i的值为
选项:
A: 5
B: 3
C: 4
D: 6
答案: 【 5】
4、单选题:
下面程序的输出结果是____ main()
{ int i,j,x=0;
for(i=0;i<2;i++)
{ x++;
for(j=0;j<-3;j++)
{ if(j%2)
continue;
x++;
}
x++;
}
printf(”x=%dn”,x);
}
选项:
A: x=4
B: x=8
C: x=6
D: x=12
答案: 【 x=4 】
5、单选题:
假定从键盘上输入“3.6,2.4<回车>”,下面程序的输出是____ #include <math.h>
main()
{ float x,y,z;
scanf(”%f,%f”,&x,&y);
z=x/y;
while(1)
{ if(fabs(z)>1.0)
{ x=y;
y=z;
z=x/y;
}
else break;
}
printf(”%fn”,y);
}注:fabs()是浮点数绝对值函数。
选项:
A: 1.600000
B: 1.500000
C: 2.000000
D: 2.400000
答案: 【 1.600000】
第七周数组一
小测验1
1、单选题:
下面程序的输出结果是____。#include <stdio.h>
main( )
{ int i,k,a[10],p[3];
k=5;
for(i=0;i<10;i++)
a[i]=i;
for(i=0;i<3;i++)
p[i]=a[i*(i+1)];
for(i=0;i<3;i++)
k+=p[i]*2;
printf(”%dn”,k);
}
选项:
A: 20
B: 21
C: 22
D: 23
答案: 【 21】
小测验2
1、单选题:
以下程序的功能:输入30个人的年龄,统计18岁、19岁、……、25岁各有多少人。填空,使程序正确。main( )
{ int i,n,age,a[30]={0};
for(i=0;i<30;i++)
{ scanf(”%d”,&age);
__(1)__; }
printf(”age numbern”);
for(__(2)__;i++) printf(”%5d %6dn”,i,a[i]);
}
选项:
A: (1)for(n=18;n<25;n++)
{
if (age==n)
a[n]++;
}
(2)i=18;i<=25
B: (1)for(n=18;n<=25;n++)
{
if (age==n)
a[n]++;
}
(2)i=18;i<=25
C: (1)for(n=18;n<25;n++)
{
if (age=n)
a[n]++;
}
(2)i=18;i<=25
D: (1)for(n=18;n<25;n++) { if (age==n) a[n]++; }(2)i=18;i<25
答案: 【 (1)for(n=18;n<=25;n++)
{
if (age==n)
a[n]++;
}
(2)i=18;i<=25】
小测验3
1、单选题:
以下程序的功能: 在给定数组中查找某个数,若找到,则输出该数在数组中的位置,否则输出“can not found!”。填空,使程序正确。main( )
{ int i,n,a[8]={25,21,57,34,12,9,4,44};
scanf(”%d”,&n);
for(i=0;i<8;i++)
if(n==a[i])
{ printf(”The index is %dn”,i);
__(1)__ ; }
if(__(2)__) printf(”can not found!n”);
}
选项:
A: (1) end(2) i==8
B: (1) break(2) i==0
C: (1) break(2) i==8
D: (1) end(2) i==0
答案: 【 (1) break(2) i==8】
第八周数组二
小测验1
1、单选题:
以下正确的数组定义语句是____。
选项:
A: int y[2][3] = {1,2,3,4,5,6};
B: float x[3][ ] = {{1},{2},{3}};
C: long s[2][3] = {{1},{1,2},{1,2,3}};
D: double t[ ][3] = {0};
答案: 【 int y[2][3] = {1,2,3,4,5,6};】
2、单选题:
若有说明: int a[ ][4];则a[i][j]前有____个元素。
选项:
A: j*4+i
B: i*4+j
C: i*4+j-1
D: i*4+j+1
答案: 【 i*4+j】
小测验2
1、填空题:
求出如下所示矩阵中各行元素之和,并以矩阵形式输出原矩阵及相应行元素之和。请填空,使程序正确。

#include "stdio.h"
int main( )
{ int i,j;
static int a[3][4]={{3,5,6,0},{2,1,4,0},{8,7,1,0}};
for(i=0;i<3;i++)
for(j=0;j<3;j++)
a[i][3]+= __(1)__;
for(i=0;i<3;i++)
for( _(2)___ )
{ printf(”%3d”,a[i][j]);
if( _(3)___ ) printf( __(4)__ );}
}
答案: 【 (1)a[i][j] (2)j = 0; j < 4; j++ (3)j == 3 (4)"n"】
小测验3
1、单选题:
以下程序的输出是 ___。main( )
{char a[2][5]={”6937”,”8254”}; int i,j,s=0;
for ( i = 0; i < 2; i++ )
for ( j = 0; a[i][j]>’0’ && a[i][j]<=’9’; j+=2 )
s=10*s+a[i][j]-’0’;
printf(”s=%dn”,s);
}
选项:
A: 6385
B: 69825
C: 63825
D: 693825
答案: 【 6385】
2、填空题:
以下程序的功能:输入10个字符串,找出每个字符串的最大字符,并依次存入一维数组中,然后输出该一维数组。请填空使程序正确。#include ”stdio.h”
main( )
{ int j,k; char a[10][80],b[10];
for(j=0;j<10;j++) gets(a[i]);
for(j=0,j<10;j++)
{ _(1)___;
for(k=1;a[j][k]!=’’;k++)
if(b[j]<a[j][k]) _(2)___;
}
for(j=0,j<10;j++)
printf(”%d %cn”,j,b[j]);
}
答案: 【 (1)b[j] = a[j][0] (2)b[j] = a[j][k]】
小测验4
1、填空题:
有一名室内装潢工程队的配料员,他很擅长采用“之”字型的方式铺大理石地砖,图案如下:1 2 6 7 15 3 5 8 14 16 4 9 13 17 22 10 12 18 21 23 11 19 20 24 25 以下是生成这样图形的程序,请帮助补充完整:#include "stdio.h"
int main()
{
int a[10][10],s=0,n,i=1,j=1,t=0;
scanf("%d",&n);
while (i<n||j<n)
{
s+=1;
a[i-1] __(1)_____=s;
if(t)
if (j==1)
{t=0;if (n==i) j+=1; else i+=1;}
else
if(n==i)
{t=0;j+=1;}
else
{i+=1;j-=1;}
else
if (i==1)
{t=1;if (n==j) i+=1;else j+=1;}
else
if (n==j)
{t=1;i+=1;}
else{i-=1;j+=1;}
}
a[n-1][n-1]=s+1;
if (n>1)
for(i=1;i<=n;i++)
{printf("%2d",a[i-1][0]);
for(j=2;j<=n;j++)
printf("%3d",a[i-1][j-1]);
___(2)____;}
else
printf("1n");
return 0;
}
答案: 【 (1)[j-1] (2)printf("n")】
