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

| 2份
| 10页
| 69人阅读
| 0人下载

内容正文:

《程序设计基础-C语言》高等教育出版社 期末复习卷(三) 考试时间:90分钟 满分:100分 姓名 班级 学号 1、 单项选择题(本题共20小题,每题3分,共60分) 1、C语言中#define PI 3.14159的作用是( ) A. 定义变量 B. 宏定义常量 C. 函数声明 D. 包含头文件 中所有PI替换为3.14159,并非定义变量或声明函数。 2、用const int num=10;定义的变量,特点是( ) A. 可修改值 B. 只读不可修改 C. 作用域为局部 D. 占用字节为0 3、Visual C++ 6.0中,运行C程序的快捷键是( ) A. F5 B. Ctrl+F C. F7 D. Ctrl+S 4、下列属于C语言位运算符的是( ) A. && B. || C. & D. == 5、若int a=6, b=3;,则a & b的位运算结果是( ) A. 2 B. 3 C. 6 D. 0 6、字符串处理函数strcat(s1, s2)的功能是( ) A. 比较s1和s2 B. 将s2追加到s1末尾 C. 复制s2到s1 D. 求字符串长度 7、定义enum Week{Mon, Tue, Wed};,则Tue的值是( ) A. 0 B. 1 C. 2 D. 3 8、打开文件时,fopen("data.txt", "r")的"r"模式表示( ) A. 只写 B. 只读 C. 追加 D. 创建并写 9、若int x=2, y=3;,执行if((x++, y++, x<y)) x++;后x的值是( ) A. 3 B. 4 C. 2 D. 5 10、定义结构体struct Student{char name[20]; int age;};,则该结构体占用的最小字节数是( ) A. 20 B. 24 C. 21 D. 4 11、若int arr[][3]={{1,2}, {3,4,5}, {6}};,则arr[2][1]的值是( ) A. 0 B. 6 C. 5 D. 3 12、函数原型int fun(int, float);的含义是( ) A. 函数无参数 B. 参数仅声明类型,省略名称 C. 函数返回值为float D. 语法错误 13、执行for(int i=0; i<5; i++){if(i==2) continue; printf("%d",i);}的输出是( ) A. 0134 B. 01234 C. 01 D. 34 14、若int *p=(int *)malloc(4);,则p指向的内存空间大小是( ) A. 1字节 B. 4字节 C. 8字节 D. 不确定 15、二维数组int mat[3][4];,mat+1指向的是( ) A. mat[0][1] B. mat[1][0] C. mat[0][0] D. mat[1][1] 16、用递归函数计算1+2+…+n,递归表达式正确的是( ) A. f(n) = n + f(n-1) B. f(n) = n * f(n-1) C. f(n) = f(n) + 1 D. f(n) = n + f(n+1) 17、对文件操作时,fclose(fp)的作用是( ) A. 打开文件 B. 读取文件内容 C. 关闭文件并刷新缓冲区 D. 删除文件 18、若char str[]="abcdef", *p=str+3;,执行p--;后,*p的值是( ) A. 'c' B. 'd' C. 'b' D. 'e' 19、结构体变量struct Student s={"Zhang", 18};,访问年龄的方式是( ) A. s->age B. s.age C. Student.age D. *s.age 20、以下预处理指令中,用于条件编译的是( ) A. #include B. #define C. #ifdef D. #endif 2、 填空题(本题共10小题,每题2分,共20分) 1. C语言中,#include <stdio.h>的作用是 。 2. 枚举类型enum Color{Red, Green=5, Blue};中,Blue的值是 。 3. 位运算中,a | b表示按位 运算。 4. 用fopen打开文件并写入数据,若文件不存在则创建,模式字符串应填 。 5. 定义结构体struct Book{char title[30]; float price;};,定义该结构体变量的语句是 。 6. 逗号表达式(3+5, 6*2, 8-4)的结果是 。 7. 执行int i=0, sum=0; while(i<=8){if(i%3==0) sum+=i; i++;}后,sum的值是 。 8. 用递归求最大公约数,递归终止条件是 。 9. 若int a[4]={10,20,30,40}, *q=a;,则*(q++)的值是 。 10. 向文件中写入一个整型数据num=100,使用的函数是 。 3、 应用题(共20分) 设计一个C语言程序实现员工工资计算系统(如图所示),要求如下: 1. 定义一维数组存储10名员工的基础工资,通过标准输入录入工资数据; 2. 编写函数计算员工的加班费(基础工资>5000时,加班费为基础工资的10%;否则为基础工资的15%); 3. 编写函数计算员工的实发工资(实发工资=基础工资+加班费),要求使用指针作为函数参数; 4. 通过循环遍历数组,输出每位员工的基础工资、加班费和实发工资; 5. 统计并输出实发工资超过6000元的员工人数,以及所有员工的平均实发工资。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $ 《程序设计基础-C语言》高等教育出版社 期末复习卷(三) 考试时间:90分钟 满分:100分 姓名 班级 学号 1、 单项选择题(本题共20小题,每题3分,共60分) 1、C语言中#define PI 3.14159的作用是( ) A. 定义变量 B. 宏定义常量 C. 函数声明 D. 包含头文件 【答案】B 【解析】#define是C语言的宏定义指令,用于定义常量(宏常量),编译预处理阶段会将代码中所有PI替换为3.14159,并非定义变量或声明函数。 2、用const int num=10;定义的变量,特点是( ) A. 可修改值 B. 只读不可修改 C. 作用域为局部 D. 占用字节为0 【答案】B 【解析】const修饰的变量为只读变量,定义后无法通过赋值语句修改其值;其作用域由定义位置决定(局部/全局),且占用与普通int相同的内存字节。 3、Visual C++ 6.0中,运行C程序的快捷键是( ) A. F5 B. Ctrl+F C. F7 D. Ctrl+S 【答案】A 【解析】F5是运行程序;Ctrl+F7是编译单个文件;F7是构建工程;Ctrl+S是保存文件。 4、下列属于C语言位运算符的是( ) A. && B. || C. & D. == 【答案】C 【解析】&是按位与(位运算符);&&是逻辑与、||是逻辑或(逻辑运算符);==是等于(关系运算符)。 5、若int a=6, b=3;,则a & b的位运算结果是( ) A. 2 B. 3 C. 6 D. 0 【答案】A 【解析】按位与运算规则为“对应位都为1则为1,否则为0”:0110 & 0011 = 0010,转换为十进制是2。 6、字符串处理函数strcat(s1, s2)的功能是( ) A. 比较s1和s2 B. 将s2追加到s1末尾 C. 复制s2到s1 D. 求字符串长度 【答案】B 【解析】strcat是字符串拼接函数;strcmp用于比较字符串,strcpy用于复制字符串,strlen用于求字符串长度。 7、定义enum Week{Mon, Tue, Wed};,则Tue的值是( ) A. 0 B. 1 C. 2 D. 3 【答案】B 【解析】枚举常量默认从0开始依次递增,Mon=0、Tue=1、Wed=2。 8、打开文件时,fopen("data.txt", "r")的"r"模式表示( ) A. 只写 B. 只读 C. 追加 D. 创建并写 【答案】B 【解析】"r"是只读模式,文件不存在则打开失败;"w"是只写,"a"是追加,"w+"是读写并创建。 9、若int x=2, y=3;,执行if((x++, y++, x<y)) x++;后x的值是( ) A. 3 B. 4 C. 2 D. 5 【答案】B 【解析】逗号表达式(x++, y++, x<y)按从左到右执行:x变为3,y变为4,x<y为真;执行x++后,x的值为4。 10、定义结构体struct Student{char name[20]; int age;};,则该结构体占用的最小字节数是( ) A. 20 B. 24 C. 21 D. 4 【答案】B 【解析】C语言结构体存在内存对齐规则,char name[20]占20字节,为了对齐int的4字节,会补充4字节,总占用20+4=24字节。 11、若int arr[][3]={{1,2}, {3,4,5}, {6}};,则arr[2][1]的值是( ) A. 0 B. 6 C. 5 D. 3 【答案】A 【解析】二维数组初始化时,arr[2]仅赋值第一个元素6,未初始化的元素默认值为0,因此arr[2][1]=0。 12、函数原型int fun(int, float);的含义是( ) A. 函数无参数 B. 参数仅声明类型,省略名称 C. 函数返回值为float D. 语法错误 【答案】B 【解析】函数原型只需声明参数类型,可省略参数名称,仅用于告知编译器函数的返回值类型和参数类型,语法合法。 13、执行for(int i=0; i<5; i++){if(i==2) continue; printf("%d",i);}的输出是( ) A. 0134 B. 01234 C. 01 D. 34 【答案】A 【解析】continue会跳过本次循环的后续语句,当i=2时不执行printf,因此输出0134。 14、若int *p=(int *)malloc(4);,则p指向的内存空间大小是( ) A. 1字节 B. 4字节 C. 8字节 D. 不确定 【答案】B 【解析】malloc的参数为需要分配的字节数,malloc(4)表示分配4字节的内存空间,与指针类型无关。 15、二维数组int mat[3][4];,mat+1指向的是( ) A. mat[0][1] B. mat[1][0] C. mat[0][0] D. mat[1][1] 【答案】B 【解析】二维数组名mat表示首行首元素地址,mat+1表示偏移一行的地址,即第二行首元素mat[1][0]的地址。 16、用递归函数计算1+2+…+n,递归表达式正确的是( ) A. f(n) = n + f(n-1) B. f(n) = n * f(n-1) C. f(n) = f(n) + 1 D. f(n) = n + f(n+1) 【答案】A 【解析】求和递归的逻辑是“当前数n + 前n-1个数的和”,终止条件为n=1时返回1,因此递归表达式为f(n) = n + f(n-1)。 17、对文件操作时,fclose(fp)的作用是( ) A. 打开文件 B. 读取文件内容 C. 关闭文件并刷新缓冲区 D. 删除文件 【答案】C 【解析】fclose用于关闭已打开的文件,同时将缓冲区中未写入的内容刷新到文件中,避免数据丢失。 18、若char str[]="abcdef", *p=str+3;,执行p--;后,*p的值是( ) A. 'c' B. 'd' C. 'b' D. 'e' 【答案】A 【解析】str数组中str[0]='a'、str[1]='b'、str[2]='c'、str[3]='d';p初始指向str+3('d'),p--后指向str+2,*p='c'。 19、结构体变量struct Student s={"Zhang", 18};,访问年龄的方式是( ) A. s->age B. s.age C. Student.age D. *s.age 【答案】B 【解析】结构体普通变量用.访问成员,结构体指针变量用->访问成员;Student是结构体类型名,不能直接访问成员。 20、以下预处理指令中,用于条件编译的是( ) A. #include B. #define C. #ifdef D. #endif 【答案】C 【解析】#ifdef用于判断宏是否定义,属于条件编译指令;#include是文件包含,#define是宏定义,#endif是条件编译的结束标记(非用于条件编译的指令)。 2、 填空题(本题共10小题,每题2分,共20分) 1. C语言中,#include <stdio.h>的作用是 。 【答案】引入标准输入输出头文件 2. 枚举类型enum Color{Red, Green=5, Blue};中,Blue的值是 。 【答案】6 3. 位运算中,a | b表示按位 运算。 【答案】或 4. 用fopen打开文件并写入数据,若文件不存在则创建,模式字符串应填 。 【答案】"w" 5. 定义结构体struct Book{char title[30]; float price;};,定义该结构体变量的语句是 。 【答案】struct Book book; 6. 逗号表达式(3+5, 6*2, 8-4)的结果是 。 【答案】4 7. 执行int i=0, sum=0; while(i<=8){if(i%3==0) sum+=i; i++;}后,sum的值是 。 【答案】9 8. 用递归求最大公约数,递归终止条件是 。 【答案】余数为0 9. 若int a[4]={10,20,30,40}, *q=a;,则*(q++)的值是 。 【答案】10 10. 向文件中写入一个整型数据num=100,使用的函数是 。 【答案】fprintf 3、 应用题(共20分) 设计一个C语言程序实现员工工资计算系统(如图所示),要求如下: 1. 定义一维数组存储10名员工的基础工资,通过标准输入录入工资数据; 2. 编写函数计算员工的加班费(基础工资>5000时,加班费为基础工资的10%;否则为基础工资的15%); 3. 编写函数计算员工的实发工资(实发工资=基础工资+加班费),要求使用指针作为函数参数; 4. 通过循环遍历数组,输出每位员工的基础工资、加班费和实发工资; 5. 统计并输出实发工资超过6000元的员工人数,以及所有员工的平均实发工资。 【答案】 #include <stdio.h> // 计算加班费 float calcOverTime(float baseSal) { if(baseSal > 5000) return baseSal * 0.1; else return baseSal * 0.15; } // 指针参数计算实发工资 float calcRealSal(float baseSal, float *overTime) { *overTime = calcOverTime(baseSal); return baseSal + *overTime; } int main() { float baseSal[10], overTime[10], realSal[10]; int count = 0; float avgSal = 0.0; // 1. 录入基础工资 printf("请录入10名员工基础工资: "); for(int i=0; i<10; i++) { scanf("%f", &baseSal[i]); } // 2. 计算加班费、实发工资 for(int i=0; i<10; i++) { realSal[i] = calcRealSal(baseSal[i], &overTime[i]); avgSal += realSal[i]; if(realSal[i] > 6000) count++; } // 3. 输出员工工资明细 printf(" 员工工资明细: "); printf("序号\t基础工资\t加班费\t实发工资 "); for(int i=0; i<10; i++) { printf("%d\t%.2f\t\t%.2f\t%.2f ", i+1, baseSal[i], overTime[i], realSal[i]); } // 4. 输出统计结果 avgSal /= 10; printf(" 实发工资超6000元人数:%d ", count); printf("全体员工平均实发工资:%.2f ", avgSal); return 0; } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $

资源预览图

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

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