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

| 2份
| 12页
| 53人阅读
| 0人下载

内容正文:

《程序设计基础- C语言》高等教育出版社 期末复习卷(七) 考试时间:90分钟 满分:100分 姓名 班级 学号 1、 单项选择题(本题共20小题,每题3分,共60分) 1、以下关于C语言的说法,错误的是( ) A. C语言是结构化程序设计语言 B. C语言可直接操作硬件 C. C语言程序必须包含main函数 D. C语言的关键字区分大小写 2、若int a=9, b=2;,则表达式a / (float)b的结果类型是( ) A. int B. float C. double D. 不确定 3、下列标识符中,不符合C语言命名规则的是( ) A. int_3 B. 3_int C. int3 D. _int3 4、执行语句int x=6; x = x - x * 2;后,x的值是( ) A. -6 B. 6 C. 0 D. -12 5、以下函数中,不能用于输出字符串的是( ) A. printf() B. puts() C. putchar() D. fprintf() 6、以下数组初始化方式中,错误的是( ) A. int arr[] = {1,2,3,4}; B. int arr[4] = {1,2,3,4,5}; C. int arr[4] = {1,2}; D. int arr[] = {1,2,3,4,5}; 7、已知int p=4, q=6;,执行表达式p > q ? --p : ++q的结果是( ) A. 4 B. 3 C. 7 D. 6 8、执行以下代码,输出结果是( ) int i=3; do { printf("%d", i--); } while(i>0); A. 321 B. 210 C. 32 D. 3 9、C语言中,字符串"a\0b"在内存中占用的字节数是( ) A. 2 B. 3 C. 4 D. 5 10、二维数组int arr[2][4] = {{1,2,3}, {4}};,则arr[0][3]的值是( ) A. 3 B. 4 C. 0 D. 随机值 11、若int *ptr, val=10; ptr=&val;,则以下表达式中错误的是( ) A. *ptr = 20; B. ptr = 20; C. val = *ptr; D. *ptr = val; 12、执行以下代码,输出结果是( ) char str[] = "Hello"; printf("%d", strlen(str)); A. 5 B. 6 C. 4 D. 不确定 13、执行以下代码,total的最终值是( ) int total=0; for(int k=1; k<=5; k++) { if(k%2==0) total += k; } A. 6 B. 9 C. 15 D. 21 14、已知int m=7, n=3;,下列选项中条件为真的是( ) A. m + n < 10 B. m - n == 4 C. m % n == 0 D. m < n 15、以下关于字符串的说法,错误的是( ) A. 字符串以'\0'为结束标志 B. 字符串必须用双引号括起来 C. 空字符串的长度为0 D. 字符数组一定是字符串 16、以下关于if语句的说法,错误的是( ) A. if语句的条件表达式可以是任意表达式 B. if语句的循环体可以是多条语句 C. 多个if语句可以并列使用 D. if语句的条件表达式只能是关系表达式 17、要以写入方式打开文本文件,若文件存在则清空内容,不存在则创建,应使用的fopen模式是( ) A. "w" B. "r" C. "a" D. "w+" 18、执行以下代码,输出结果是( ) for(int a=1; a<=3; a++) { for(int b=1; b<=a; b++) { printf("*"); } printf(" "); } A. *** B. * ** *** C. *** ** * D. * ** 19、以下关于函数参数的说法,正确的是( ) A. 函数参数个数必须与调用时的实参个数一致 B. 函数参数不能是数组 C. 函数参数可以是指针 D. 函数参数必须是变量 20、以下关于递归函数的说法,错误的是( ) A. 递归函数必须调用自身 B. 递归函数必须有终止条件 C. 递归函数的效率一定比循环高 D. 递归函数调用会占用栈空间 二、 填空题(本题共10小题,每题2分,共20分) 1. C语言程序的基本单位是__________,程序的执行入口是__________函数。 2. 定义int x=17, y=5;,表达式x % y + x / y的结果是__________。 3. 循环语句包括while循环、do-while循环和__________循环三种。 4. 若指针变量p指向数组arr的首元素,则arr[2]等价于__________(用指针表示)。 5. 已知int a=5, b=9;,表达式a < b ? a*3 : b/3的结果是__________。 6. 执行以下代码,输出的星号个数是__________。 for(int i=0; i<2; i++) { for(int j=0; j<3; j++) { printf("*"); } } 7. 函数声明的作用是__________,以便编译器在函数调用时进行检查。 8. 已知int x=3, y=7;,逻辑表达式!(x<y) || (y>5)的结果是__________。 9. 字符串"123"的结束标志是__________,其ASCII码值为__________。 10. 定义一个能存储5个int类型数据的数组,并初始化前3个元素为1、2、3,语句是__________。 三、 应用题(共20分) 编写一个C语言程序,实现以下功能(如图所示): 1. 从键盘输入10个整型数据,存入一维数组; 2. 编写函数找出数组中的最大值和最小值; 3. 统计数组中偶数的个数; 4. 输出原始数组、最大值、最小值以及偶数的个数。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $ 《程序设计基础- C语言》高等教育出版社 期末复习卷(七) 考试时间:90分钟 满分:100分 姓名 班级 学号 1、 单项选择题(本题共20小题,每题3分,共60分) 1、以下关于C语言的说法,错误的是( ) A. C语言是结构化程序设计语言 B. C语言可直接操作硬件 C. C语言程序必须包含main函数 D. C语言的关键字区分大小写 【答案】D 【解析】C语言的关键字不区分大小写(如int和INT等价),但标识符区分大小写;A、B、C均为正确说法,D错误。 2、若int a=9, b=2;,则表达式a / (float)b的结果类型是( ) A. int B. float C. double D. 不确定 【答案】B 【解析】(float)b将int型b转换为float型,a(int型)与float型运算时,int会隐式转换为float,最终结果为float型。 3、下列标识符中,不符合C语言命名规则的是( ) A. int_3 B. 3_int C. int3 D. _int3 【答案】B 【解析】C语言标识符首字符不能为数字,B选项以3开头,不符合命名规则;A、C、D均符合规则。 4、执行语句int x=6; x = x - x * 2;后,x的值是( ) A. -6 B. 6 C. 0 D. -12 【答案】A 【解析】算术运算符优先级高于赋值运算符,先算x*2=12,再算x - 12=6-12=-6,最后赋值给x,故x的值为-6。 5、以下函数中,不能用于输出字符串的是( ) A. printf() B. puts() C. putchar() D. fprintf() 【答案】C 【解析】putchar()仅用于输出单个字符;printf()(%s格式符)、puts()、fprintf()(文件输出,%s格式符)均可输出字符串,故C正确。 6、以下数组初始化方式中,错误的是( ) A. int arr[] = {1,2,3,4}; B. int arr[4] = {1,2,3,4,5}; C. int arr[4] = {1,2}; D. int arr[] = {1,2,3,4,5}; 【答案】B 【解析】B中数组长度为4,初始化元素有5个,超出数组容量,属于非法初始化;A、C、D均合法。 7、已知int p=4, q=6;,执行表达式p > q ? --p : ++q的结果是( ) A. 4 B. 3 C. 7 D. 6 【答案】C 【解析】p > q(4>6)为假,执行++q,++q是先自增后使用,q从6变为7,故表达式结果为7。 8、执行以下代码,输出结果是( ) int i=3; do { printf("%d", i--); } while(i>0); A. 321 B. 210 C. 32 D. 3 【答案】A 【解析】do-while循环先执行循环体再判断条件:i=3时输出3,i变为2;i=2时输出2,i变为1;i=1时输出1,i变为0,不满足i>0,循环结束,输出321。 9、C语言中,字符串"a\0b"在内存中占用的字节数是( ) A. 2 B. 3 C. 4 D. 5 【答案】B 【解析】字符串存储时包含结束符'\0',"a\0b"包含a、\0、b三个字符,故占用3个字节(\0是单个转义字符,占1个字节)。 10、二维数组int arr[2][4] = {{1,2,3}, {4}};,则arr[0][3]的值是( ) A. 3 B. 4 C. 0 D. 随机值 【答案】C 【解析】二维数组未显式初始化的元素默认值为0,arr[0]行仅初始化前3个元素为1、2、3,arr[0][3]未初始化,值为0。 11、若int *ptr, val=10; ptr=&val;,则以下表达式中错误的是( ) A. *ptr = 20; B. ptr = 20; C. val = *ptr; D. *ptr = val; 【答案】B 【解析】ptr是指针变量,存储的是地址,不能直接赋值为整型常量20(类型不匹配);A、C、D均为合法操作,故B错误。 12、执行以下代码,输出结果是( ) char str[] = "Hello"; printf("%d", strlen(str)); A. 5 B. 6 C. 4 D. 不确定 【答案】A 【解析】strlen()函数用于计算字符串长度,不包含结束符'\0',"Hello"有5个字符,故strlen(str)结果为5。 13、执行以下代码,total的最终值是( ) int total=0; for(int k=1; k<=5; k++) { if(k%2==0) total += k; } A. 6 B. 9 C. 15 D. 21 【答案】A 【解析】for循环k从1到5,仅当k为偶数(2、4)时执行total += k,total=2+4=6。 14、已知int m=7, n=3;,下列选项中条件为真的是( ) A. m + n < 10 B. m - n == 4 C. m % n == 0 D. m < n 【答案】B 【解析】A中m+n=10,10<10为假;B中m-n=4,条件为真;C中m%n=1≠0,为假;D中m=7>n=3,为假,故B正确。 15、以下关于字符串的说法,错误的是( ) A. 字符串以'\0'为结束标志 B. 字符串必须用双引号括起来 C. 空字符串的长度为0 D. 字符数组一定是字符串 【答案】D 【解析】字符数组若未以'\0'结尾,则仅为字符的集合,不是字符串;A、B、C均为正确说法,D错误。 16、以下关于if语句的说法,错误的是( ) A. if语句的条件表达式可以是任意表达式 B. if语句的循环体可以是多条语句 C. 多个if语句可以并列使用 D. if语句的条件表达式只能是关系表达式 【答案】D 【解析】if语句的条件表达式可以是任意表达式(算术、关系、逻辑等),非0为真,0为假;D错误,A、B、C正确。 17、要以写入方式打开文本文件,若文件存在则清空内容,不存在则创建,应使用的fopen模式是( ) A. "w" B. "r" C. "a" D. "w+" 【答案】A 【解析】"w"是文本写入模式,文件存在则清空内容,不存在则创建;"r"是只读模式;"a"是追加模式;"w+"是读写模式,故A正确。 18、执行以下代码,输出结果是( ) for(int a=1; a<=3; a++) { for(int b=1; b<=a; b++) { printf("*"); } printf(" "); } A. *** B. * ** *** C. *** ** * D. * ** 【答案】B 【解析】外层循环a=1时,内层循环b=1,输出1个*,换行;a=2时,内层循环b=1、2,输出2个*,换行;a=3时,内层循环b=1、2、3,输出3个*,换行,故输出格式为*换行**换行***换行。 19、以下关于函数参数的说法,正确的是( ) A. 函数参数个数必须与调用时的实参个数一致 B. 函数参数不能是数组 C. 函数参数可以是指针 D. 函数参数必须是变量 【答案】C 【解析】A中函数参数个数与实参个数可不一致(可变参数函数除外),但不建议;B中函数参数可以是数组(本质为指针);C中函数参数可以是指针,正确;D中函数参数可以是常量、表达式等,并非必须是变量。 20、以下关于递归函数的说法,错误的是( ) A. 递归函数必须调用自身 B. 递归函数必须有终止条件 C. 递归函数的效率一定比循环高 D. 递归函数调用会占用栈空间 【答案】C 【解析】递归函数调用时会频繁入栈出栈,占用额外栈空间,对于多层递归,效率通常比循环低;A、B、D均为正确说法,C错误。 二、 填空题(本题共10小题,每题2分,共20分) 1. C语言程序的基本单位是__________,程序的执行入口是__________函数。 【答案】函数 main 2. 定义int x=17, y=5;,表达式x % y + x / y的结果是__________。 【答案】5 3. 循环语句包括while循环、do-while循环和__________循环三种。 【答案】for 4. 若指针变量p指向数组arr的首元素,则arr[2]等价于__________(用指针表示)。 【答案】*(p+2) 5. 已知int a=5, b=9;,表达式a < b ? a*3 : b/3的结果是__________。 【答案】15 6. 执行以下代码,输出的星号个数是__________。 for(int i=0; i<2; i++) { for(int j=0; j<3; j++) { printf("*"); } } 【答案】6 7. 函数声明的作用是__________,以便编译器在函数调用时进行检查。 【答案】告知编译器函数的返回值类型、函数名和参数类型 8. 已知int x=3, y=7;,逻辑表达式!(x<y) || (y>5)的结果是__________。 【答案】1(真)(!(3<7)=0,y>5=1,0||1=1) 9. 字符串"123"的结束标志是__________,其ASCII码值为__________。 【答案】'\0' 0 10. 定义一个能存储5个int类型数据的数组,并初始化前3个元素为1、2、3,语句是__________。 【答案】int arr[5] = {1,2,3}; 三、 应用题(共20分) 编写一个C语言程序,实现以下功能(如图所示): 1. 从键盘输入10个整型数据,存入一维数组; 2. 编写函数找出数组中的最大值和最小值; 3. 统计数组中偶数的个数; 4. 输出原始数组、最大值、最小值以及偶数的个数。 【答案】 #include <stdio.h> // 找出数组最大值和最小值,通过指针返回结果,统计偶数个数并返回 int findMaxMin(int arr[], int len, int *max, int *min) { *max = arr[0]; *min = arr[0]; int evenCount = 0; for(int i=0; i<len; i++) { // 更新最大值 if(arr[i] > *max) { *max = arr[i]; } // 更新最小值 if(arr[i] < *min) { *min = arr[i]; } // 统计偶数 if(arr[i] % 2 == 0) { evenCount++; } } return evenCount; } int main() { int arr[10]; int max, min, evenCount; int length = sizeof(arr) / sizeof(arr[0]); // 计算数组长度 // 输入10个整型数据 printf("请输入10个整型数据: "); for(int i=0; i<length; i++) { scanf("%d", &arr[i]); } // 调用函数获取最大值、最小值和偶数个数 evenCount = findMaxMin(arr, length, &max, &min); // 输出原始数组 printf("输入的原始数组为: "); for(int i=0; i<length; i++) { printf("%d\t", arr[i]); } printf(" "); // 输出统计结果 printf("数组中的最大值:%d ", max); printf("数组中的最小值:%d ", min); printf("数组中偶数的个数:%d ", evenCount); return 0; } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $

资源预览图

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

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