《程序设计基础-C语言》(高教版第二版)期末复习卷(五)
|
2份
|
12页
|
57人阅读
|
0人下载
内容正文:
《程序设计基础-C语言》高等教育出版社
期末复习卷(五)
考试时间:90分钟 满分:100分
姓名 班级 学号
1、 单项选择题(本题共20小题,每题3分,共60分)
1、以下关于C语言程序结构的描述,错误的是( )
A. 程序由一个或多个函数组成
B. 必须包含main函数
C. 函数体由{ }包裹
D. 注释可以嵌套使用
【答案】D
【解析】C语言中注释不能嵌套,嵌套注释会导致编译器解析错误;A、B、C均为正确描述。
2. 若float a=3.5, b=2.5;,则表达式(int)(a + b)的结果是( )
A. 6 B. 6.0 C. 5 D. 5.0
【答案】A
【解析】a + b结果为6.0,(int)强制类型转换将float型转换为int型,舍弃小数部分,结果为6。
3. 下列标识符中,不符合C语言命名规则的是( )
A. _abc123 B. abc_123 C. 123_abc D. ABC123
【答案】C
【解析】C语言标识符首字符不能为数字,C选项以123开头,不符合命名规则;A、B、D均合法。
4. 执行语句int x=5; x = x % 2;后,x的值是( )
A. 1 B. 2 C. 3 D. 0
【答案】A
【解析】%是取模运算符,用于计算两数相除的余数,5%2=1,故x的值为1。
5. 以下关于printf函数格式符的说法,正确的是( )
A. %c用于输出字符 B. %s用于输出整型
C. %f用于输出字符 D. %d用于输出浮点型
【答案】A
【解析】%c对应字符型输出,%s对应字符串输出,%f对应浮点型输出,%d对应整型输出,故A正确,B、C、D错误。
6. 定义int arr[5];,以下对数组元素的引用错误的是( )
A. arr[0] B. arr[4] C. arr[5] D. arr[2+1]
【答案】C
【解析】数组arr[5]的下标范围是0~4,arr[5]超出下标范围,属于非法引用;A、B、D均为合法引用(arr[2+1]=arr[3])。
7. 已知int x=2, y=7;,执行表达式(x > y) ? x : y++的结果是( )
A. 2 B. 7 C. 8 D. 3
【答案】B
【解析】x > y(2>7)为假,执行y++,y++是先使用后自增,故表达式结果为y的原始值7,执行后y变为8。
8. 执行以下代码,输出结果是( )
int i=0;
while(i<3)
{
printf("%d", ++i);
i++; }
A. 13 B. 24 C. 123 D. 012
【答案】A
【解析】i初始0,第一次循环:++i后i=1,输出1,再i++变为2;第二次循环:++i后i=3,输出3,再i++变为4,不满足i<3,循环结束,输出13。
9. 以下关于字符串的说法,正确的是( )
A. 字符串必须用双引号括起来
B. 字符串可以用单引号括起来
C. 字符串长度包含结束符'\0'
D. 空字符串的长度为1
【答案】A
【解析】C语言中字符串必须用双引号括起来,单引号括起来的是单个字符;字符串长度不包含'\0';空字符串("")长度为0,故A正确,B、C、D错误。
10. 二维数组int arr[3][2] = {{1,2}, {3}, {4,5}};,则数组元素的总个数是( )
A. 5 B. 6 C. 7 D. 8
【答案】B
【解析】二维数组元素总个数=行数×列数=3×2=6,与初始化元素个数无关,未显式初始化的元素默认值为0。
11. 若int *p, a=10; p=&a;,则以下表达式中表示变量a的地址的是( )
A. *p B. p C. &p D. *
【答案】B
【解析】p是指针变量,存储的是a的地址;*p是a的值,&p是指针变量p的地址,*&a是a的值,故B正确。
12. 执行以下代码,strlen(str)的结果是( )
char str[] = "a\0b\0c";
A. 1 B. 3 C. 5 D. 6
【答案】A
【解析】strlen()遇'\0'停止计数,str中第一个'\0'在'a'之后,故字符串长度为1。
13. 执行以下代码,total的最终值是( )
int total=0, i=1;
for(;i<=4;i++)
{
total += i*2;
}
A. 20 B. 18 C. 16 D. 14
【答案】A
【解析】i从1到4循环,total依次累加2、4、6、8,总和为2+4+6+8=20。
14. 已知int a=6, b=4;,下列选项中条件表达式的值为真的是( )
A. a + b > 10 B. a - b == 2 C. a % b == 0 D. a < b
【答案】B
【解析】原解析修正:B中a-b=6-4=2,条件表达式a - b == 2的值为真;A、C、D条件均为假,故选B。
15. 若要将字符串"12345"存入字符数组,正确的定义是( )
A. char str[5] = "12345";
B. char str[6] = "12345";
C. char str[] = {'1','2','3','4'};
D. char str[6] = {'1','2','3','4','5'};
【答案】B
【解析】"12345"包含5个字符和1个结束符'\0',需6个字节空间。A数组长度5,无法存放结束符;B数组长度6,正确;C数组长度4,未包含完整字符串;D未添加结束符'\0',不能视为字符串。
16. 以下关于if-else语句的说法,正确的是( )
A. else语句必须与最近的if语句配对
B. else语句可以单独存在
C. if语句后只能跟一条语句
D. 多个if语句不能嵌套使用
【答案】A
【解析】else语句遵循“就近配对”原则,必须与最近的未配对if语句配对;else不能单独存在,必须紧跟if;if后若有多条语句需用{}包裹;if语句可以嵌套使用,故A正确,B、C、D错误。
17. 用fopen打开文件时,若要以读写方式打开文本文件,且文件不存在则创建,应使用的模式是( )
A. "r+" B. "w+" C. "a+" D. "rb+"
【答案】B
【解析】"w+"是文本读写模式,文件不存在则创建,存在则覆盖原有内容;"r+"是读写模式,文件不存在则打开失败;"a+"是追加读写模式;"rb+"是二进制读写模式。
18. 执行以下代码,输出结果是( )
for(int i=1; i<=5; i++)
{
if(i%2==0) continue;
printf("%d", i);
}
A. 135 B. 24 C. 12345 D. 13
【答案】A
【解析】i为偶数时执行continue,跳过本次循环的printf语句;i为1、3、5时(奇数)执行printf,输出135。
19. 二维数组int arr[2][4] = {{2,4}, {6,8,10}};,则arr[0][3]的值是( )
A. 0 B. 4 C. 6 D. 10
【答案】A
【解析】arr[0]行仅初始化前两个元素为2、4,arr[0][3]未显式初始化,默认值为0。
20. 以下关于函数递归的说法,正确的是( )
A. 递归函数必须有返回值
B. 递归函数不需要递归终止条件
C. 递归函数的调用过程是栈的入栈和出栈过程
D. 递归函数不能调用自身
【答案】C
【解析】递归函数可以是void类型(无返回值);必须有递归终止条件,否则会无限递归;递归函数的调用过程本质是函数栈的入栈(调用)和出栈(返回);递归函数的核心是调用自身,故C正确,A、B、D错误。
二、 填空题(本题共10小题,每题2分,共20分)
1. C语言中,宏定义的预处理指令是__________,文件包含的预处理指令是__________。
【答案】#define #include
2. 定义double pi=3.1415926;,若要将其转换为int类型,可使用__________,转换结果为3。
【答案】(int)pi
3. 循环语句中,__________语句用于跳过本次循环的后续语句,直接进入下一次循环判断。
【答案】continue
4. 定义一个能存储5个字符串的字符指针数组,正确的语句是__________。
【答案】char *str[5];
5. 已知int a=8, b=3;,表达式a > b ? a/2 : b*2的结果是__________。
【答案】4
6. 执行以下代码,最终sum的值是__________。
int sum=0, i=3;
do
{
sum += i;
i += 3;
} while(i<=12);
【答案】30
7. 用递归函数计算斐波那契数列第n项,当n=1和n=2时,返回值均为__________,这是递归终止条件。
【答案】1
8. 已知int x=4, y=9;,逻辑表达式!(x>y) && (y-x>0)的结果是__________。
【答案】1(真)
9. 字符串"test"在内存中占用的字节数是__________,其中包含__________个字符和1个结束符。
【答案】5 4
10. 定义一个3行3列的整型二维数组,初始化第一行元素为1、2、3,其余元素为0,语句是__________。
【答案】int arr[3][3] = {{1,2,3}, {0}, {0}};
三、 应用题(共20分)
编写一个C语言程序,实现以下功能(如下图所示):
1. 定义一个一维数组,存储8名学生的数学成绩(成绩为整型);
2. 通过键盘输入8名学生的成绩;
3. 编写函数计算成绩的最高分、最低分和平均分(平均分保留2位小数);
4. 输出8名学生的成绩,以及计算得到的最高分、最低分和平均分。
【答案】
#include <stdio.h>
// 计算最高分、最低分、平均分,通过指针返回结果
void calcScore(int score[], int n, int *max, int *min, float *avg) {
*max = score[0];
*min = score[0];
int sum = 0;
for(int i=0; i<n; i++) {
sum += score[i];
if(score[i] > *max) {
*max = score[i];
}
if(score[i] < *min) {
*min = score[i];
}
}
*avg = (float)sum / n;
}
int main() {
int score[8];
int max, min;
float avg;
// 输入8名学生成绩
printf("请输入8名学生的数学成绩:
");
for(int i=0; i<8; i++) {
scanf("%d", &score[i]);
}
// 计算成绩相关指标
calcScore(score, 8, &max, &min, &avg);
// 输出结果
printf("8名学生的成绩分别为:");
for(int i=0; i<8; i++) {
printf("%d ", score[i]);
}
printf("
最高分:%d
", max);
printf("最低分:%d
", min);
printf("平均分:%.2f
", avg);
return 0;
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$
《程序设计基础-C语言》高等教育出版社
期末复习卷(五)
考试时间:90分钟 满分:100分
姓名 班级 学号
1、 单项选择题(本题共20小题,每题3分,共60分)
1、以下关于C语言程序结构的描述,错误的是( )
A. 程序由一个或多个函数组成
B. 必须包含main函数
C. 函数体由{ }包裹
D. 注释可以嵌套使用
2. 若float a=3.5, b=2.5;,则表达式(int)(a + b)的结果是( )
A. 6 B. 6.0 C. 5 D. 5.0
3. 下列标识符中,不符合C语言命名规则的是( )
A. _abc123 B. abc_123 C. 123_abc D. ABC123
4. 执行语句int x=5; x = x % 2;后,x的值是( )
A. 1 B. 2 C. 3 D. 0
5. 以下关于printf函数格式符的说法,正确的是( )
A. %c用于输出字符 B. %s用于输出整型
C. %f用于输出字符 D. %d用于输出浮点型
6. 定义int arr[5];,以下对数组元素的引用错误的是( )
A. arr[0] B. arr[4] C. arr[5] D. arr[2+1]
7. 已知int x=2, y=7;,执行表达式(x > y) ? x : y++的结果是( )
A. 2 B. 7 C. 8 D. 3
8. 执行以下代码,输出结果是( )
int i=0;
while(i<3)
{
printf("%d", ++i);
i++; }
A. 13 B. 24 C. 123 D. 012
9. 以下关于字符串的说法,正确的是( )
A. 字符串必须用双引号括起来
B. 字符串可以用单引号括起来
C. 字符串长度包含结束符'\0'
D. 空字符串的长度为1
10. 二维数组int arr[3][2] = {{1,2}, {3}, {4,5}};,则数组元素的总个数是( )
A. 5 B. 6 C. 7 D. 8
11. 若int *p, a=10; p=&a;,则以下表达式中表示变量a的地址的是( )
A. *p B. p C. &p D. *
12. 执行以下代码,strlen(str)的结果是( )
char str[] = "a\0b\0c";
A. 1 B. 3 C. 5 D. 6
13. 执行以下代码,total的最终值是( )
int total=0, i=1;
for(;i<=4;i++)
{
total += i*2;
}
A. 20 B. 18 C. 16 D. 14
14. 已知int a=6, b=4;,下列选项中条件表达式的值为真的是( )
A. a + b > 10 B. a - b == 2 C. a % b == 0 D. a < b
15. 若要将字符串"12345"存入字符数组,正确的定义是( )
A. char str[5] = "12345";
B. char str[6] = "12345";
C. char str[] = {'1','2','3','4'};
D. char str[6] = {'1','2','3','4','5'};
16. 以下关于if-else语句的说法,正确的是( )
A. else语句必须与最近的if语句配对
B. else语句可以单独存在
C. if语句后只能跟一条语句
D. 多个if语句不能嵌套使用
17. 用fopen打开文件时,若要以读写方式打开文本文件,且文件不存在则创建,应使用的模式是( )
A. "r+" B. "w+" C. "a+" D. "rb+"
18. 执行以下代码,输出结果是( )
for(int i=1; i<=5; i++)
{
if(i%2==0) continue;
printf("%d", i);
}
A. 135 B. 24 C. 12345 D. 13
19. 二维数组int arr[2][4] = {{2,4}, {6,8,10}};,则arr[0][3]的值是( )
A. 0 B. 4 C. 6 D. 10
20. 以下关于函数递归的说法,正确的是( )
A. 递归函数必须有返回值
B. 递归函数不需要递归终止条件
C. 递归函数的调用过程是栈的入栈和出栈过程
D. 递归函数不能调用自身
二、 填空题(本题共10小题,每题2分,共20分)
1. C语言中,宏定义的预处理指令是__________,文件包含的预处理指令是__________。
2. 定义double pi=3.1415926;,若要将其转换为int类型,可使用__________,转换结果为3。
3. 循环语句中,__________语句用于跳过本次循环的后续语句,直接进入下一次循环判断。
4. 定义一个能存储5个字符串的字符指针数组,正确的语句是__________。
5. 已知int a=8, b=3;,表达式a > b ? a/2 : b*2的结果是__________。
6. 执行以下代码,最终sum的值是__________。
int sum=0, i=3;
do
{
sum += i;
i += 3;
} while(i<=12);
7. 用递归函数计算斐波那契数列第n项,当n=1和n=2时,返回值均为__________,这是递归终止条件。
8. 已知int x=4, y=9;,逻辑表达式!(x>y) && (y-x>0)的结果是__________。
9. 字符串"test"在内存中占用的字节数是__________,其中包含__________个字符和1个结束符。
10. 定义一个3行3列的整型二维数组,初始化第一行元素为1、2、3,其余元素为0,语句是__________。
三、 应用题(共20分)
编写一个C语言程序,实现以下功能(如下图所示):
1. 定义一个一维数组,存储8名学生的数学成绩(成绩为整型);
2. 通过键盘输入8名学生的成绩;
3. 编写函数计算成绩的最高分、最低分和平均分(平均分保留2位小数);
4. 输出8名学生的成绩,以及计算得到的最高分、最低分和平均分。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$