收藏 分销(赏)

大学C语言期末试卷题型参考答案.doc

上传人:pc****0 文档编号:6421766 上传时间:2024-12-08 格式:DOC 页数:7 大小:57KB 下载积分:10 金币
下载 相关 举报
大学C语言期末试卷题型参考答案.doc_第1页
第1页 / 共7页
大学C语言期末试卷题型参考答案.doc_第2页
第2页 / 共7页


点击查看更多>>
资源描述
一、选择题(共20分,每小题2分) 1. 在C语言类型说明中,int, char, short等类型数据的长度是( D )。 A. 固定的 B. 由用户自己定义的 C. 任意的 D. 与机器字的长度有关 2. 若已正确说明为int类型,要给abc输入数据,则正确的输入语句是( D )。 A. read(a,b,c); B. scanf(“%d%d%d”,a,b,c); C. scanf(“%D%D%D”,&a,&b,&c); D. scanf(“%d%d%d”,&a,&b,&c); 3. C语言中对嵌套if语句的规定是:else总是与( D )配对。 A. 其之前最近的if B. 第一个if C. 缩进位置相同的if D. 其之前最近且不带else的if 4. 以下语句中,( C )是不可能做到提前退出循环语句的。 A. goto B. break C. continue D. return 5. 假设有两个字符数组a、b,则以下正确的输入语句是( B )。 A. gets(a, b) B. scanf(“%s %s”,a,b) C. scanf(“%s%s”, D. gets(“a”); gets(“b”) 6. 以下正确的描述是( B )。在C语言程序中, A. 函数的定义可以嵌套,但函数的调用不可以嵌套 B. 函数的定义不可以嵌套,但函数的调用可以嵌套 C. 函数的定义和含糊的调用均可以嵌套 7. 在宏定义#define PI 3.1415926中,用宏名PI代替一个( D )。 A. 单精度数 B. 双精度数 C. 常量 D. 字符串 8. 以下选项中,对指针变量p不正确的操作是( C )。 A. int a[6], *p; p = &a; B. int a[6], *p; p = a; C. int a[6]; int *p = a = 1000; D. int a[6]; int *p1, *p2 = a; *p1 = *p2; 9. 设有以下说明,已知int类型占2个字节,则下列叙述正确的是( D )。 struct st { int a; int b[2]; } a; A. 结构体变量名a和结构体成员a同名,不合法 B. 程序运行时将为结构体st分配6个字节的内存单元 C. 程序运行时不为结构体st分配内存单元 D. 程序运行时将为结构体变量a分配6个字节的内存单元 10. 当文件顺利关闭时,fclose()的返回值是( C )。 A. -1 B. EOF C. 0 D. 1 二、填空题(共20分,每小题2分) 1. C程序中定义的一个变量,代表内存中的一个 存储单元 。 2. ‘\72’在内存中占 一 个字节,”\72”在内存中占 二 个字节。 3. 结构化程序设计的3种基本结构是 顺序结构 、 选择结构 、 循环结构 。 4. 下列for循环执行 4 次。 For (x =0 , y = 0; y != 99 && x < 4; x++) ; 5. 若有定义 “double x[3][5];”则x数组中行下标的下限为 0 , 列下标的上限为 4 。 6. 函数swap(intx, inty)可以完成对x和y值的交换。在运行调用函数中的如下语句后,a[0]和a[1]的值分别为 1, 2 ,原因是 参数按值传递,形参值的改变不会影响实参值 。 a[0] = 1; a[1] = 2; swap(a[0], a[1]); 7. 设有以下宏定义: #define WIDTH 80 #define LENGTH (WIDTH + 40) 则执行赋值语句”k = LENGTH * 20;” (k为int型变量)后,k的值是 2400 。 8. 声明语句” int (*p)( ); ” 的含义是 P是一个指向函数的指针变量,该函数的返回值是整型 。 9. typedef long int BIGGY 的作用是定义了一个新的 数据类型标识符 。 10. EOF只可用于 文本 文件,用来作为 文件结束 标志。 三、阅读程序,并将分析结果写在程序右边空白处(共24分,每小题6分) 1. 运行下列程序,如果输入5432,请写出程序运行结果。 #include <stdio.h> main() { int digit, number; scanf("%d", &number); while(number){ digit = number % 10; number /= 10; printf("%d", digit); } } 结果为:2345 评分标准:若结果正确,6分;若结果部分有误,但有正确分析过程,根据比例适当得分;若结果有误且无分析,得0分 2. 运行下列程序,如果输入18 ,请写出程序运行结果(库、头文件省略)。 #include <stdio.h> int main() { int x, y, i, a[8], j, u, v; scanf("%d", &x); y = x; i = 0; do { u = y / 2; a[i] = y % 2; i++; y = u; } while(y >= 1); for(j = i - 1; j >= 0; j--) printf("%d", a[j]); printf("\nyes"); } 结果为:(十进制转二进制) 10010 Yes 评分标准:若结果正确,6分;若结果部分有误,但有正确分析过程,根据比例适当得分;若结果有误且无分析,得0分 3. 请写出以下程序的运行结果 #include <stdio.h> void increment(void); int main() { increment(); increment(); increment(); } void increment(void) { static int x; x += 1; printf("%d", x); } 结果为: 123 评分标准:若结果正确,6分;若结果部分有误,但有正确分析过程,根据比例适当得分;若结果有误且无分析,得0分 4. 请写出以下程序的运行结果 #include <stdio.h> #include <string.h> int main() { char *p1, *p2, str[20] = "ABC"; p1 = "abc"; p2 = "abc"; strcpy(str+1, strcat(p1, p2)); printf("%s\n", str); } 结果为:Aabcabc 评分标准:若结果正确,6分;若结果部分有误,但有正确分析过程,根据比例适当得分;若结果有误且无分析,得0分 四、程序填空(共16分,每小题8分) 1. 以下程序可计算10名学生1门课成绩的平均分,请根据题意填空。 #include <stdio.h> float average(float array[]); int main() { float score[10], aver; int i; printf("\n please input 10 scores:"); for(i = 0; i < 10; i++) scanf("%f", &score[i]); aver = average(score) ; printf("\naverage score is %5.2f\n", aver); getchar(); getchar(); } float average(float array[10]) { int i; float aver, sum = array[0]; for(i=1; i <= 9 ; i++) sum += array[i] ; aver = sum / 10; return (aver); } 评分标准: 每空2分 2. 以下程序从键盘输入一行字符作为字符串(遇换行符结束)存放在字符数组中,然后输出,请根据题意填空。 #include <stdio.h> main() { char s[80], *p; int i; for(i = 0; i < 80; i++){ s[i] = getchar(); if(s[i] == '\n' ) break; } s[i] = '\0' ; p = s ; while(*p) putchar (*p ++ ); } 评分标准: 每空2分 五、程序设计(共20分,每小题10分) 1. a是一个2*4的整型数组,且各元素以通过键盘赋值。函数max_value可求出其中的最大元素值max,并将此值返回主调函数。现有函数调用语句”max = max_value(a);”,请编写max_value函数和main()函数,在main()中调用max_value函数并输出其结果。 #include <stdio.h> int max_value(int arr[][4]); int main() { int i, j, x, a[2][4]; printf("please input the array a[2][4]:\n"); for(i = 0; i < 2; i++) for(j = 0; j < 4; j++) scanf("%d", &a[i][j]); x = max_value(a); printf("\n%d\n", x); } int max_value(int arr[][4]) { int i, j, m; m = arr[0][0]; for(i = 0; i < 2; i++) for(j = 0; j < 4; j++) if (arr[i][j] > m) m = arr[i][j]; return m; } 评分标准:在符合题意的要求上,实现方式任意,其中各部分声明总共2分;Main中, scanf 2分,调用1分,输出1分;max_value中,循环2,比较及返回2分。 2. 运用指针编写一个函数,将一个3*3的矩阵转置(即行列互换),并在主调函数中调用实现。矩阵数据要求从键盘读取输入,并要求显示转置前后的矩阵内容。 #include <stdio.h> main() { void move(int *pointer); int a[3][3], *p, i; printf("please input the matrix:\n"); for(i = 0; i < 3; i++) scanf("%d %d %d", &a[i][0], &a[i][1], &a[i][2]); fflush(stdin); printf("\noriginal matrix is:\n"); for(i = 0; i < 3; i++) printf("%d %d %d\n", a[i][0], a[i][1], a[i][2]); p = &a[0][0]; move(p); printf("\nnow, the converted matrix is:\n"); for(i = 0; i < 3; i++) printf("%d %d %d\n", a[i][0], a[i][1], a[i][2]); } void move(int *pointer) { int i, j, t; for(i = 0; i < 3; i++) for(j = i; j < 3; j++){ t = *(pointer + 3*i +j); *(pointer + 3*i + j) = *(pointer + 3*j + i); *(pointer + 3*j + i) = t; } } 评分标准:在符合题意的要求上,实现方式任意,其中各部分声明总共2分;Main中, scanf 2分,调用1分,输出1分;move中,循环2分,交换2分。 7
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服