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

| 2份
| 11页
| 208人阅读
| 2人下载

内容正文:

《程序设计基础-C语言》高教版第二版 期末复习卷(一) 考试时间:90分钟 满分:100分 姓名 班级 学号 1、 单项选择题(本题共20小题,每题3分,共60分) 1、以下关于C语言程序执行的描述,正确的是( ) A. 程序可从任意自定义函数开始执行 B. 程序必须包含main函数作为执行入口 C. 子程序是程序的默认执行起点 D. 子过程可替代main函数作为执行入口 2、在Visual C++ 6.0中,编译C语言源程序生成的目标文件扩展名是( ) A. .c B. .exe C. .obj D. .h 3、下列标识符中,符合C语言合法规则的是( ) A. 2nd_name B. book price C. _grade_10 D. float_num 4、 若int a = 5, b = 2;,则表达式a % b的结果是( )。 A. 2 B. 1 C. 2.5 D. 0 5、 用于从键盘读取字符数据的标准输入函数是 ( ) A. getchar() B. puts() C. printf() D. scanf() 6、以下数组定义中,语法正确的是 ( ) A. int arr[5] = {1,2,3,4,5,6}; B. char str[] = {'a','b','c','d'}; C. float num[3] = "123"; D. int arr[4] = arr[0]={2}; 7、已知int p=6, q=2; 执行表达式p<q ? p-3 : q+4的结果是( ) A. 6 B. 3 C. 2 D. 4 8、 执行以下代码,输出结果是( ) A. 345 B. 456 C. 3456 D. 45 9.用于统计字符串长度的库函数是( ) A. strlen() B. sizeof() C. strcpy() D. strcmp() 10、二维数组int arr[3][2] = {{3}, {5,7}}; 则arr[2][1]的值是( ) A. 7 B. 0 C. 5 D. 不确定 11、若int a = 10, *p = &a;,则*p的值是( ) A. 10 B. 变量a的地址 C. 指针变量p的地址 D. 随机值 12、执行以下代码,strlen(str)的结果是( ) A. 5 B. 11 C. 6 D. 10 13、 执行以下代码,total的最终值是( ) A. 10 B. 20 C. 12 D. 16 14、已知int x=3, y=3, k=0; 下列选项中能执行k++的是( ) A. if(x!=y) k++; B. if(x+y) k++; C. if(!(x-y)) k++; D. if(x>y+1) k++; 15、若要将字符串"abc"存入字符数组,正确的定义是( ) A. char str[3] = "abc"; B. char str[] = "abc"; C. char str[4] = {'a','b','c'}; D. char str[3] = {'a','b','c','\0'}; 16、以下代码存在语法错误的是( ) A. if(a>5) a++; else a--; B. if(b==3){ c=4; d=5; } C. if(c!=2) x=1; y=2; D. if(d<6) { printf("yes"); } 17、 要以只写方式打开二进制文件,若文件不存在则创建,应使用的打开模式是( ) A. "wb" B. "w" C. "r" D. "ab" 18、 执行以下代码,输出结果是( ) A. 134 B. 1234 C. 124 D. 13 19、二维数组int arr[3][2] = {{2,3}, {4}, {5,6}}; 则arr[2][0]的值是( ) A.6 B. 5 C.4 D.0 20、 执行以下代码,st1的最终内容是( ) A. "Hello World" B. World C. "HelloWorld" D. " World" 2、 填空题(本题共10小题,每题2分,共20分) 1. C语言中,注释分为单行注释(//)和多行注释,多行注释的起始符是 ,结束符是 。 2. 定义float f = 3.14;,若要将其转换为整型,可使用 结果为3。 3. 语句用于跳出switch语句,防止case穿透。、 4. 定义一个能存储7个字符的字符数组,正确的语句是 。 5. 已知int a=9, b=5; 表达式a>b ? a-4 : b+3的结果是 。 6. 执行以下代码,最终输出的sum值是 。 7. 递归调用中, 是防止程序陷入无限递归的关键,例如“猴子吃桃问题”中需设置桃子数为1时的终止条件。 8. 已知int a=3, b=5; 逻辑表达式(a>2) && (b<10)的结果是 。 9. 字符串的结束标志是 ,其ASCII码值为0。 10. 定义一个3行4列的整型二维数组,并初始化第一行为1、2、3、4,其余元素为0,语句是 。 3、 判断题(本题共10小题,每题2分,共20分) 1. C语言程序中,#include <stdio.h>的作用是引入标准输入输出头文件,否则无法使用printf和scanf函数。( ) 2. C语言中,标识符“Test”和“test”表示同一个变量。( ) 3. if(a = 5)语句中,条件表达式的值为5(真),因此会执行if的循环体。( ) 4. 二维数组arr[3][4]表示3行4列的数组,数组元素个数为12个。( ) 5. do-while循环的循环体至少执行一次,因此其效率高于while循环。( ) 6. 数组名arr表示数组首元素的地址,因此arr与&arr[0]等价。( ) 7. 逻辑与运算“&&”中,若左侧操作数为假,则右侧操作数仍会继续计算。( ) 8. 用fopen打开文件后,即使程序正常结束,也必须调用fclose函数关闭文件。( ) 9. 所有问题都可以用递归的方式解决,递归比循环更简洁高效。( ) 10. 二维数组int arr[2][4] = {{4,6}, {8}}; 则arr[1][2]的值是8。( ) 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $ 《程序设计基础-C语言》高教版第二版 期末复习卷(一) 考试时间:90分钟 满分:100分 姓名 班级 学号 1、 单项选择题(本题共20小题,每题3分,共60分) 1、以下关于C语言程序执行的描述,正确的是( ) A. 程序可从任意自定义函数开始执行 B. 程序必须包含main函数作为执行入口 C. 子程序是程序的默认执行起点 D. 子过程可替代main函数作为执行入口 【答案】B 【解析】C语言规定程序必须以main函数为唯一执行入口,自定义函数需被调用才能执行 2、在Visual C++ 6.0中,编译C语言源程序生成的目标文件扩展名是( ) A. .c B. .exe C. .obj D. .h 【答案】C 【解析】.c是C语言源文件扩展名,.obj是编译后的目标文件扩展名,.exe是链接后的可执行文件扩展名,.h是头文件扩展名。 3、下列标识符中,符合C语言合法规则的是( ) A. 2nd_name B. book price C. _grade_10 D. float_num 【答案】C 【解析】合法标识符由字母、下划线或数字组成,首字符不能是数字,且不能是关键字。A以数字开头,B含特殊字符,D中float是关键字,均不合法。 4、 若int a = 5, b = 2;,则表达式a % b的结果是( )。 A. 2 B. 1 C. 2.5 D. 0 【答案】B 【解析】%是取模运算符,仅适用于整型数据,计算两数相除的余数,5 ÷ 2的余数为1。 5、 用于从键盘读取字符数据的标准输入函数是 ( ) A. getchar() B. puts() C. printf() D. scanf() 【答案】A 【解析】getchar()专门用于读取单个字符;scanf()可读取多种类型数据;printf()和puts()是输出函数。 6、以下数组定义中,语法正确的是 ( ) A. int arr[5] = {1,2,3,4,5,6}; B. char str[] = {'a','b','c','d'}; C. float num[3] = "123"; D. int arr[4] = arr[0]={2}; 【答案】B 【解析】A初始化元素个数超出数组长度;C数组类型与初始化值类型不匹配;D赋值格式错误,不能直接用arr[0]={2}赋值,B未指定长度,由初始化元素个数确定长度,正确。 7、已知int p=6, q=2; 执行表达式p<q ? p-3 : q+4的结果是( ) A. 6 B. 3 C. 2 D. 4 【答案】A 【解析】三目运算符中p<q(6<2)为假,取表达式2的值q+4=2+4=6 8、 执行以下代码,输出结果是( ) A. 345 B. 456 C. 3456 D. 45 【答案】B 【解析】初始j=3,++j先自增再输出。第一次j=4,输出4;第二次j=5,输出5;第三次j=6,不满足j<6,循环结束,输出456。 9.用于统计字符串长度的库函数是( ) A. strlen() B. sizeof() C. strcpy() D. strcmp() 【答案】A 【解析】strlen()计算字符串的实际字符个数(不含结束符'\0');sizeof()计算变量/数组所占字节数;strcpy()是字符串复制函数;strcmp()是字符串比较函数。 10、二维数组int arr[3][2] = {{3}, {5,7}}; 则arr[2][1]的值是( ) A. 7 B. 0 C. 5 D. 不确定 【答案】B 【解析】维数组未显式初始化的元素默认值为0,arr[2][1]未初始化,值为0 11、若int a = 10, *p = &a;,则*p的值是( ) A. 10 B. 变量a的地址 C. 指针变量p的地址 D. 随机值 【答案】A 【解析】&a取变量a的地址并赋值给指针p,*p是对指针p的解引用,获取其指向的变量值(即10)。 12、执行以下代码,strlen(str)的结果是( ) A. 5 B. 11 C. 6 D. 10 【答案】A 【解析】strlen遇'\0'停止计算,"hello"后是'\0',长度为5 13、 执行以下代码,total的最终值是( ) A. 10 B. 20 C. 12 D. 16 【答案】B 【解析】循环i=1到4,total=2+4+6+8=20 14、已知int x=3, y=3, k=0; 下列选项中能执行k++的是( ) A. if(x!=y) k++; B. if(x+y) k++; C. if(!(x-y)) k++; D. if(x>y+1) k++; 【答案】C 【解析】A中x!=y为假;B中x+y=6(真)但非唯一答案;C中x-y=0,!(x-y)=1(真),必然执行k++,故选C。 15、若要将字符串"abc"存入字符数组,正确的定义是( ) A. char str[3] = "abc"; B. char str[] = "abc"; C. char str[4] = {'a','b','c'}; D. char str[3] = {'a','b','c','\0'}; 【答案】B 【解析】字符串末尾会自动添加'\0',"abc"需占用4个字节(3个字符+1个结束符)。A、D的数组长度为3,无法存放结束符;C未手动添加'\0',不能视为字符串;B的数组长度会自动适配为4,正确。 16、以下代码存在语法错误的是( ) A. if(a>5) a++; else a--; B. if(b==3){ c=4; d=5; } C. if(c!=2) x=1; y=2; D. if(d<6) { printf("yes"); } 【答案】C 【解析】if后无花括号时,仅紧邻的第一条语句受if控制,C中y=2语法上无错,但逻辑上易误解。 17、 要以只写方式打开二进制文件,若文件不存在则创建,应使用的打开模式是( ) A. "wb" B. "w" C. "r" D. "ab" 【答案】A 【解析】"wb"是二进制只写模式,不存在则创建;"w"是文本只写模式 18、 执行以下代码,输出结果是( ) A. 134 B. 1234 C. 124 D. 13 【答案】A 【解析】i=2时执行continue,跳过输出,依次输出1、3、4 19、二维数组int arr[3][2] = {{2,3}, {4}, {5,6}}; 则arr[2][0]的值是( ) A.6 B. 5 C.4 D.0 【答案】B 【解析】二维数组按行存储,arr[2][0]是第三行第一列元素,初始化值为5 20、 执行以下代码,st1的最终内容是( ) A. "Hello World" B. World C. "HelloWorld" D. " World" 【答案】D 【解析】strcpy将st2(" ")复制到st1,覆盖原"Hello",再通过strcat连接st3("World"),最终st1为" World" 2、 填空题(本题共10小题,每题2分,共20分) 1. C语言中,注释分为单行注释(//)和多行注释,多行注释的起始符是 ,结束符是 。 【答案】/* */ 2. 定义float f = 3.14;,若要将其转换为整型,可使用 结果为3。 【答案】(int)f 3. 语句用于跳出switch语句,防止case穿透。、 【答案】break 4. 定义一个能存储7个字符的字符数组,正确的语句是 。 【答案】char str[7] 5. 已知int a=9, b=5; 表达式a>b ? a-4 : b+3的结果是 。 【答案】5 6. 执行以下代码,最终输出的sum值是 。 【答案】12 7. 递归调用中, 是防止程序陷入无限递归的关键,例如“猴子吃桃问题”中需设置桃子数为1时的终止条件。 【答案】递归终止条件(或边界条件) 8. 已知int a=3, b=5; 逻辑表达式(a>2) && (b<10)的结果是 。 【答案】1(真) 9. 字符串的结束标志是 ,其ASCII码值为0。 【答案】'\0'(或空字符) 10. 定义一个3行4列的整型二维数组,并初始化第一行为1、2、3、4,其余元素为0,语句是 。 【答案】int arr[3][4] = {{1,2,3,4}, {0}, {0}} 3、 判断题(本题共10小题,每题2分,共20分) 1. C语言程序中,#include <stdio.h>的作用是引入标准输入输出头文件,否则无法使用printf和scanf函数。( ) 【答案】正确。printf和scanf等标准I/O函数的声明在stdio.h头文件中,必须通过#include引入后才能使用。 2. C语言中,标识符“Test”和“test”表示同一个变量。( ) 【答案】错误。C语言区分大小写,“Test”和“test”是两个独立的标识符,编译器会分别处理。 3. if(a = 5)语句中,条件表达式的值为5(真),因此会执行if的循环体。( ) 【答案】正确。=是赋值运算符,a = 5会将5赋值给a,表达式的结果为5(非0,即真),因此if的循环体会执行;若要判断相等,应使用==。 4. 二维数组arr[3][4]表示3行4列的数组,数组元素个数为12个。( ) 【答案】正确。二维数组元素总数=行数×列数=3×4=12,存储时按行优先顺序排列。 5. do-while循环的循环体至少执行一次,因此其效率高于while循环。( ) 【答案】错误。do-while和while的效率取决于具体场景,循环体执行次数相同时效率无差异;do-while仅在条件初始为假时比while多执行一次循环体,并非绝对高效。 6. 数组名arr表示数组首元素的地址,因此arr与&arr[0]等价。( ) 【答案】正确。C语言中数组名是一个常量指针,指向数组首元素的地址,arr和&arr[0]均表示数组第一个元素的地址。 7. 逻辑与运算“&&”中,若左侧操作数为假,则右侧操作数仍会继续计算。( ) 【答案】错误。逻辑与遵循“短路规则”,左侧为假时,整体结果已确定为假,无需计算右侧,提高程序效率。 8. 用fopen打开文件后,即使程序正常结束,也必须调用fclose函数关闭文件。( ) 【答案】正确。虽然程序正常结束时系统可能自动关闭文件,但手动调用fclose能确保缓冲区数据同步到文件,避免数据丢失。 9. 所有问题都可以用递归的方式解决,递归比循环更简洁高效。( ) 【答案】错误。递归并非适用于所有问题,且递归会产生函数调用的栈开销,效率通常低于循环;仅部分问题(如阶乘、斐波那契数列)用递归实现更简洁。 10. 二维数组int arr[2][4] = {{4,6}, {8}}; 则arr[1][2]的值是8。( ) 【答案】错误。二维数组按行存储,arr[1][2]未显式初始化,默认值为0。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $

资源预览图

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

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