C语言 期末模拟题.docx
C语言期末模拟一.单项选择题(每题1分,共30分)(1)按照C语言规定的用户标识符命名规那么,不能出现在标识符中的是()oA)字母 B)数字 C)下划线 D)连接符(2)计算机能直接执行的程序是()oA)源程序 B)目标程序 C)可执行程序D)汇编程序(3)有以下定义语句,编译时会出现编译错误的选项是()。A) chara='a,; B) chara=*n' C) chara='aa' D) chara=*t'(4)以下选项中正确的定义语句是()。A) double a; b; B) double a=b=7; C) double a=7, b=7; D) double, a, b;(5)以下不能正确表示代数式2ab除cd的C语言表达式是()oA) 2*a*b/c/d B) a*b/c/d*2 C) a/c/d*b*2 D) 2*a*b/c*d(6)假设变量均已正确定义并赋值,以下合法的C语言赋值语句是()。A) x=y=5; B) x=n%2.5; C) x+n=l; D) x=5=4+l;(7)设有定义:intk=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是()。A) k+ B) k+=l C) +k D) k+1(8)以下选项中,当x=3时,值为。的表达式是()。A) x%2=l B) x/2 C) x%2!=0 D) x%2=0(9)以下关于C语言文件的表达中正确的选项是()。A)文件是由一组相关数据组成,只能构成二进制文件B)文件是由一组相关结构组成,可以构成二进制文件或文本文件C)文件是由一组相关数据组成,可以构成二进制文件或文本文件 D)文件是由一组相关数据组成,只能构成文本文件 (10)以下表达中错误的选项是()。A) C语言是一种结构化程序设计语言B)结构化程序有顺序、分支、循环三种基本结构组成C)使用三种基本结构构成的程序只能解决简单问题D)结构化程序设计提倡模块化的设计方法(11)有以下程序#include <stdio.h> void main() char cl,c2;cl='A'+'8'-4;c2='A'+'8'-'5';printf(4%c,%dn,cl ,c2);)己知字母A的ASCII码为65,程序运行后的输出结果是()A) E,68 B) D,69 C) E,D D)输出无定值(12)字符'A'的ASCH代码值是65,字符变量cl的值是'A', c2的值是'D'。执行语句printf(”d,%d”,cl,c2-2);B,输出 结果是()。A) A,B B) A,68C) 65,66 D) 65,68(13)假设变量已正确定义为int型,要通过语句scanf(”%d,%d,%d”,&a,&b,&c);给a赋值1、给b赋值2、给c赋值3,以下输入形式 中错误的选项是()。A)空格1,2,3回车B) 1空格2空格3回车C) 1,空格空格2,空格空格3回车,D) 1,2,3回车,(14)在嵌套使用if语句时,C语言规定else总是()。A)和之前与其具有相同缩进位置的if配对B)和之前与其最近的if配对C)和之前与其最近的且不带else的if配对D)和之前的第一个if配对(15)以下关于逻辑运算符两侧运算对象的表达中正确的选项是()。A)只能是整数。或1B)只能是整数0或非0的整数C)可以是结构体类型的数据D)可是任意合法的表达式青岛理工大学试卷纸共8页 第1页试题要求:L试题后标注此题得分试卷应附有评卷用标准答案,并有每题每步得分标准;3.试卷必须提前一周送考试中心;4.考试前到指 定地点领取试卷;5.考生不得拆散试卷,否那么试卷无效。学号:姓名:班级:(16)有以下程序段int a, b, c;a=10; b=50; c=30;if (a>b) a=b, b=c; c=a;printf("a=d b=%d c=%dn",a, b, c);程序的输出结果是()。A) a=10b=50 c=10 B) a=10b=50 c=30 C) a=10b=30 c=10 D) a=50 b=30 c=50 (17)以下表达中正确的选项是()。A)预处理命令行必须位于C源程序的起始位置B)在C语言中,预处理命令行都以开头C)每个C程序必须在开头包括预处理命令行:include D) C语言的预处理命令要以分号;结尾 (18)以下表达中正确的选项是()。A) break语句只能用于switch语句题中 B )在switch语句中必须使用defaultC) break语句只能用在循环体内和switch语句体内D)在循环体内使用break语句和continue语句的作用相同(19)有以下程序#include <stdio.h>void main() int i,j,m=55;for(i=l;i<=3;i+)for(j=3;j<=i;j+) m=m%j;printf(,'%dn,m);程序的运行结果是()。A) 0 B) 1 C) 2 D) 3(20)有以下程序#include<stdio.h>void main() int ij;for(i=3; i>=l; i-)for(j=l;j<=2;j+)printf(n%dn, i+j);)程序的运行结果是()。A) 234 B) 432345 543 C) 23 D) 45 3423(21)以下关于字符串的表达中正确的选项是()。A) C语言中有字符串类型的常量和变量B)两个字符串中的字符个数相同时才能进行字符串大小的比拟C)可以用关系运算符对字符串的大小进行比拟D)空串一定比空格打头的字符串小(22)假设有定义语句:intm=5,4,3,2,l,i=4;,那么下面对m数组元素的引用中错误的选项是()。A) miB) m2*2 C) m|m|0| D) m|m|i(23)假设有定义语句:chars10=n123456700H;,那么 strlen(s)的值是()。A) 7 B) 8 C) 9 D) 10(24)有定义语句:char s 10;,假设要从终端给s输入5个字符,错误的输入语句是()。A) gets(&sO); B) scanf( “s” ,s+l); C) gets(s); D) scanf( u%sv ,sl);(25)对于一个正常运行的C程序,以下表达中正确的选项是()。A)程序的执行总是从main函数开始,在main函数结束B)程序的执行总是从程序的第一个函数开始,在main函数结束C)程序的执行总是从main函数开始,在程序的最后一个函数中结束D)程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束(26)假设函数调用时的实参为普通变量时,以下关于函数形参和实参的表达中正确的选项是()。A)函数的实参和其对应的形参共占同一存储单元B)形参只是形式上的存在,不占用具体存储单元C)同名的实参和形参占同一存储单元D)函数的形参和实参分别占用不同的存储单元(27)以下表达中错误的选项是()。A) C程序是由一个或一个以上的函数组成B)函数调用可以作为一个独立的语句存在C)假设函数有返回值,需要通过return语句返回D) C函数必须有形式参数青岛理工大学试卷纸共8页 第2页试题要求:1.试题后标注此题得分试卷应附有评卷用标准答案,并有每题每步得分标准;3.试卷必须提前一周送考试中心;4.考试前到指 定地点领取试卷;5.考生不得拆散试卷,否那么试卷无效。学号:姓名:班级:O o o o o 的 oooooooooooooooooooooOOOOOOOOOOOOOOOOOOOOOOOO O O O O O(28)在C函数的定义和调用中,下面描述正确的选项是()。A)函数的定义可以嵌套,函数的调用不可以嵌套B)函数的定义不可以嵌套,函数的调用可以嵌套C)函数的定义和调用都不可以嵌套D)函数的定义和调用都可以嵌套(29)假设在定义语句:inta,b,c,*p=&c;之后,接着执行以下选项中的语句,那么能正确执行的语句是()。A) scanf(n%dH,a,b,c); B) scanf(1,%d%d%d,',a,b,c); C) scanf("d”,p); D) scanf("d&p);(30)以下关于指针变量的说法中,错误的选项是()。A)定义指针变量时,必须指定基类型 B)定义指针变量时,可以先不指定基类型C) 一个指针变量,只能指向同类型的变量D)指针变量的值是地址二、填空题(每空1分,共10分)(1)整型变量a=6,b=7,c=l,那么表达式(a*3-b+c)/5的值是。(2) .数学公式y = ,( + ) +炉,写成C语言表达式是 o(3) C语言表达式!(3<6)|(4<9)的值是 o(4)假设有如下定义floatf=123.4567;要求输出该数时保存1位小数,共占8列,左对齐,那么具体的printf语句是(5)设有以下宏定义:# define WIDTH 80# define LENGTH WIDTH+40那么执行赋值语句:v = LENGTH * 20;( v为int型变量)后,v的值是。(6)从变量的作用域角度分有全局变量和。(7)如以下图所示,在链表中pre指向的结点后面插入p所指向的节点的关键语句是: 和 O其中结构体数据类型和指针变量的定义如下:struct stu int a;float b;struct stu *next; *head, *pre,*p;'pre青岛理工大学试卷纸共8页 第3页试题要求:L试题后标注此题得分试卷应附有评卷用标准答案,并有每题每步得分标准;3.试卷必须提前一周送考试中心;4.考试前到指 定地点领取试卷;5.考生不得拆散试卷,否那么试卷无效。学号:姓名:班级:三、程序阅读题(每题3分,共15分)1、int main(void)(int a = 1, c = 65, d = 97;printf(nalO = %d, a8 = %o, al6 = %xn", a, a, a);printf(nclO = %d, c8 = %o, cl6 = %x, cc = %cnn, c, c, c, c); d+;printf("dlO = %d, de = %cn", d, d);return 0;)运行结果:2、int main(void)int kJ;int a = 3, -5, 18,27, 37,23,69, 82, 52,-15);for(k = 0, j = k; k < 10; k+)if(ak > a|j)j = k;printf(nm = %d, j = %dn",aj, j);return 0;)运行结果:3、void ast(int x, int y, int *cp, int *dp)(*cp = x + y;*dp = x - y;)int main(void)(int a, b, c, d;a = 6;b = 3;ast(a,b,&c,&d);printf("%d,%dnH,c, d);return 0;)运行结果:4、int main(void)(char s = "china”,*p;for(p=s+1; p<s+4; p+) printf(H%snn, p);)运行结果:青岛理工大学试卷纸共 8 页 第4页试题要求:L试题后标注此题得分试卷应附有评卷用标准答案,并有每题每步得分标准;3.试卷必须提前一周送考试中心;4.考试前到指 定地点领取试卷;5.考生不得拆散试卷,否那么试卷无效。学号:姓名:班级:5、long fun(int n)(long s;if(n = 1)s = 1;elses = fun(n-l) + n; return s;)int main(void)(printf("ldn”, fun(5);运行结果:四、编程题(共6题,选做5题,共30分)(1)输入三个整数,按照从大到小的顺序输出,如:输入“5 3 6”,输出“6 5 3”。(2)编程实现求解一元二次方程ax2+bx+c=0的根,由键盘输入a, b, c三个整数,其中a不等于0。提示考虑无实根,单实根,双实根的 情况,如输入“1 -3 2”,输出“xl=2,x2=l”。(3)编写程序实现功能如下:从键盘输入一个字符串(不超过99个字符),可能含有大小写字母、数字、空格、其他符号(如:!#$%八&* ()等),程序代码实现对字符串中的大小写字母转换,然后输出,如输入“#12a4B 5tBnY 88a”,输出为“#12A4b 5TbNy 88A”。(4)编写程序实现如下功能:利用一维数组,从键盘输入5个学生的成绩,输出这些学生成绩的平均分。(5)利用指针,编程实现 strcat 的功能:void MyStrCat(char "target, char *source);将字符串source连接到字符串target的后面.(6)用结构体类型描述一个人的情况,成员包括姓名、工资、年龄,编写程序输入5个人的情况,然后为每个人做如下操作:增加工资 30%、年龄增加一岁,输出修改后的5个人的数据。青岛理工大学试卷纸共 8 页 第5页试题要求:L试题后标注此题得分试卷应附有评卷用标准答案,并有每题每步得分标准;3.试卷必须提前一周送考试中心;4.考试前到指 定地点领取试卷;5.考生不得拆散试卷,否那么试卷无效。学号:姓名:班级:标准答案及评分标准A(/)/B()卷二. 单项选择题(1*30)12345678910DCCCDAADCc11121314151617181920ACBCDABCBD21222324252627282930DCADADDBCB二、填空题(1*10)1 . 22 .、= 1.0/2* Q + b) + pow(x, y);1.14. printfC-S.lf;f);5. 8806. 局部变量7. pnext = pre>next; pre>next = p;三、程序阅读题(3*5)1. alO = 1, a8 = 1, al6 = 1clO = 65, c8 = 101, cl6 = 41, cc = Adl0 = 98, dc = b2. m = 82, j = 73. 9,34. hinainana5. 15四、编程题(共6题,选做5题,每题6分,共30分)(1)程序代码如下:(也可以使用排序算法)#include <stdio.h>int main()(int x,y,z;int t;printf(nPlease input 3 integers: H);scanf(n%d%d%dn,&x,&y,&z);if (x<y)(t=x; x=y; y=t;if (x<z)(t=x; x=z; z=t;)if (y<z)t=y; y=z; z=t;printf(HThe result is %d %d %dnH,x,y,z);(2)程序代码如下:#include <stdio.h>#include <math.h>int main()(float a,b,c;float delta;float xl,x2;printf(nPlease input a b c of the solution:");scanf(M %f%f%fn,&a,&b,&c);delta二b*b4*a*c;if (delta<0)printf(MNo roots!nM);else if (de!ta=0)printf(Hxl=x2=%fnM,-b/(2*a);else(xl=(-b+sqrt(delta)/2/a;x2=(-b-sqrt(delta)/2/a;printf(Hxl=%f x2=%fnn,xl,x2);(3)程序代码如下:#include <stdio.h>#include <string.h>#define MAX 100void main()(char sMAX;inti;printf(nPlease input a string: gets(s);for (i=0; i<strlen(s); i+) if(si>=,a, && si<=,z,) si=si-,a,+,A,;else if(si>=*A* && si<=,Z,) si=si-,A,+,a,;printf(uThe result is %snM,s);)(4)程序代码如下:#include <stdio.h>void main()int score5J;int totalScore=0;int i;for(i=0;i<5;i+)scanf(H%dH,&scorei);totalScore=totalScore+scorei;)printf(H %fnn,totalScore/5.0);(5)程序代码如下:void MyStrCat(char "target, char *source)while (*target+);target;while (*target+=*source+); (6)程序代码如下:#include <stdio.h>#define N 5struct Personinfo char Name50;float Salary; int Age;);void main() struct Personinfo dataN;int i;printf(nPlease input data:for (i=0; i<N; i+)scanf(u%s%f%dH,datail.Name,&datail.Salary,&datail.Age);for (i=0; i<N; i+) (datai.Salary*=1.3;datai.Age+; )printf(nNamettSalaryttAgenu);for (1=0; i<N; i+)printf(n%stt%ftt%dnn,datai.Name,datalJ.Salary,datai.Age);