江西财经大学IT帮
2020-2021第一学期期末C语言模拟考试试卷
课程名称:C语言程序设计(软件)(主干课程) 适用对象:21级本科
试卷命题人 钟芳盛 游天悦 李俊贤 万军豪 张位 试卷审核人 钟芳盛
一、单项选择题(从下列各题四个备选答案中选出一个正确答案,并将其代号写在答题纸相应位置处。答案错选或未选者,该题不得分。每小题2分,共20分。)
1、C 语言可执行程序的开始执行点是( )
A.程序中第一条可执行语言 B.程序中第一个函数
C.程序中的 main 函数 D.包含文件中的第一个函数
2、下列叙述正确的是( )
A.C语言中的数据类型,在不同的编译系统中占据内存的存储单元大小是一样的
B.C语言中的常量是没有类型的
C.C语言中的数据类型不同,在内存中占据不同长度的存储单元
D.C语言中的数据的类型不同,但取值范围都是相同的
3、下面合法的C语言字符常量是( )
A. '\t' B. "A" C. 65 D. A
4、在一个C程序中,要定义一个只允许本源文件中的所有函数使用的全局变量,则该变量需要使用的存储类别是( )
A.extern B.register C.auto D.static
5、设 int a=11,则执行完语句a+=a-=(a++)*(--a)后,a的值是( )。
A. -120 B.-121 C. -220 D.- 144
6、C语言中的变量名只能由字母、数字和下划线三种字符组成,且第一个字符必须是 ( )。
A.字母 B.下划线 C.必须为字母或下划线 D.可以是三种中的任一种
7、以下说法不正确的是( )
A.字符数组可存放字符串
B.字符数组中的字符串可整体输入、输出
C.可在赋值语句中通过赋值运算符对字符数组整体赋值
D.不可用关系运算符对字符数组中的字符进行比较
8、若函数调用时用数组名作为函数参数,以下叙述不正确的是( )
A.实参与其对应的形参共用同一段存储空间
B.实参将其地址传递给形参,结果等同于实现了参数间的双向值传递
C.实参与其对应的形参分别占用不同的存储空间
D.在调用函数中必须说明数组的大小,但在被调函数中可以使用不定尺寸数组
9、以下叙述正确的是( )
A.continue语句作用是结束整个循环的执行
B.只能在循环体内和switch语句体内使用break语句
C.在循环体内使用break语句或continue语句的作用相同
D.从多层循环嵌套中退出时,只能使用goto语句
10、以下整数值中,不正确的八进制或十六进制数是( )
A.0x16 B.016 C.ox16 D.0xaaaa
二、简答题(第11题10分,第12题5分,第13题5分,共20分。)
11、三种循环结构中的条件是循环进行的条件还是循环结束的条件?循环结构中break语句和continue语句的作用是什么,二者有何区别?
12、函数的嵌套调用与递归调用有什么区别?
13、变量的声明与定义有什么区别
三、程序填空题(按题目要求补充完程序。每空2分,共8分。)
14、下面程序是计算 1-3+5-7+……-99+101 的值,请用填空完善程序。
main()
{
int i, m, t = 1, s = 0;
for (i = 1; i < 101; [1] )
{
[2] ;
s = s + m;
[3] ;
}
printf("%d\n", s);
}
[1]
[2]
[3]
15、下面函数利用递归实现求第n个斐波那契数,请填空完善fibo函数。
int fibo(int n)
{
int f1;
if (n == 1 || n == 2)
{
f1 = 1;
return f1;
}
else
{
return [4] ;
}
}
[4]
四、程序阅读题(给出下列程序运行后的输出结果。每小题4分,共12分。)
16、 #include
int main()
{
int a, b;
for (a = 1, b = 1; a <= 100; a++)
{
if (b >= 9)
break;
if (b % 3 == 1)
{
b += 3;
continue;
}
b -= 5;
}
printf("%d,%d\n", a, b);
return 0;
}
运行结果:
17、 #include
void fun(int x, int cp, int dp)
{
cp = x++;
dp = ++x;
}
void main(void)
{
int a, c = 80, d = -20;
a = 30;
fun(a, c, d);
printf("%d,%d\n", c, d);
}
运行结果:
18、 #include
void inv(int x[], int n);
void main()
{
int i, a[10] = {3, 7, 9, 11, 0, 6, 7, 5, 4, 2};
inv(a, 10);
printf("The array has been reverted.\n");
for (i = 0; i < 10; i++)
printf("%d,", a[i]);
printf("\n");
}
void inv(int x[], int n)
{
int t, i, j, m = (n - 1) / 2;
for (i = 0; i <= m; i++)
{
j = n - 1 - i;
t = x[i];
x[i] = x[j];
x[j] = t;
}
}
运行结果:
五、程序设计题(每小题10分,共40分。)
1、找所有1000以内的素数并输出
2、以三角形的形式输出 九九乘法表(第一行为1*1=1 第二行为1*2=2 2*2=4)
3、用递归的方式求斐波那契数列的前100项和
4、找到1000以内所有水仙花数并输出(水仙花是指一个3位数,它的每个位上的数字的3次幂之和等于它本身)