1、专 业 班 级 : 身 份 证 号 : 一姓名: 准 考 证 号 : 密- -封-线-一、单项选择题(共20题,每题2分,共计40分)湖北文理学院2022 年C语言程序设计专升本精选模拟(一)考试时间: 【120分钟】出 题 人 : 【孟兰英】考试方式: 【闭卷、笔试】总分: 【150分】题号一二三总分得分答案一律写在答题纸上,写在试卷上无效试卷不得带出考场考试中途不能无端离场得分评卷人( )1、 以下说法中不正确是A、使用while 循环时,循环变量初始化的操作应在循环语句之前完成B、while循环是先判断表达式,后执行循环体语句C 、do-while 和for 循环均是先执行循环体语句,后
2、判断表达式D 、for,while 和for-while 循环中的循环体均可以由空语句构成( )2、 若有定义语句int i=2,j=3;, 则表达式i/i 的结果是 。A 、0B 、0.7C、0.66667D、0.66666667 。( )3、 表达式x+1x 是A、算术表达式B、 非法表达式C、 字符串表达式D、关系表达式( )4、 下面不属于条件语句关键字的是A 、elseB 、switchC、whileD 、if( )5、 设有如下定义:struct skint a ;float b ;第1/11页data若 有,*p ;p=&data;第2/11页, 则对 data 中的 a 域的正
3、确引用是 A 、(*p ) .data.aB 、(*p ) .aC、p-data.aD 、p.data.a( )6、 下面用户自定义的标识符中,合法的是 A、breakB 、Volume 1C、4sD 、a+b( )7、 定义如下变量和数组: int i,x33=1,2,3,4,5,6,7,8,9;则下面语句for(i=0;i3;i+)printf(%d,xi2-i); 的输出结果是 A、159B、147C、357D、369( )8、 在循环结构中, 可以使得同一组语句一次也不执行。A、当型循环B、直到型循环C、都不能实现D 、do-while语句( )9、 以下能正确定义字符串的语句是 。A
4、 、char str =064;B 、char str=kx43;C 、char str=;D 、char str =”0;( )10、著有下列定义,则( )是对a 数组元素地址的正确引用。 int a5,*p=a;A、p+5B 、*a+1C 、&a+1D 、&a0( )11、 是构成c 语言程序的基本单位。A、函数B、过程C、子程序D、 子例程( )12、 在c 程序中有如下语句:char *func(int x,int y); 它是 A 、对函数func 的定义。B、对函数func 的调用。C 、对函数func 的原型说明。D、不合法的。( )13、 下列程序的运行结果是 。#includ
5、evoid sub(int*s,int*y)static intm=4;*y=s0;m+;void main()int a=1,2,3,4,5,k;int x;printf(n);for(k=0;kname,p-num);printf(%s %dn,p-name,p-num);程序运行后的输出结果是 ,第3/11页A 、SunDan 20042B 、SunDan 20044C 、LiSiGuo 20042D 、YangSan 20041( )15、 有以下程序#includes main()int a=1,b=2;for(;a8;a+)b+=a;a+=2;printf(“%d,%dn”,a,b
6、);程序运行后的输出结果是A、9,18B、8,11C、7,11D、10,14( )16 、c 语言中不可以嵌套的是 A、函数调用B 、函数定义C 、循环语句D、选择语句( )17、 有以下程序struct stuint num;float totalscore;void f(struct stu p)struct stu s2=20044,550,20045,537;p.num =s1.num;p.totalscore =s1.totalscore;main()struct stu s2=20041,703,20042,580;f(s0);printf(%d %3.0fn,s0.num,s0.
7、totalscore);程序运行后的输出结果是 。A、20045537第4/11页二、 填空题 (共10题,每题2分,共计20分)B、20044550C、20042580D、20041703( )18、 下述程序执行的输出结果是 。main()char a24;strcpy(a,are);strcpy(a1,you);a03=&printf(%sn,a);A 、arec&youB、youC 、areD 、&.( )19、 以下叙述中正确的是 0)?fun(x-1)+fun(x-2):1);i=fun(3);i 的值为22、 执行下列程序段后,输出的a 的值是main()int a =2;swi
8、tch(a)case 0:a-;第5/11页break;case 1:a+;break;case 2:a=a+5breakprintf(%d,a)23、 结构化程序设计的3种基本结构是:()结构、选择结构、循环结构,这三种基本结构构成了复杂的c 语言程序。24、 在c 语言中,如果采用printf 函数将整个字符串一次输出,那么对应的格式控制符为 。25、 下列程序段的运行结果是 。float b=80 ,*q ;q=&b;printf(%f,*q);26、 函数f 的形参a 为一个1010 的二维数组, n 的值为5,以下程序段的运行结果为。f(int a20, int n)int i,j,
9、k;j=n/2+1;a1j=1;i=1;for(k=2;k=n*n;k+)i=i-1;j=j+1;if(in)i=i+2;j=j-1;elseif(in)j=1;if(aij=0)aij=k;elsei=i+2;j=j-1;aij=k;main()int a2020=0,n,i,j;scanf(%d,&n);f(a,n);第6/11页三、 简答题 (共3题,每题分值不等,共计40分)for(i=1;i=n;i+)for(j=1;jx 的结果为【1】。得分评卷人31、 编写程序: 输出9*9口诀。 (本题10分)32、 编写程序:假设奖金税率如下(a 代表奖金,r 代表税率)500=a1 000
10、 r=5%1000=a 2000 r=8%2000=a3000 r=10%3000=a r=15%输入的一个奖金数,求税率和应缴税款以及实得的奖金数(扣除奖金税后)。 (本题14分)33、 编写程序:从键盘输入 n(n10) 个学生的学号(学号为4位的整数,从1000开始)、成绩并存入结构数组中,按成绩从低到高排序并输出排序后的学生信息。输入输出示例:括号内为说明,无需输入输出输入样例:3(n=3)100085100190100275输出样例:第7/11页100275100085100190(本题16分)第8/11页参考答案一、单项选择题1、C【解析】本题主要考查的知识点为for 、while
11、 和do-while 循环的特点。要点透析 for 循环是先判断表达式,后执行循环体语句。2、A【解析】由于变量i、j 都是整型变量,所以两者相除所得的商也是整型数据。3、D4、C【解析】条件语句主要由if-else 结构和switch 多分支语句, while 属于循环语句的关键字。5、B6、B7、C8、A9、D10、D11、A12、C13、A【解析】本题中sub(int*s,int*y) 函数的参数是两个指针型变量,在函数体内将数组s 的第一个元素赋给y。主程序 内,首先定义了一维数组并赋初值,然后通过for 循环,5次调用sub(a,&x) 函数,每一次调用都是将数组a 的第一个元 素1
12、赋给x, 并输出。14、A15、D16、B17、D18、A19、A【解析】本题考查 typedef 的使用方法, typedef 对已存在的类型使用一个新的名字,结构体类型中的成分可以是数 组和指针,所以 B 选项错误,结构体类型的变量可以在声明结构体的时候一起定义,C 选项错误,D 选项中可以一起定义。20、B二、填空题21、522、723、顺序24、%s第9/11页25、80.000000#80.026、1724181523571416461320221012192131118252927、0#零28、*29、85.5030、1三、 简答题31 、#includeint main()int
13、 i,j,result;printf(n);for(i=1;i10;i+)for(j=1;j=i;j+)result=i*j;printf(%d*%d=%-3d,i,j,result);/*-3dprintf(n);/* 每一行后换行*/表示左对齐,占3位*/第10/11页【解析】分行与列考虑,共9行9 列, i 控制行, j 控制列。32、 题 中r 代表税率,t 代表税款,b代表实得奖金数。此为分段税率,用switch.case 语句方便计算。当输入a 后,利用整除的特性,把奖金a 的值除以500取商作为switch 语句的判断条件。#includemain()floata,r,t,b;i
14、nt c;scanf(“%f”,&a);if(a=3000)c=6elsec=a/500;switch(c)case 0:r=0;break;case 1:r=0.05;break;case 2:case 3:r=0.08;break;case 4:case 5:r=0.1;break;case 6:r=0.15;break;t=a*r;b=a-t;printf(“r=%f,t=%f,b=%f”,r,t,b);33 、#include #define N 8typedef struct student第11/11页intintno;score;student;int main()student
15、 s1000;intintn,i,j;temp;scanf(%d,&n);for(i=0;in;i+)scanf(%d %d,&si.no,&si.score)for(i=0;in;i+)for(j=0;jsj+1.score)/temp=sj.score;sj.score=sj+1.score; sj+1.score=temp;对分数排序/分数排序完毕后,学号也要交换temp=sj.no;sj.no=sj+1.no;sj+1.no=temp;for(i=0;in;i+)jprintf(%d %dn,si.no,si.score)return 0;专业班级: 身 份 证 号 : 姓 名 : 准
16、考证号: 密 -封-线-一、单项选择题(共20题,每题2分,共计40分)湖北文理学院2022 年C 语言程序设计专升本精选模拟(二)考试时间: 【120分钟】出题人: 【严红】考试方式: 【闭卷、笔试】总分: 【150分】题号一二三总分得分答案一律写在答题纸上,写在试卷上无效试卷不得带出考场考试中途不能无端离场得分评卷人( )1、 函数 ftell(fp) 的作用是 A、得到流式文件中的当前位置B 、移到流式文件的位置指针C、初始化流式文件的位置指针D、以上答案均正确( )2、 设函数中有整型变量a, 为保证其在未赋初值的情况下初值为0,应选择的存储类别是 gA 、staticB、regist
17、erC 、autoD、auto或register( )3、 运行下面程序时,从键盘输入字母h, 则输出结果是#includemain()char ch;ch=getchar();switch(ch)case h:printf(hello!n);case g:printf(good morning!n);default :printf(bye_bye!n);A、Hello!B、Hello!GoodMoring!C、Hello!Goodmorning!Bye_Bye!第1/11页D 、Hello!Bye_Bye!( )4、 下列程序的运行结果是 #includemain()int x=5,a=1,
18、b=2,c=5,d=0;if(ab)if(b!=3)if(!c)x=1;else if(d)x=1;else x=-1;printf(%d,x);A 、-1B 、0C 、1D、不确定的值( )5、 已定义以下函数int fun(int *p)return *p;则fun函数返回值足A 、不确定的值B、一个整数C 、形参p中存放的值D、形参p的地址值( )6、 若变量已正确定义为float 型,要通过输入语句:scanf(%f%f%f,&a,&b,&c); 给a 赋值11.0,b 赋值22 .0,e 赋值33.0,不正确的输入形式是 A、112233B、11.0,22.0,33.0C、11.02
19、2.033.0D、1122( )7、 有字符数组a80 和b80, 则正确的输出语句是 A、puts(a,b);B 、printf(%s,%s,a,b);C 、putchar(a,b);D 、puts(a),puts(b);( )8、 在浮点数编码表示中,(1)在机器数中不出现,是隐含的。A、阶码B、符号C、尾数D、 基数( )9、 下面各语句行中,能正确进行给字符串赋值操作的语句行是 第2/11页A 、char st45=ABCDE;B 、char s5=A,B,C,D,E;C 、char *s=ABCDE;D 、char *s; scanf(%s,*s);( )10、 以下对一维数组c 进
20、行正确的定义初始化的语句是 。A 、int c 10=0;B 、int c 10 =0*10;C 、int c 1=0,0,0,0,0,0,0;D、int c 10 =0;( )11、 若有以下调用语句,则不正确的fun 函数的首部是 ,main()int a50,n;fun(n,&a9); A 、void fun(int m,int x)B 、void fun(int s,int h4)C 、void fun(int p,int *s)D 、void fun(int n,int x)( 1 10 0 语 气 由 非 穴 的 其 本 数 据 米 型 句 括 A 、整 型 , 实 型 , 逻 辑
21、 型B 、整 型 , 实 型 , 字 符 型C 、整 型 , 字 符 型 , 逻 辑 型D、整 型 , 实 型 , 逻 辑 型 , 字 符 型( )13、 设有如下函数定义:int f(char *s)char *p=s;while(*p!=0)p+;return(p-s);如果在主程序中用下面的语句调用上述函数,则输出结果为printf(%dn,f(goodbey!);A、3B 、6C、8D、0( )14、 以下关于c语言数据类型使用的叙述中错误的是 。A、若要准确无误差地表示自然数,应使用整数类型B 、若要保存带权多位小数的数据,应使用双精度类型C 、若要处理如“人员信息”等含有不同类型的
22、相关数据,应自定义结构体类型第3/11页D、若只处理“真”和“假”两种逻辑值,应使用逻辑类型( )15、 下面程序的运行结果是#includemain()char a=morning,t;int i,j=0;for(i=1;i7;i+)if(aj0);A 、1B 、3C 、4D 、5( )17、 递归算法的执行过程一般来说可先后分成 和 两个阶段。A、试探B、递推C 、枚举D、分析( )18、 选择出合法的if 语句(设int x,a,b,c:) A 、if(a=b) x+;B 、if(a=b) x+;C 、if(ab) X+;D 、if(a=b) X+;二、 填空题(共10题,每题2分,共计
23、20分)( )19、 有以下程序:main()char a7=a00a00:int i,j i=sizeof(a);j=strlen(a):printf(%d%dn,i,j);程序运行后的输出结果是 。A、22B、76C、72D、62( )20、 下面关于主程序的说法,错误的是 ,第5/11页A、 B、 C、D、a.next=q;p.next=&b;p-next=&b;(*p).next=q;得分评卷人21、 设int a=5,b=6;则表达式(+a=b-)?+a:-b 的值是 22、 下列给定程序中函数fun() 的功能是:用递归算法计算斐波拉契数列中第n项的值。从第1项起,斐波拉契数列为:
24、1,1,2,3,5,8,13,21,例如,若给n输入7,则该项的斐波拉契数值为13。请改正程序中的错误,使它能得出正确结果。 注意:不要改动main() 函数,不得增行或删行,也不得更改程序的结构!试题程序:long fun(int g)(switch(g);case 0:return 0;case 1:case 2:return 1;return(fun(g-1)+fun(g-2);)void main()long fib;int n;printf(input n:);scanf(%d,&n);printf(n=%dn,n);fib=fun(n);printf(fib=%dnkn,fib);
25、。23、 下列程序段的运行结果是main()int m=l,t=1;for(;)m=m*t;t+:if(t4)break;printf(%dn,m);24、 在c语言中,将字符串中大写字母转换成小写字母的函数是 25、 下列程序的功能是计算圆的面积,将程序补充完整。#define PI=3.14159main()float r,s;printf(Enter a number r:); s=PI*r*r ;26、 若定义了int a10,将数组元素中最后一个元素”赋值为10”语句是 。27、 局部变量又称内部变量,是在函数 定义的变量28、 下列程序段的运行结果是 main()int a=5,b
26、=6,c;int sub(int,int);c=sub(a ,b);printf(%dn,c);、int sub(int x,int y)int z;z=x-y;return z ;29、 执行以下程序的输出结果是 ,#include main()int i,n4=1;for(i=1;inext;r=q-next;sum+=q-next-num;sum+=r-next-next-num;printf(%dn,sum);得分评卷人31、 编写程序:从键盘上输入9个数,按3行3列的格式输出。 (本题10分)32、 编写程序:编写input() 和output() 函数输入,输出5个学生的数据记录。
27、 (本题14分)33、 编写程序:从键盘输入 n(n10) 个学生的学号(学号为4位的整数,从1000开始)、成绩并存入结构数组中,查找并输出成绩最高的学生信息。输入输出示例:括号内为说明,无需输入输出输入样例:3(n=3)100085100190100275输出样例:100190 (本题16分)第7/11页参考答案一、单项选择题1、A2、A【解析】存储类说明符有auto 、register 、static 、extern 和typedef。 auto 和register 将声明的对象说明为自动存储类对象,这些对象仅可用在函数中。这种声明也具有定义的作用,并将预留存储空间。 register
28、说明的声明等价于auto 说明的声明,所不同的是, register 暗示了声明的对象将被频繁地访问,将尽可能存储在寄存器中。如果一个对象被声明为register, 则将不能对它应用一元运算符&,声明为register 但实际按照auto 类型处理的对象的地址进行计算是非法的。static 将声明的对象说明为静态存储类。这种对象可以用在函数内部或者函数外部。在函数内部,该说明符将引 起存储空间的分配,具有定义的作用。在函数外部,该说明符将引起声明对象为具有内部链接。另外,若将其定义为static 类型,则其初值默认为0。函数内部的extern 声明表明,被声明的对象的存储空间定义在其他地方。在
29、函数外部,说明声明的对象具有外部链接。typedef 说明符并不会为对象预留存留空间。3、C【解析】本题主要对switch 语句进行了考查。switch 语句的执行过程为:进入switch 结构后,对条件表达式进行运算,然后从上至下去找与条件表达式值相匹配的case, 以此作为入口,执行switch 结构中后面的各语句,直到遇到break 语句,则跳出switch 语句,如果各case 都不匹配时则执行default 后面的语句。本题中ch 为字符H, 所以case H 条件中的语句将被执行,由于没有break 语句,所以case C 后的语句也被执行,由于同样的缺少break 语句,所以default 后的语句也被执行了。4、A【解析】本题考查if else语句。第1个if语句,先判断条件,发现ab 条件成立,执行下列的语句;第2个汀语句,先 判断条件,发现b!=3 条件成立,执行下列的语句;第3个汀语句,先判断条件, c=5, 则!c 条件不成立,执行与其配对的else 语句:第4个if 语句,先判断条件, d=0, 条件不成立,则x=-1, 结束循环。5、D6、B7、D8、D【解析】浮点数编码表示中,符号、阶码和尾数均有体现,只有基数是固定的,无需出现。9、C10、D11、C【解析】根据主函树中的函数调用可知,第一个实参为整型数据