《程序设计基础-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名学生的成绩,以及计算得到的最高分、最低分和平均分。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $

资源预览图

《程序设计基础-C语言》(高教版第二版)期末复习卷(五)-第1页
1
《程序设计基础-C语言》(高教版第二版)期末复习卷(五)-第2页
2

由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。