《程序设计基础-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;
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$