大学MOOC 程序设计基础(C语言)和安全-四川大学-网安学院(四川大学)1460203163 最新慕课完整章节测试答案
第1周程序设计与C语言
第1周选择题
1、单选题:
下列叙述中错误的是?
选项:
A: 计算机不能直接执行用C语言编写的源程序
B: C程序经C编译程序编译后,生成扩展名为obi的文件是一个二进制文件
C: 扩展名为obj的文件,经连接程序生成扩展名为exe的文件是一个二进制文件
D: 扩展名为obj和exe的二进制文件都可以直接运行
答案: 【 扩展名为obj和exe的二进制文件都可以直接运行】
2、单选题:
下列叙述中正确的是?
选项:
A: C语言程序将从源程序中第一个函数开始执行
B: 可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行
C: C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束
D: main可作为用户标识符,用以命名任意一个函数作为主函数
答案: 【 C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束】
3、单选题:
以下叙述中正确的是?
选项:
A: C程序中的注释只能出现在程序的开始位置和语句的后面
B: C程序书写格式严格,要求一行内只能写一个语句
C: C程序书写格式自由,一个语句可以写在多行上
D: 用C语言编写的程序只能放在一个程序文件中
答案: 【 C程序书写格式自由,一个语句可以写在多行上】
4、单选题:
下列叙述中正确的是?
选项:
A: 用C程序实现的算法必须要有输人和输出操作
B: 用C程序实现的算法可以没有输出但必须要有输人
C: 用C程序实现的算法可以没有输人但必须要有输出
D: 用C程序实现的算法可以既没有输人也没有输出
答案: 【 用C程序实现的算法可以没有输人但必须要有输出】
5、单选题:
下列叙述中错误的是?
选项:
A: 用户所定义的标识符允许使用关键字
B: 用户所定义的标识着应尽量做到“见名知意”
C: 用户所定义的标识符必须以字母或者下划线开头
D: 用户定义的标识符中,大、小写字母代表不同标识
答案: 【 用户所定义的标识符允许使用关键字】
6、单选题:
下列不合法的用户标识符是?
选项:
A: j2_KEY
B: Double
C: 4d_a
D: _8_
答案: 【 4d_a】
7、单选题:
以下选项中合法的用户标识符是?
选项:
A: long
B: _2Test
C: 3Dmax
D: A.dat
答案: 【 _2Test】
8、单选题:
结构化程序由三种基本结构组成,三种基本结构组成的算法:
选项:
A: 可以完成任何复杂的任务
B: 只能完成部分复杂的任务
C: 只能完成符合结构化的任务
D: 只能完成一些简单的任务
答案: 【 可以完成任何复杂的任务】
9、单选题:
下列叙述中错误的是?
选项:
A: C语言源程序经编译后生成扩展名为obj的目标程序
B: C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件
C: 用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中
D: C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令
答案: 【 C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令】
10、单选题:
下列选项中不属于结构化程序设计方法的是?
选项:
A: 自顶向下
B: 逐步求精
C: 模块化
D: 可复用
答案: 【 可复用】
第2周计算
小测验
1、填空题:
写出以下代码执行后,t1和t2的值,以空格隔开:int a=14;int t1 = a++;int t2 = ++a;
答案: 【 14 16】
2、填空题:
写出以下表达式的结果,结果之间间隔一个空格:6 + 5 / 4 - 22 + 2 * (2 * 2 - 2) % 2 / 310 + 9 * ((8 + 7) % 6) + 5 * 4 % 3 * 2 + 3 1 + 2 + (3 + 4) * ((5 * 6 % 7 / 8) - 9) * 10
答案: 【 5 2 44 -627】
第2周选择题
1、单选题:
C语言中,运算对象必须是整型数的运算符是
选项:
A: %
B:
C: %和
D: /
答案: 【 %】
2、单选题:
以下能正确地定义整型变量a, b和c并为它们赋初值5的语句是
选项:
A: int a=b=c=5;
B: int a, b, c=5;
C: a=5, b=5, c=5;
D: int a=5, b=5, c=5;
答案: 【 int a=5, b=5, c=5;】
3、单选题:
如下程序的执行结果是 int main (void) { int i, sum=0; for (i=1; i<=3; sum++) sum += i; printf("%dn", sum); return 0; }
选项:
A: 6
B: 3
C: 死循环
D: 0
答案: 【 死循环】
4、单选题:
下列两条语句"int c1=1, c2=2, c3; c3=1.0/c2*c1;" 执行后变量c3中的值是
选项:
A: 0
B: 0.5
C: 1
D: 2
答案: 【 0】
5、单选题:
下列程序的功能是: 给输入数据后计算半径为r的圆面积s。程序在编译时出错,原因是 int main(void) /* hangzhou */ { int r; float s; scanf ("8a",&r); s = PI * r * r; printf("s=%fn", s); return 0; }
选项:
A: 注释语句书写位置错误
B: 存放圆半径的变量r不应该定义为整型
C: 输出语句中格式描述符非法
D: 计算圆面积的赋值语句中使用了非法变量
答案: 【 计算圆面积的赋值语句中使用了非法变量】
6、单选题:
设变量已正确定义,则以下能正确计算f=n!的程序段是
选项:
A: f=0;for (i=1; i<=n; i++) f *= i;
B: f=1;for (i=1; i<n; i++) f *= i;
C: f=1;for (i=n; i>1; i++) f *= i;
D: f=1;for(i=n; i>=2; i--) f *= i;
答案: 【 f=1;for(i=n; i>=2; i--) f *= i;】
7、单选题:
下列条件语句中,功能与其他语句不同的是
选项:
A: if(a) prinf("%dn", x); else printf("%dn", y);
B: if(a==0) printf("%dn", y); else printf("%dn", x);
C: if(a!=0) print("%dn", x); else printf( "%dn", y);
D: if(a==0) printf("%dn", x); else printf("%dn", y);
答案: 【 if(a==0) printf("%dn", x); else printf("%dn", y);】
8、单选题:
下列程序的功能是 int main (void) { int i, s=0; for (i=1; i<10; i+=2) s += i+1; printf("%dn", s); return 0; }
选项:
A: 自然数1-9的累加和
B: 自然数1-10累加和
C: 自然数1-9的奇数之和
D: 自然数1-10中的偶数之和
答案: 【 自然数1-10中的偶数之和】
9、单选题:
下列程序的运行结果是 int main (void){ int a, b, c; a=20; b=30; c=10; if (a<b) a=b; if (a>=b) b=c; c=a; printf("a=%d, b=%d, c=%d", a, b, c); return 0; }
选项:
A: a=20, b=10, c=20
B: a=30, b=10, c=20
C: a=30, b=10, c=30
D: a=30, b=10, c=20
答案: 【 a=30, b=10, c=30】
10、单选题:
等比数列的第一项a=1, 公比q=2, 下面程序段计算前n项和小于100的最大n。程序划线处应填 int main (void){ int a, q, n, sum; a=1; q=2; for (n=sum=0; sum<100; n++) { sum += a; a *= q; } ____________; printf ("n=%dn", n); return 0; }
选项:
A: 空行
B: n -= 2;
C: n--;
D: n++;
答案: 【 n--;】
第3周判断与循环
小测验
1、单选题:
以下哪个循环和其他三条循环不等价(假设循环体都是一样的)?
选项:
A: for ( i=0; i<10; i++ ) {...}
B: for ( i=0; i<10; ++i ) {...}
C: for ( i=0; i++<10; ) {...}
D: for ( i=0; i<=9; i++ ) {...}
答案: 【 for ( i=0; i++<10; ) {...}】
2、判断题:
while循环的条件满足的时候循环继续,而do-while的条件满足的时候循环就结束了
选项:
A: 正确
B: 错误
答案: 【 错误】
3、填空题:
以下代码片段执行结束后,变量i的值是多少?int i =10;
while ( i>0 ) {
i /=2;
}
答案: 【 0】
4、填空题:
以下代码片段执行结束后,变量i的值是多少?int i = 1;
do {
i += 5;
} while (i<17);
答案: 【 21】
5、填空题:
以下代码段的输出是什么?for ( int i=10; i> 1; i /=2 ) {
printf("%d ", i++);
}
答案: 【 10 5 3 2】
第3周选择题
1、单选题:
若变量x、y都为int型数,以下表达式中不能正确表示数学关系|x-y|<10的是
选项:
A: abs(x-y)<10
B: x-y>-10 && x-y<10
C: (x-y)<-10 || !(y-x)>10
D: (x-y)*(x-y)<100
答案: 【 (x-y)<-10 || !(y-x)>10】
2、单选题:
若a、b、c1、c2、x、y均是整型变量,以下正确的swich语句是
选项:
A: swich(a+b): { case 1: y = a+b; break; case 0: y = a-b; break; }
B: switch(a*a+b*b): { case 3: case 1: y = a+b; break; case 3: y = b-a; break; }
C: switch(a): { case c1: y = a-b; break; case c2: x = a*d; break; default: x = a+b; }
D: switch(a-b): { default: y = a*b; break; case 3: case 4: x = a+b; break; case 10: case 11: y = a-b; break; }
答案: 【 switch(a-b): { default: y = a*b; break; case 3: case 4: x = a+b; break; case 10: case 11: y = a-b; break; }】
3、单选题:
下列程序段的输出结果是 int main (void) { int i; for (i=0; i<3; i++) switch (i) { case 1: printf("%d", i); case 2: printf("%d", i); default: printf("%d", i); } return 0; }
选项:
A: 011122
B: 012
C: 012020
D: 120
答案: 【 011122】
4、单选题:
下列程序段的输出结果是 int main (vold) { int m, k=0, s=0; for (m=1; m<=4; m++) { switch(m%4) { case 0: case 1: s+=m; break; case 2: case 3: s-=m; break; } k+=s; } printf("%d", k); return O; }
选项:
A: 10
B: -2
C: -4
D: -12
答案: 【 -4】
5、单选题:
有定义语句"int a=1, b=2, c=3, x", 则以下各程序段执行后,x的值不为3的是
选项:
A: if(c<a) x=1;else if(b<a) x=2;else x=3;
B: if(a<3) x=3;else if(a<2) x=2;else x=1;
C: if(a<3) x=3;if(a<2) x=2;if(a<1) x=1;
D: if(a<b) x=b;if(b<c) x=c;if(c<a) x=a;
答案: 【 if(a<3) x=3;if(a<2) x=2;if(a<1) x=1;】
6、单选题:
下面程序运行时如果输人"-1 2 3 3 6 2<回车>",则输出结果是 int main (void) { int t, a, b, i; for(i=1; i<=3; i++) { scanf ("%d%d", &a, &b); if(a>b) t = a-b; else if(a==b) t = 1; else t = b-a; printf("%d", t); } return 0; }
选项:
A: 304
B: 314
C: 134
D: 316
答案: 【 314】
7、单选题:
下列程序运行时输人"7mazon<回车>",则输出结果是 int main (void) { char c; int i; for(i=1; i<=5; i++) { c = getchar(); if(c>='a' && c<='u') c+=5; else if(c>='v' && c<='z') c='a'+c-'v'; putchar(c); } return 0; }
选项:
A: 7rfet
B: 7rfets
C: rfet
D: rfets
答案: 【 7rfet】
8、单选题:
下列程序段运行时从键盘上输人"2.0<回车>",则输出结果是 int main(void) { float x, y; scanf("%f", &x); if(x<0.0) y = 0.0; else if((x<5.0) && (x!=2.0)) y = 1.0/(x+2.0); else if(x<10.0) y = 1.0/x; else y=10.0; printf ("%fn", y); return 0; }
选项:
A: 0.000000
B: 0.250000
C: 0.500000
D: 1.000000
答案: 【 0.500000】
9、单选题:
下列程序段的输出结果是 int main (void){ int x=100, a=10, b=20, ok1=5, ok2=0; if(a<b) if(b!=15) if(!ok1) x=1; else if(ok2) x=10; x=-1; printf("%dn", x); return 0; }
选项:
A: -1
B: 0
C: 1
D: 不确定的值
答案: 【 -1】
10、单选题:
下列程序段运行后x的值是 int a=0, b=0, c=0, x=35; if(!a) x--; else if(b); if(c) x=3; else x=4;
选项:
A: 34
B: 4
C: 35
D: 3
答案: 【 4】
第4周进一步的判断与循环
小测验
1、单选题:
以下哪种运算能从变量x中取得十进制最低位的数字
选项:
A: x /10
B: x % 10
C: x * 10
D: 10 / x
答案: 【 x % 10】
2、填空题:
当需要累加一些值的时候,用来记录累加结果的变量应该被初始为:
答案: 【 0】
第4周选择题
1、单选题:
执行下面的程序后变量a的值为 int main (void) { int a, b; for(a=1,b=1; a<=100; a++){ if (b>10) break; if (b%3 == 1) { b+=3; continue; } b-=3; } return 0; }
选项:
A: 13
B: 7
C: 5
D: 10
答案: 【 5】
2、单选题:
下列程序段的输出结果是 int main (void) { int i, j, x=0; for (i=0; i<2: i++) { for (j=0; j<=3; j++) { if(j%2) continue; x++; } x++; } printf("x=%dn", x); return 0; }
选项:
A: x=4
B: x=8
C: x=6
D: x=12
答案: 【 x=6】
3、单选题:
3. 以下程序段的输出结果是 int main (void) { int i=0, s=0; do { if (i%2){ i++; continue; } i++; s+=i; } while(i<7); printf("%dn",s); return 0; }
选项:
A: 16
B: 12
C: 28
D: 21
答案: 【 16】
4、单选题:
以下程序段若要使输出值为2,则应该从键盘给n输人的值是 int main (void) { int s=0, a=1, n; scanf("%d", &n); do { s+=1; a=a-2; } while(a!=n); printf("%dn",s); return 0; }
选项:
A: -1
B: -3
C: -5
D: 0
答案: 【 -3】
5、单选题:
要求以下程序的功能是计算: s=1 + 1/2 + 1/3 + ... + 1/10, 但运行后输出结果错误,导致错误结果的程序行是 int main (void){ int n; float s; s=1.0; for(n=10; n>1; n--) s=s+1/n; printf("%6.4fn",s); return 0; }
选项:
A: int n; float s;
B: for(n=10; n>1; n--) s=s+1/n;
C: s=s+1/n;
D: s=1.0;
答案: 【 s=s+1/n;】
6、单选题:
以下程序段的输出结果是 int i,j; for (i=1; i<4; i++){ for(j=i; j<4; j++) printf("%d*%d=%d", i, j, i*j); printf("n"); }
选项:
A: 1*1=1 1*2=2 1*3=32*1=2 2*2=43*1=3
B: 1*1=1 1*2=2 1*3=32*2=4 2*3=63*3=9
C: 1*1=11*2=2 2*2=41*3=3 2*3=6 3*3=9
D: 1*1=12*1=2 2*2=43*1=3 3*2=6 3*3=9
答案: 【 1*1=1 1*2=2 1*3=32*2=4 2*3=63*3=9】
7、单选题:
以下程序段的输出结果是 for(int i=1; i<=5; i++) { if(i%2) printf("<"); else continue; printf(">"); } printf("$");
选项:
A: <><><>$
B: <<<$
C: <><>$
D: <<<>>>$
答案: 【 <><><>$】
8、单选题:
若i, j已定义为int类型,则以下程序段中内循环体的总的执行次数是 for(i=5; i; i--) for(j=0; j<4; j++){...}
选项:
A: 20
B: 25
C: 24
D: 30
答案: 【 20】
9、单选题:
以下程序段的输出结果是 int i, j; for(j=10; j<11; j++) for(i=9; i==j-1; i++) printf("%d", j);
选项:
A: 11
B: 10
C: 9
D: 1011
答案: 【 10】
10、单选题:
以下程序段的输出结果是 int n=9; while (n>6){ n--; printf("%d", n); }
选项:
A: 987
B: 876
C: 8765
D: 9876
答案: 【 876】
11、单选题:
以下程序段的输出结果是 int x=23; do { printf("%d", x--); } white (!x);
选项:
A: 321
B: 23
C: 22
D: 死循环
答案: 【 23】
12、单选题:
以下程序的功能是: 按顺序读人10名学生4门课程的成绩,计算每位学生的平均分并输出,但运行后结果不正确,调试中发现有一条语句出现的位置不正确。这条语句是 int main (void) { int n, k; float score, sum, ave; sum=0.0; for(n=1; n<=10; n++) { for(k=1; k<=4; k++)  
