大学MOOC C语言程序设计(北京联合大学)1451628181 最新慕课完整章节测试答案
第1周——C语言概述
文章目录
变量在内存中所占的字节数
1、单选题:
C语言用sizeof计算变量在内存中的字节数,其中sizeof是()
选项:
A: 函数
B: 运算符
C: 标识符
D: 语句
答案: 【 运算符】
宏常量与const常量
1、单选题:
宏定义是()
选项:
A: 一条语句
B: 一种编译预处理指令
C: 一个标识符
D: 一个变量
答案: 【 一种编译预处理指令】
2、判断题:
const常量有数据类型。
选项:
A: 正确
B: 错误
答案: 【 正确】
练兵区——单选题——不计入总分
1、单选题:
下列选项中,合法的C语言标识符是
选项:
A: _a1
B: width
C: #abc123
D: 123abc
E: o*k
F: a?
G: a+b
H: %a
I: b!
答案: 【 _a1;
width】
2、单选题:
以下不适合定义为用户标识符的是
选项:
A: float
B: main
C: define
D: _3com_
E: PI
F: Source
G: abc
答案: 【 float ;
main;
define】
3、单选题:
#include <stdio.h>是
选项:
A: 编译预处理指令
B: 语句
C: 函数
D: 什么都不是
E: 有语法错误
答案: 【 编译预处理指令】
4、单选题:
在windows下,程序编译链接后形成的可执行文件是
选项:
A: .obj文件
B: .exe文件
C: .o文件
D: .c文件
E: .h文件
答案: 【 .exe文件】
5、单选题:
程序编译链接后显示" 0 error,0 warning" 代表
选项:
A: 程序中没有语法错误
B: 程序是正确的
C: 程序是不正确的
D: 程序中可能存在语法错误
E: 程序中有语义错误
答案: 【 程序中没有语法错误】
6、单选题:
关于可执行文件说法正确的是
选项:
A: 可执行文件是编译链接后生成的文件
B: 可执行文件就是源代码文件
C: 可执行文件后缀为.obj
D: 可执行文件就是main.c文件
答案: 【 可执行文件是编译链接后生成的文件】
7、单选题:
若变量a是int类型,并执行了语句:a='A'+1.6;,则正确的叙述是
选项:
A: 'A'+1.6的结果是浮点型
B: a的值还是整型
C: a的值是字符C
D: a的值是浮点型
E: 不允许字符型和浮点型相加
答案: 【 'A'+1.6的结果是浮点型;
a的值还是整型】
8、单选题:
程序的开发步骤中不包括
选项:
A: 撰写文档
B: 运行程序
C: 编译链接
D: 程序测试
E: 编辑(编写代码)
答案: 【 撰写文档】
9、单选题:
若有定义:int a=8,b=5,c; ,执行语句c=a/b+0.4;后,c的值为
选项:
A: 1
B: 1.4
C: 2.0
D: 2
答案: 【 1】
10、单选题:
在C语言中,字符型数据在内存中以字符的( )形式存放
选项:
A: ASCII码
B: 国标码
C: BCD码
D: 反码
答案: 【 ASCII码】
11、单选题:
以下符合C语言语法的实型常量是
选项:
A: 5e-3
B: 3.14.159e
C: 1.2e0.5
D: e15
答案: 【 5e-3】
12、单选题:
以下选项中可作为C语言合法整数的是
选项:
A: 0xffa
B: 10110B
C: 038x
D: x2a2
答案: 【 0xffa】
13、单选题:
下列说法正确的是
选项:
A: 在C语言中,变量必须先定义后使用。
B: 一条变量定义语句可定义多个同类型的变量。
C: C89规定所有变量必须在第一条可执行语句前定义。
D: const常量只能在定义时赋值。
E: 一条变量定义语句不可以同时定义多个变量。
F: 不同类型的变量分配的存储空间大小都是相同的。
G: 在C语言中,所有变量都必须在定义时进行初始化。
H: 变量在没有初始化的时候,其值都是0
I: 宏常量有数据类型,编译器在宏替换时可以进行类型检查。
答案: 【 在C语言中,变量必须先定义后使用。;
一条变量定义语句可定义多个同类型的变量。;
C89规定所有变量必须在第一条可执行语句前定义。;
const常量只能在定义时赋值。】
14、单选题:
下列变量定义中合法的是
选项:
A: long ao=0xfdaL;
B: short _a=1-.1e-1;
C: double b=1+5e2.5;
D: float 2_and=1-e-3;
答案: 【 long ao=0xfdaL;】
第2周——顺序结构程序设计
不同类型数据的运算
1、判断题:
通常情况下,不同类型数据的运算结果的类型是取值范围较大的那种类型。
选项:
A: 正确
B: 错误
答案: 【 正确】
在定义变量的时候对变量进行初始化
1、单选题:
下列语句中错误的是()。
选项:
A: int a, b, c;a=b=c=0;
B: int a, b, c;a=0;b=0;c=0;
C: int a=0;int b=0;int c=0;
D: int a=b=c=0;
答案: 【 int a=b=c=0;】
强制类型转换
1、判断题:
强制类型转换运算符就是强制改变一个变量原有的数据类型。
选项:
A: 正确
B: 错误
答案: 【 错误】
练兵区——单选题——不计入总分
1、单选题:
设有语句“int a = 3;”,执行语句“a += a -= a * a;”后,变量a的值是
选项:
A: -12
B: 3
C: 0
D: 9
答案: 【 -12】
2、单选题:
在C程序中如果要使用数学函数,如sin(x),log(x)等,需要在程序中加入的语句是
选项:
A: #include <math.h>
B: #include <stdio.h>
C: #define <math.h>
D: #define <stdio.h>
答案: 【 #include <math.h>】
3、单选题:
下列关于单目运算符++、--的叙述中正确的是
选项:
A: a++的运算过程是:先使用变量a的值,然后再执行a=a+1。
B: ++a的运算过程是:先使用变量a的值,然后再执行a=a+1。
C: a++的运算过程是:先执行a=a+1,然后再使用变量a的值。
D: a++和++a都是最终使变量a执行a=a+1,因此对于包含a++或++a的表达式而言(如j=a++;或者j=++a;),两种情况下表达式的最终运算结果一定是相同的。
答案: 【 a++的运算过程是:先使用变量a的值,然后再执行a=a+1。】
4、单选题:
以下程序的输出结果是:#include <stdio.h>
int main()
{
int a=1, b=2;
a=a+b;
b=a-b;
a=a-b;
printf("%d,%dn", a, b );
return 0;
}
选项:
A: 2,1
B: 3,1
C: 3,2
D: 1,2
答案: 【 2,1】
5、单选题:
在下面的C语言语句中,存在错误的是
选项:
A: int a=b=10;
B: int a=10,b=10;
C: int a,b;a=b=10;
D: int a,b;a=10;b=10;
答案: 【 int a=b=10;】
6、单选题:
在C语言中对下面的语句而言,哪个说法是错误的?int a, b;
选项:
A: 变量a和b中的值都是0
B: 变量a和b中都没有数值
C: 变量a和b中的值都是未知的随机数
D: a和b都是整型变量
E: 变量a和b占用的内存空间的大小是相同的
答案: 【 变量a和b中的值都是0;
变量a和b中都没有数值】
7、单选题:
下列程序的输出结果是#include <stdio.h>
int main()
{
int a=7,b=5;
printf("%dn",b/a);
return 0;
}
选项:
A: 0
B: 5
C: 1
D: 0.7
答案: 【 0】
8、单选题:
程序运行后的输出结果是#include <stdio.h>
int main()
{
int m=3,n=4,x;
x=m++;
++n;
x=x+8/n;
printf("%d,%dn",x,m);
return 0;
}
选项:
A: 4,4
B: 4,3
C: 5,4
D: 5,3
答案: 【 4,4】
9、单选题:
以下非法的赋值语句是
选项:
A: ++(i+1);
B: x=(j--);
C: n=++i;
D: j++;
答案: 【 ++(i+1);】
10、单选题:
已知int a,b;并且有a=5%3;以及b=5/3;,则a和b的值分别是
选项:
A: 2和1
B: 0和1.67
C: 3和1
D: 5和1
E: 0和1
F: 3和1.67
G: 5和1.67
答案: 【 2和1】
11、单选题:
在C语言中,要求操作数必须是整型的运算符是
选项:
A: %
B: /
C: *
D: +
E: -
答案: 【 %】
12、单选题:
程序运行后的输出结果是#include <stdio.h>
int main()
{
char a='a';
printf("%c,",++a);
printf("%cn",a++);
return 0;
}
选项:
A: b,b
B: b,c
C: a,b
D: a,c
答案: 【 b,b】
13、单选题:
若以下选项中的变量已正确定义,则正确的赋值语句是
选项:
A: x3=x2=x1=0;
B: x1=26.8%3;
C: 1+2=x2;
D: x4=1+2=3;
答案: 【 x3=x2=x1=0; 】
运算符的优先级和结合性
1、判断题:
二元的算术运算符的结合性都是左结合。
选项:
A: 正确
B: 错误
答案: 【 正确】
第3周——从键盘中来,到键盘中去,开始输入和输出啦
%c格式转换说明
1、判断题:
用c格式符输入字符型数据的时候,为了避免将输入缓冲区中的空白字符(空格、回车换行符、Tab键)作为有效字符读入,可以在%c前面加一个空格。
选项:
A: 正确
B: 错误
答案: 【 正确】
单个字符的输入输出
1、判断题:
单个字符既可以以c格式符也可以以d格式符输出,前者是输出这个字符,后者是输出这个字符的ASCII码值。
选项:
A: 正确
B: 错误
答案: 【 正确】
格式字符
1、判断题:
在调用printf函数输出数据时,当数据的实际位宽大于printf函数中的指定位宽时,将按照数据的实际位宽输出数据。
选项:
A: 正确
B: 错误
答案: 【 正确】
练兵区——单选题——不计入总分
1、单选题:
以下程序的输出结果为#include <stdio.h>
int main()
{
float a = 1234.567,b = 55.32;
printf("a = %4.2f, b = %5.1fn", a,b);
return 0;
}
选项:
A: a = 1234.57, b = 55.3
B: a =1234, b =55
C: a = 1234.6, b = 5.32
D: a =1234.567, b = 55.32
答案: 【 a = 1234.57, b = 55.3】
2、单选题:
给出程序的运行结果程序运行时从键盘输入:1<空格>2<回车>#include <stdio.h>
int main()
{
char a,b;
int s;
printf("please input a and b:n");
a=getchar();
b=getchar();
s=a+b;
printf("a=%c,b=%c",a,b);
return 0;
}
选项:
A: a=1,b=
B: a=1,b=2
C: a= ,b=2
D: 输出乱码
答案: 【 a=1,b=】
3、单选题:
有如下语句,为使变量a的值为1,b的值为2,从键盘输入数据的正确形式是scanf("a=%d,b=%d",&a,&b)
选项:
A: a=1,b=2
B: 1 2
C: 1,2
D: a=1 b=2
答案: 【 a=1,b=2】
4、单选题:
#include <stdio.h>
int main()
{
int a,b,c,d;
scanf("%c%c%d,%d",&a,&b,&c,&d);
printf("%c,%c,%c,%cn",a,b,c,d);
return 0;
}若运行以上程序时从键盘上输入:6565,66<回车>。则输出结果是
选项:
A: 6,5,A,B
B: 6,5,65,66
C: 6,5,6,5
D: 6,5,6,6
答案: 【 6,5,A,B】
5、单选题:
给出程序的运行结果,程序运行时从键盘输入:54321<回车>#include <stdio.h>
int main()
{
int a,b,s;
scanf("%2d%2d",&a,&b);
s=a/b;
printf("s=%d",s);
return 0;
}
选项:
A: 1
B: 1.6875
C: 2
D: 0
答案: 【 1】
6、单选题:
程序运行后的输出结果是#include <stdio.h>
int main()
{
int a=666,b=888;
printf("%dn",a,b);
return 0;
}
选项:
A: 666
B: 错误信息
C: 888
D: 666,888
答案: 【 666】
7、单选题:
在C语言中,字符型数据在内存中以( )形式存放
选项:
A: ASCII码
B: 国标码
C: BCD码
D: 反码
答案: 【 ASCII码】
8、单选题:
以下程序运行后的输出结果是#include <stdio.h>
int main()
{
int a;
int c=10;
float f=100.0;
double x;
a=f/=c*=(x=6.5);
printf("%d,%d,%3.1f,%3.1fn",a,c,f,x);
return 0;
}
选项:
A: 1,65,1.5,6.5
B: 1,65,1,6.5
C: 1,65,1.0,6.5
D: 2,65,1.5,6.5
答案: 【 1,65,1.5,6.5】
9、单选题:
以下程序的输出结果是#include <stdio.h>
int main()
{
int a=1234;
printf("%2dn",a);
return 0;
}
选项:
A: 1234
B: 12
C: 34
D: 提示出错、无结果
答案: 【 1234】
10、单选题:
设有语句“char c='72';”,则变量c
选项:
A: 包含1个字符
B: 包含2个字符
C: 包含3个字符
D: 不合法
答案: 【 包含1个字符】
11、单选题:
有以下语句段#include <stdio.h>
int main()
{
int n1=10,n2=20;
printf("_________",n1,n2);
return 0;
}要求按以下格式输出n1和n2的值,每个输出行都是从第一列开始,则空白处代码填写正确的是运行结果示例如下:n1=10n2=20
选项:
A: n1=%dnn2=%d
B: n1=%dn2=%dn
C: n1=%d,n2=%d
D: n1=%d n2=%dn
答案: 【 n1=%dnn2=%d】
12、单选题:
给出程序的运行结果,程序运行时从键盘输入:45-12<回车>#include <stdio.h>
int main()
{
int a,b,sum;
scanf("%d%*c%d",&a,&b);
sum=a+b;
printf("sum=%d",sum);
return 0;
}
选项:
A: 57
B: 输出报错
C: 33
D: 输出一个随机数
答案: 【 57】
13、单选题:
给出程序的运行结果#include <stdio.h>
int main()
{
int a,b,s;
char op;
scanf("%d %c%d",&a,&op,&b);
s=a%b;
printf("s=%d",s);
return 0;
}程序运行时从键盘输入:15<回车>%5<回车>
选项:
A: 0
B: 程序报错
C: 输出一个随机数
D: 3
答案: 【 0】
14、单选题:
分析下列程序,写出程序运行结果#include <stdio.h>
int main()
{
char c1 = 'a', c2 = 'b', c3 = 'c';
printf("a%cb%cc%cabcn", c1, c2, c3);
return 0;
}
选项:
A: aabbccabc
B: acbcabc
C: aabcabc
D: acbbcabc
答案: 【 aabbccabc】
15、单选题:
以下程序的输出结果为#include <stdio.h>
int main()
{
int a=2, c=5;
printf("a = %%d, b = %%dn", a, c);
return 0;
}
选项:
A: a = %d, b = %d
B: a = %2, b = %5
C: a = 2, b = 5
D: a = %%d, b = %%d
答案: 【 a = %d, b = %d】
16、单选题:
有以下程序,运行时若输入为B,则输出是#include <stdio.h>
int main()
{
char ch;
ch=getchar();
ch=ch+32;
printf("%c",ch);
return 0;
}
选项:
A: b
B: 98
C: 32
D: 66
答案: 【 b】
17、单选题:
写出下面程序的输出结果#include<stdio.h>
int main()
{
int x=6,y,z;
x*=18+1;
printf("%d,",x--);
x+=y=z=11;
printf("%d",x);
return 0;
}
选项:
A: 114,124
B: 113,124
C: 109,116
D: 110,116
答案: 【 114,124】
第4周——无处不在的抉择
判断ch是英文字母(大写或者小写)
1、判断题:
下面判断ch是大写或者小写英文字母的表达式是否正确?ch >= 'A' && ch <= 'Z' || ch >= 'a' && ch <= 'z'
选项:
A: 正确
B: 错误
答案: 【 正确】
条件运算符
1、单选题:
下列关于if-else语句的说法中哪个是正确的。
选项:
A: else总是和离它最近的if配对
B: else总是和前面离它最近的且还未和其他else匹配的在同一语句块内同一层次的if配对
C: else总是和前面离它最近的且位于花括号内的if配对
D: else可以和它前面的尚未与其他else匹配的任何一个if配对
答案: 【 else总是和前面离它最近的且还未和其他else匹配的在同一语句块内同一层次的if配对】
2、判断题:
条件运算符是C语言中唯一的一个三元运算符.
选项:
A: 正确
B: 错误
答案: 【 正确】
浮点数的表数精度
1、单选题:
下列说法错误的是()。
选项:
A: 浮点数并非真正意义上的实数,只是其在某种范围内的近似。
B: 浮点数能精确表示的数字位数取决于这种类型的浮点数的有效数字位数。
C: 使用更多的位来存储阶码,将会扩大浮点数的表数精度。
D: 受浮点数表数精度的限制,因此对于浮点数不能直接比较其是否相等,应该比较其是否近似相等。
答案: 【 使用更多的位来存储阶码,将会扩大浮点数的表数精度。】
练兵区——单选题——不计入总分
1、单选题:
下面程序代码的功能是判断输入整数的正负性和奇偶性,请将第19行和22行标号处缺少的代码填写完整。#include <stdio.h>
int main()
{
int m;
printf("Input m: ");
scanf("%d", &m); //输入一个整数
if (m > 0) //是否为正数
{
if (m % 2 == 0) //是正数,且能被2整除,则是正偶数
{
printf("%d is a positive evenn", m);
}
else //不能被2整除,则是正奇数
{
printf("%d is a positive oddn", m);
}
}
_______________ //判断是否为负数
{
_______________
{
printf("%d is a negative evenn", m); //是负偶数
}
else
{
printf("%d is a negative oddn", m); //是负奇数
}
}
else
{
printf("%d is zero.It is an evenn", m);
}
return 0;
}
选项:
A: 第19行代码: else if(m < 0)第22行代码: if (m % 2 == 0)
B: 第19行代码: if(m < 0)第22行代码: if (m % 2 == 0)
C: 第19行代码: else if(m < 0)第22行代码: if (m % 2 != 0)
D: 第19行代码: if(m < 0)第22行代码: if (m % 2 != 0)
答案: 【 第19行代码: else if(m < 0)第22行代码: if (m % 2 == 0)】
2、单选题:
执行以下程序后的输出结果为#include <stdio.h>
int main()
{
int a=1,b=0;
switch (a)
{
case 1:
switch (b)
{
case 0: printf("**0**");break;
case 1: printf("**1**");break;
}
case 2: printf("**2**");break;
}
return 0;
}
选项:
A: **0****2**
B: **0**
C: **0****1****2**
D: 有语法错误
答案: 【 **0****2**】
3、单选题:
以下程序运行后的输出结果是#include <stdio.h>
int main()
{
int a=1,b=2,m=0,n=0,k;
k=(n=b>a)||(m=a<b);
printf("%d,%dn",k,m);
return 0;
}
选项:
A: 1,0
B: 0,0
C: 0,1
D: 1,1
答案: 【 1,0】
4、单选题:
以下程序运行后的输出结果是#include <stdio.h>
int main()
{
int a,b,c;
a=10;
b=20;
c=(a%b<1)||(a/b>1);
printf("%d,%d,%d",a%b,a/b,c);
return 0;
}
选项:
A: 10,0,0
B: 10,1,0
C: 10,0,1
D: 10,1,1
答案: 【 10,0,0】
5、单选题:
编程设计一个简单的计算器程序,要求用户从键盘输入如下形式的表达式: 操作数1 运算符op 操作数2然后,计算并输出表达式的值指定的运算符为: 加(+) 减(-) 乘(*) 除(/)代码如下,所给程序是否存在错误,若有,找出错误所在并改正。#include <stdio.h>
int main()
{
float data1, data2;
char op;
printf("Please enter the expression:");
scanf("%f %c%f", &data1, &op, &data2); /* %c前有一个空格 */
switch (op)
{
case '+':
printf("%f + %f = %fn", data1, data2, data1 + data2);
break;
case '-':
printf("%f - %f = %fn", data1, data2, data1 - data2);
break;
case '*':
printf("%f * %f = %fn", data1, data2, data1 * data2);
break;
case '/':
printf("%f/%f = %fn", data1, data2,data1/data2);
break;
default:
printf("Invalid operator!n");
}
return 0;
}
选项:
A: 第20行语句有错误,改成:if (fabs(data2)<=EPS) printf("Division by zero!n");else printf("%f/%f = %fn", data1, data2, data1/data2);同时,第1行语句下方应加入#include <math.h>#define EPS 1e-6
B: default分支缺少break语句
C: 没有错误
D: 第20行语句有错误,改成:if (data2=0) printf("Division by zero!n");else printf("%f/%f = %fn", data1, data2, data1/data2);
答案: 【 第20行语句有错误,改成:if (fabs(data2)<=EPS) printf("Division by zero!n");else printf("%f/%f = %fn", data1, data2, data1/data2);同时,第1行语句下方应加入#include <math.h>#define EPS 1e-6】
6、单选题:
下列复合语句中,不能实现两数交换的是
选项:
A: {
a=b;
b=a;
}
B: {
b = a * b;
a = b / a;
b = b / a;
}
C: {
t=a;
a=b;
b=t;
}
D: {
a = a + b;
b = a – b;
a = a – b;
}
答案: 【 {
a=b;
b=a;
}】
7、单选题:
写出下面程序的输出结果#include <stdio.h>
int main()
{
int x=1, y=0, a=0, b=0;
switch(x)
{
case 1:
switch(y)
{
case 0: a++;
case 1: b++;
}
case 2: a++;
b++;
}
print
