版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、单项选择题(共20题,每题2分,共计40分)2022年《C语言程序设计》专升本精选模拟(一)题号一二三总分得分●答案一律写在答题纸上,写在试卷上无效●试卷不得带出考场●考试中途不能无端离场得分评卷人A、使用while循环时,循环变量初始化的操作应在循环语句之前完成B、while循环是先判断表达式,后执行循环体语句C、do-while和for循环均是先执行循环体语句,后判断表达式D、for,while和for-while循环中的循环体均可以由空语句构成()2、若有定义语句"inti=2,j=3;",则表达式i/i的结果是。C、0.66667D、0.66666667 。 。A、算术表达式B、非法表达式C、字符串表达式D、关系表达式{第2/11页p=&data;,则对data中的a域的正确引用是()6、下面用户自定义的标识符中,合法};则下面语句for(i=0;i<3;i++)printf("%d",x[i][2-i]);的输出结果是A、159B、147C、357D、369()8、在循环结构中,可以使得同一组语句一次也不执行。A、当型循环B、直到型循环C、都不能实现()9、以下能正确定义字符串的语句是。()10、著有下列定义,则()是对a数组元素地址的正确引用。inta[5],*p=a;()11、是构成c语言程序的基本单位。B、过程C、子程序D、子例程A、对函数func的定义。B、对函数func的调用。C、对函数func的原型说明。D、不合法的。()13、下列程序的运行结果是。#include<stdio.h>voidsub(int*s,int*y){voidmain(){printf("\n");{sub(a,&x);printf("%d,",x);{charname[10];voidf(char*name,intnum){structstus[2]={{"sundan",20044},{"penghua",20045}};num=s[0].num;}main(){structstus[2]={{"yangsan",20041},{"lisiguo",20042}},*p;p=&s[1]:f(p->name,p->num);printf("%s%d\n",p->name,p->num);}程序运行后的输出结果是,第3/11页第4/11页C、LiSiGuo20042D、YangSan20041#includes<stdio.h>main(){{b+=a;a+=2;}printf(“%d,%d\n”,a,b);}程序运行后的输出结果是A、9,18B、8,11C、7,11D、10,14()16、c语言中不可以嵌套的是A、函数调用B、函数定义C、循环语句D、选择语句{intnum;{p.num=s[1].num;}main(){}程序运行后的输出结果是。A、20045537第5/11页二、填空题(共10题,每题2分,共计20分)二、填空题(共10题,每题2分,共计20分)()18、下述程序执行的输出结果是。main(){strcpy(a,"are");}A、使用typedef定义新类型名后,新类型名与原类型名实际上是等价的B、结构体类型中的各个成分均不能是数组或指针C、结构体类型的变量,不能在声明结构体类型组成时一起定义D、元素为结构体类型的数组,只能在声明过结构体类型之后,单独进行定义()20、c语言中,定义结构体的保留字是得分评卷人21、执行以下语句段intfun(intx){return((x>0)?fun(x-1)+fun(x-2):1);}i的值为main(){{case0:a--;第6/11页break;break;case2:a=a+5break}23、结构化程序设计的3种基本结构是:()结构、选择结构、循环结构,这三种基本结构构成了复杂的c语言程序。25、下列程序段的运行结果是。floatb=80,*q;printf("%f",*q);26、函数f的形参a为一个10×10的二维数组,n的值为5,以下程序段的运行结果为 。f(inta[][20],intn)j=n/2+1;a[1][j]=1;{i=i-1;j=j+1;if(i<1&&j>n){i=i+2;j=j-1;}{}if(a[i][j]==0)a[i][j]=k;{i=i+2;j=j-1;a[i][j]=k;}main(){inta[20][20]={0},n,i,j;f(a,n);第7/11页三、三、简答题(共3题,每题分值不等,共计40分){printf("\n");},27、ferror函数用来检测文件读写时是否发生错误,若未发生读写错误,则返回值是,。28、c语言中与指针有关的两个运算符是&与。29、下列程序段的运行结果是。{charname[20];}a={1021103,"jiangping",'m',85.5};main(){printf(“%.2f\n”,a.score)}{{得分评卷人32、编写程序:假设奖金税率如下(a代表奖金,r代表税率)500<=a<1000r=5%1000<=a<2000r=8%2000<=a<3000r=10%3000<=ar=15%输入的一个奖金数,求税率和应缴税款以及实得的奖金数(扣除奖金税后)。(本题14分)33、编写程序:从键盘输入n(n<10)个学生的学号(学号为4位的整数,从1000开始)、成绩并存入结构数组中,按成绩从低到高排序并输出排序后的学生信息。输入输出示例:括号内为说明,无需输入输出输出样例:第8/11页第9/11页[要点透析]for循环是先判断表达式,后执行循环体语句。4、C9、D【解析】本题考查typedef的使用方法,typedef对已存在的类型使用一个新的名字,结构体类型中的成分可以是数20、B第10/11页27、0#零intmain(){inti,j,result;for(i=1;i<10;i++){for(j=1;j<=i;j++){result=i*j;printf("%d*%d=%-3d",i,j,result);/*-3d}printf("\n");/*每一行后换行*/表示左对齐,占3位*/【解析】分行与列考虑,共9行9列,i控制行,j控制列。32、题中r代表税率,t代表税款,b代表实得奖金数。此为分段税率,用switch...case语句方便计算。当输入a后,利用整除的特性,把奖金a的值除以500取商作为switch语句的判断条件。#include<stdio.h>main(){floata,r,t,b;if(a>=3000)c=6elsec=a/500;switch(c){break;break;case2:case3:r=0.break;case4:case5:r=0.1;break;case6:r=0.15;break;t=a*r;b=a-t;}typedefstructstudent{no;intmain(){n,i,j;temp;{}{{if(s[j].score>s[j+1].score)//{temp=s[j].score;s[j].score=s[j+1].score;对分数排序//分数排序完毕后,学号也要交换temp=s[j].no;s[j+1].no=temp;}{}j第1/11页一、单项选择题(共20题,每题2分,共计40分)题号一二三总分得分●答案一律写在答题纸上,写在试卷上无效●试卷不得带出考场●考试中途不能无端离场得分评卷人A、得到流式文件中的当前位置B、移到流式文件的位置指针C、初始化流式文件的位置指针D、以上答案均正确()2、设函数中有整型变量a,为保证其在未赋初值的情况下初值为0,应选择的存储类别是 g()3、运行下面程序时,从键盘输入字母h,则输出结果是#include<stdio.h>main(){switch(ch){case’h’:printf("hello!\n");case’g’:printf("goodmorning!\n");default:printf("byeGoodMoring!Goodmorning!Bye_Bye!第2/11页Bye_Bye!()4、下列程序的运行结果是#include<stdio.h>{intx=5,a=1,b=2,c=5,d=0;if(a<b)if(b!=3)if(!c)x=1;elseif(d)x=1;elsex=-1;}D、不确定的值{}则fun函数返回值足A、不确定的值C、形参p中存放的值D、形参p的地址值11.0,b赋值22.0,e赋值33.0,不正确的输入形式是A、112233B、11.0,22.0,33.0()7、有字符数组a[80]和b[80],则正确的输出语句是()8、在浮点数编码表示中,(1)在机器数中不出现,是隐含的。()9、下面各语句行中,能正确进行给字符串赋值操作的语句行是第3/11页B、chars[5]={’A','B','C','D','E'};D、char*s;scanf("%s",*s);()10、以下对一维数组c进行正确的定义初始化的语句是。()11、若有以下调用语句,则不正确的fun函数的首部是,main(){fun(n,&a[9]);}A、voidfun(intm,intD、voidfun(intn,intx){while(*p!=’\0')p++;return(p-s);}如果在主程序中用下面的语句调用上述函数,则输出结果为printf(""%d\n"",f(""goodbey!""));()14、以下关于c语言数据类型使用的叙述中错误的是。A、若要准确无误差地表示自然数,应使用整数类型B、若要保存带权多位小数的数据,应使用双精度类型C、若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型第4/11页D、若只处理“真”和“假”两种逻辑值,应使用逻辑类型#include<stdio.h>main(){chara[]="morning",t;for(i=1;i<7;i++){if(a[j]<a[i]){j=i;printf("%s",a);若a、b为int型变量,则执行以下语句后a的值为()b=10;{b-=a;a++;}while(b-->0);()17、递归算法的执行过程一般来说可先后分成和两个阶段。()18、选择出合法的if语句(设intx,a,b,c:)A、if(a=b)x++;B、if(a=<b)第5/11页二、填空题(共10题,每题2分,共计20分)二、填空题(共10题,每题2分,共计20分)main(){程序运行后的输出结果是。A、22得分评卷人则表达式(++a==b--)?++a:--b的值是22、下列给定程序中函数fun()的功能是:用递归算法计算斐波拉契数列中第n项的值。从第1项起,斐波拉契数列为:1,1,2,3,5,8,13,21,…例如,若给n输入7,则该项的斐波拉契数值为13。得更改程序的结构!试题程序:{return(fun(g-1)+fun(g-2));)voidmain(){printf("n=%d\n",n);printf("fib=%d\nkn",fib);}23、下列程序段的运行结果是main(){{t++:if(t>4)break;}printf("%d\n",m);24、在c语言中,将字符串中大写字母转换成小写字母的函数是25、下列程序的功能是计算圆的面积,将程序补充完整。#definePI=3.14159main(){ s=PI*r*r;}26、若定义了inta[10],将数组元素中最后一个元素”赋值为10”语句是。27、局部变量又称内部变量,是在函数定义的变量28、下列程序段的运行结果是main(){intsub(int,int);intsub(intx,inty){returnz;}29、执行以下程序的输出结果是,#include<stdion.h>main(){inti,n[4]={1};{printf("%d",n[i]);}30、以下程序运行后的输出结果是{};第6/11页第7/11页三、简答题三、简答题(共3题,每题分值不等,共计40分){structnodes[3]={{1,’\0'},{2,’\0'},{3,’\0'}},*p,*q,*r;s[0].next=s+1;s[1].next=s+2;s[2].next=s;p=S;q=p->next;r=q->next;sum+=r->next->next->num;printf("%d\n",sum);得分评卷人33、编写程序:从键盘输入n(n<10)个学生的学号(学号为4位的整数,从1000开始)、成绩并存入结构数组中,查找并输出成绩最高的学生信息。输入输出示例:括号内为说明,无需输入输出3(n=3)输出样例:100190(本题16分)第8/11页参考答案【解析】存储类说明符有auto、register、static、extern和typedef。①auto和register将声明的对象说明为自动存储类对象,这些对象仅可用在函数中。这种声明也具有定义的作用,并将预留存储空间。register说明的声明等价于auto说明的声明,所不同的是,register暗示了声明的对象将被频繁地访问,将尽可能存储在寄存器中。如果一个对象被声明为register,则将不能对它应用一元运算符&,声明为register但实际按照auto类型处理的对象的地址进行计算是非法的。②static将声明的对象说明为静态存储类。这种对象可以用在函数内部或者函数外部。在函数内部,该说明符将引起存储空间的分配,具有定义的作用。在函数外部,该说明符将引起声明对象为具有内部链接。另外,若将其定义为static类型,则其初值默认为0。③函数内部的extern声明表明,被声明的对象的存储空间定义在其他地方。在函数外部,说明声明的对象具有外部链接。④typedef说明符并不会为对象预留存留空间。【解析】本题主要对switch语句进行了考查。switch语句的执行过程为:进入switch结构后,对条件表达式进行运算,然后从上至下去找与条件表达式值相匹配的case,以此作为入口,执行switch结构中后面的各语句,直到遇到break语句,则跳出switch语句,如果各case都不匹配时则执行default后面的语句。本题中ch为字符’H’,所以case’H’条件中的语句将被执行,由于没有break语句,所以case’C’后的语句也被执行,由于同样的缺少break语句,所以default后的语句也被执行了。【解析】本题考查ifelse语句。第1个if语句,先判断条件,发现a<b条件成立,执行下列的语句;第2个汀语句,先判断条件,发现b!=3条件成立,执行下列的语句;第3个汀语句,先判断条件,c=5,则!c条件不成立,执行与其配对的else语句:第4个if语句,先判断条件,d=0,条件不成立,则x=-1,结束循环。【解析】浮点数编码表示中,符号、阶码和尾数均有体现,只有基数是固定的,无需出现。【解析】根据主函树中的函数调用可知,第一个实参为整型数据,第二个实参为整型数组中一个元素的地址值。因此函数fun()的第二个形参应该为一个指针,故应该选择C。实参不是将整个数组传递给形参,故选项A和B不正确;选项D的第二个形参的数据类型与实参的数据类型不符。【解析】本题考查了一维数组元素的引用方法。题中数组a为一字符串数组,通过数组首地址和下标可以引用数组中的每个元素。因为字符数组相当于字符串【解析】当第一次进入循环时a=1,先执行"b-=a;a++;"此时b=9,a=2;然后判定b是否小于0。如果b小于0,断续执行循环体;如果b不小于0,循环终止。完成判定后b自减1。如此循环体被执行四次,最终因b=-3<0而终止。循环终止能采用递归描述的算法通常有这样的特征:为求解规模为N的问题,设法将它分解成一些规模较小的问题,然后从这些小问题的解方便地构造出大问题的解,并且这些规模较小的问题也能采用同样的分解和综合方法,分解成规模更小的问题,并从这些更小问题的解构造出规模稍大问题的解。特别地,当规模N=1时,能直接得到解。递推算法的执行过程分递推和回归两个阶段。在递推阶段,把较复杂的问题的求解推到比原问题简单一些的问题的求解;在回归阶段,当获得最简单情况的解后,逐级返回,依次获得稍复杂问题的解。【解析】A虽然是赋值语句,但是在逻辑运算中自动将赋值语句的结果当作逻辑值,方法是,如果赋值语句的结果是非零值则当作逻辑真,否则当作逻辑假。C语言中关系运算符有<(小于)、>(大于)、>=(大于等于)、<=(小于等于)、==(等于)、!=(不等于)等六种,可见其他的条件表达式中的关系符写错了。【解析】C语言中以’\0'作为字符串的结束符,且strlen()函数计算的是’\0'字符前的所有字符的个数。数组定义以后系统就为其分配相应大小的内存空间,而不论其中有没有内容。20、Bcasel:case2:returnl;26、a[9]=1030、5三、简答题31、#include"stdio.h"main(){for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);{for(j=0;j<3;j++)printf("%d",a[i][j]);printf("\n");]typedefstruct{charname[20];voidinput(Stu*stu);voidoutput(Stu*stu);intmain(){printf("请输入5个学生的信息:姓名性别年龄:\n");input(stu);printf("5个学生的信息如下:\n姓名性别年龄\n");output(stu);return0;voidinput(Stu*stu){scanf("%s%s%d",stu[i].name,stu[i].sex,&(stu[i].age))}voidoutput(Stu*stu){printf("%s%s%d\n",stu[i].name,stu[i].sex,stu[i].age);}typedefstructstudent{no;no;intmain(){第10/11页第11/11页{scanf(“%d”,&s[i].no);scanf(“%d”,&s[i].score)max=s[0].score;if(max<s[i].score)max=s[i].score;}{if(s[i].score==max)printf("%d",s[i].no);}printf("%d",max);return0第1/12页一、单项选择题(共20题,每题2分,共计40分)2022年《C语言程序设计》专升本精选模拟(三)题号一二三总分得分●答案一律写在答题纸上,写在试卷上无效●试卷不得带出考场●考试中途不能无端离场得分评卷人()1、文件的存取方式是由文件的性质和用户使用文件的情况确定的,一般文件的存取方式有两种A、直接存取和间接存取B、顺序存取和随机存取C、只读存取和读写存取值的数据类型是值的数据类型是D、不确定()3、以下程序的输出结果是#include<stdio.h>main(){if((++a<0)&&!(b--<=0))printf("%d,%d\n",a,b);elseprintf("%d,%d\n",b,a);()4、从循环体内某一层跳出,继续执行循环外的语句是第2/12页()5、字符串指针变量中存入的是A、字符串B、字符串的首地址C、第一个字符D、字符串变量()6、执行下列语句后变量x和y的值是_。y=10;x=y++;()7、以下对一维数组c进行正确的定义初始化的语句是。()8、c语言的switch语句中case后A、只能为常量B、只能为常量或常量表达式C、可为常量或表达式或有确定值的变量及表达式D、可为任何量或表达式()9、下列字符串是标识符的是。则下面语句的输出结果是()11、设有说明double(*pl)[n];其中标识符p1是A、N个指向double型变量的指针。B、指向N个double型变量的函数指针。C、一个指向由N个double型元素组成的一维数组的指针。第3/12页D、具有N个指针元素的一维指针数组,每个元素都只能指向double型量。A、操作数乘以2B、操作数除以2C、操作数除以4D、操作数乘以4()13、关于指针概念说法不正确的是。A、一个指针变量只能指向同一类型变量B、一个变量的地址称为该变量的指针C、只有同一类型变量的地址才能放到指向该类型变量的指针变量之中D、指针变量可以由整数赋,不能用浮点赋struct{{5,"abc",7,"def",9,"ghk",*p=a则值为6的表达式是A、它们的运算对象可以是任何变量和常量B、它们的运算对象可以是char型变量和int型变量,但不能是float型变量C、它们的运算对象可以是int型变量,但不能是double型变量和float型变量D、它们的运算对象可以是char型变量、int型变量和float型变量main(){while(i<10){if(i<1)continue;if(i==5)break;i++;第4/12页二、填空题(共10题,每题2分,共计20分)A二、填空题(共10题,每题2分,共计20分)B、10D、死循环{namename;p=&st;main(){for(i=1:i<=50;i++)if()sum+=i;printf("%d",sum);}()19、著有下列定义,则()是对a数组元素地址的正确引用。inta[5],*p=a;,()20、以下叙述中正确的是,B、结构体变量的地址不能作为实参传给函数C、结构体数组名不能作为实参传给函数D、结构体中可以含有指向本结构体的指针成员得分评卷人22、if语句与语句一起可以构成循环结构。第5/12页23、写出下列程序的运行结果。{for(n=3;n<=10;n++){}}24、请补充函数proc(),该函数的功能是:把从主函数中输入的由数字字符组成的字符串转换成一个无符号长整数,并且逆序输出。结果由函数返回。例如,输入:1234567,结果输出:7654321。横线上填人所编写的若干表达式或语句。试题程序:#include<stdio.h>unsignedlongproc(char*s{unsignedlongt=0:intk:inti=0;i=strlen(str);for(;i>=0;i--{}returnt;!.{printf("enterastringmadeupofgets(str);printf("thestring,is:%s\n",str);if(strlen(str)>8)printf("thestringielseprintf("theresult:%lu\n",proc(str));}{{{{}程序的输出结果a的值为第6/12页三、简答题(共3题,每题分值不等,共计40分)三、简答题(共3题,每题分值不等,共计40分)#include<stdio.h><string.h>voidmain(){i=sizeof(a);a[10]={'’a','b','c','d','\0','f','g','h',’\0'};}27、下列程序段的运行结果是{printf("%d\n",c);}intsub(intx,{returnz;28、在c语言中,实参和形参之间的数据传递是【1】向的值传递。printf("%d",a);结果是30、下列程序运行结果是#include<stdio.h>#include<string.h>{printf("%d,%s,%6.1f\n",a.a,a.b,a.c);{得分评卷人31、编写程序:输入三个整数x,y,z,请把这三个数由小到大输出。(本题10分)32、编写程序:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。(本题第7/12页14分)33、编写程序:用结构体数组,学生信息由学号、姓名,成绩组成,数据如下:201513135157张三901)使用结构体数组,将学生的数据按成绩从高到低排序显示到屏幕上2)将学生中不及格学生的姓名显示出来3)写一个函数,获取成绩低于平均分的学生记录并返回低于平均分的学生人数(本题16分)第8/12页参考答案一、单项选择题【解析】解答本题的关键在于读懂if语句条件中的表达式。初始时a=1,b=3,所以++a=2>0,因此++a<0为假,因为是进行逻辑与(&&)运算,在&&的第一个运算对象为假的前提下不用判断第二表达式的值为逻辑0,所以直接执行else语句。【解析】左移运算符“<<”是双目运算符。其功能把“<<”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。左移1位,相当于该数乘以2。【解析】根据结构变量的存储特点,p+1意味着增加地址值为结构体数组a的一个为5,再执行自加1运行,结果为6。【解析】++(或--)的运算结果是使运算对象增1(或减1);运算对象可以是整型变量、实型变量,也可以是字符型变量,但不能是常量或表达式。++(或--)的结合方向是“自右向左”。针形式即(*p).i和p->i。【解析】同类型的结构体变量可以进行整体赋值。结构体变量的地址可以作为实参传递给函数。结构体数组ing可以作为实参传递给函数。结构体成员可以包含指向本结构体的指针成员。本题答案为D选项。第9/12页 【解析】sizeof运算符判断数据类型所占内存字节大小,故i=10,该数组占10个字节的内存;strlen函数则判断字符串实际长度,不包含“\O”,该函数遇到“\0”就会返回,故数组a的长度为4,即只计算了abcd这四个字符。28、单30、[’1001,changrong,1098main()main(){x,y,z,t;if(x>y){/*交换x,y的值*/t=x;x=y;y=t;}if(x>z){/*交换x,z的值*/t=z;z=x;x=t;}if(y>z){/*交换z,y的值*/t=y;y=z;z=t;}【解析】我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。32、#include{voidpalin(intn);palin(i);printf("\n");}{第10/12页charnext;next=getchar();printf("相反顺序输出结果\40:\40");putchar(next);next=getchar();palin(n-1);putchar(next):}33、#include<stdi{char*sno=newchar[20];char*name=newchar[20]:voidstuSort(student*stu){for(inti=0;i<NUM;i++){for(intj=0;j<NUM;j++){if(stu[j].score<stu[i].score){=stu[j].name;tmp.sno=stu[j].sno;tmp.score=stu[j].score;stu[j].name=stu[i].name;stu[j].sno=stu[i].sno;stu[j].score=stu[i].score;stu[i].name=;stu[i].score=tmp.score;}}{printf("%s%s%d\n",stu[i].sno,stu[i].name,stu[i].score)}voidstuFail(student*stu)第11/12页{{{}{{{{{{({printf("输入学号:");printf("输入姓名:");stuSort(stu);stuFail(stu);stuAvg(stu);stu=NULL;return0;第1/10页专业班专业班级:身份证号:姓名:准考证号:一、单项选择题(共20题,每题2分,共计40分)2022年《C语言程序设计》专升本精选模拟(四)题号一二三总分得分●答案一律写在答题纸上,写在试卷上无效●试卷不得带出考场●考试中途不能无端离场得分评卷人A、goto语句只能用于退出多层循环。B、switch语句中不能出现continue语句。C、只能用continue语句来中止本次循环。D、在循环中break语句不能独立出现。()2、下面关于指针的说法中错误的是A、在指针定义的同时可以对其进行初始化B、指针根据其所指向变量的类型的不同,所占用内存大小也不同C、指针中存放的是内存单元的地址D、相同类型的指针之间可以相互赋值()3、在c程序中,判逻辑值时,用"非0"表示逻辑值"真",又用"0"表示逻辑值"假"。在求逻辑值时,逻辑真和逻辑假可分别表示为A、10B、01C、非0非0D、11for(i=5;i>;ir(jj则以下程序段中内循环的总的执行次数定,for(i=5;i>A、20D、30()5、fgets(str,n,fp)函数从文件中读入一个字符串,以下正确的叙述是。A、字符串读入后不会自动加入’\0’B、fp是file类型的指针第2/10页C、fgets函数将从文件中最多读入n-1个字符D、fgets函数将从文件中最多读入n个字符()6、若有代数式|x3+1gx|,则正确的c语言表达式是。B、abs(pow(x,3)+log10(x))C、abs(pow(x,3)0)+log10(x))()7、c语言中的基本数据类型包括A、整型、实型、字符型B、整型、字符型、数组C、整型、实型、逻辑型D、整型、实型、结构体()8、设有数据定义语句"inta[200];",下列数组元素引用中下标不越界的是。()9、下面程序段的运行结果是。chara[]=“abcdefgh”;char*p=a;p+=3;printf("%d\n",strlen(strcpy(p,"abcd")));B、12A、对于double类型数组,不可以直接用数组名对数组进行整体输入或输出B、数组名代表的是数组所占存储区的首地址,其值不可改变C、当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息D、可以通过赋初值的方式确定数组元素的个数()11、函数的值通过return语句返回,下面关于return语句的形式描述错误的是A、return表达式;C、一个return语句可以返回多个函数值D、一个return语句只能返回一个函数值A、标识符首字符的后面可以跟数字B、标识符不区分大小写C、复合数据类型变量包括布尔型、字符型和浮点型第3/10页D、数组属于基本数据类型{for(p=a;p<a+10,p++)printf("%}。程序运行后的输出结果是。{charname[10];{structstub={"lisiguo",2042};{}{structstua={"yangsan",2041},b={"wangyin",2043};printf("%d%d\n",a.num,b}执行后的输出结果是。A、20412044B、20412043()15、以下程序段的输出结for(k=2;k<6;k++,k++){for(j=k;j<6;j++)s+=j;printf("%d\n",s);第4/10页C、11D、10()16、结构化程序设计的3种结构是。A、顺序结构、选择结构、转移结构B、分支结构、等价结构、循环结构C、多分支结构、赋值结构、等价结构D、顺序结构、选择结构、循环结构A、即使是同类型的结构体变量,也不能进行整体赋值B、结构体变量的地址不能作为实参传给函数C、结构体数组名不能作为实参传给函数D、结构体中可以含有指向本结构体的指针成员()18、已知字母a的ascii码为十进制数的97,下面程序的输出结果是main(){charcl,c2;cl='a'+'5'-'3';c2=’a'+'6'-'3';printf("%c,%d\n",cl,c2);}A、100,dB、c,100D、输出格式不对,结果不确定()19、以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。#defineN10{while(i<N)scanf("%d",);在下划线处应填入的是。main(){{cmplxx;y;第5/10页填空题(共10题,每题2分,共计20分)cnum[2]={1,3,2,7};得分评卷人21、&&0|」2的值为22、以下程序运行结果是#include<stdio.h>voidmain(){if(y!=0)x=5;if(y==0)x=4;x=1;if(y<0)if(y>0)x=4;23、写出下列程序的运行结果。main(){{printf("%d",n);24、下列给定程序中,函数proc()的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按ascii码升序排序后输出。例如,输入opdye,则应输出deopy。请修改程序中的错误,使它程序:intproc(charstr[]){unsignedi,j;if(str[i]>str[j])第6/10页三、三、简答题(共3题,每题分值不等,共计40分)}c=str[j];str[j]=str[i++];system("cls")printf("\n\nbeforesorting:\n%s",str)proc(str);printf("\naftersortingdecendingly:\n%s",str);}25、以下程序运行后的输出结果是main(){printf("%d\n",0<x&&x<20);28、ferror函数用来检测文件读写时是否发生错误,若未发生读写错误,则返回值是29、以下程序的输出结果是。main(){30、下列程序段的运行结果是{longnum;}p={1021103,"jiangmain()ping",'m',85.5};{得分评卷人第7/10页31、编写程序:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。(本题10分)32、编写程序:打印出杨辉三角形(要求打印出10行)。结构如下所示:133、编写程序:编写input()和output()函数输入,输出5个学生的数据记录。(本题16分)第8/10页参考答案一、单项选择题【解析】指针是一种用来存放其他变量地址的数据类型,它的声明形式为:〈类型〉+〈变量名〉,可以在声明的时候对其进行初始化。由于其存放的是内存单元的地址,所以大小一般都是4个字节。【解析】在C程序中,判断逻辑值时,用非0表示真,用0表示假。逻辑表达式计算时,逻辑表达式值为真是用1表示的,若逻辑表达式的值为假,则用0表示。【解析】p被定义为指针型变量,指向字符数组a的首地址。执行p+=3;指针后移3位,指向d。strcpy(p,"ABCD")将字的个数(不计’\0'),返回值为字符串"ABCD"中字符的个数4。【解析】return语句中的表达式的值就是所求的函数值,此表达式值的类型必须与函数首部所说明的类型一致。如果类型不一致,则以函数值的类型为准,由系统自动进行转换。一个return语句只能返回一个值。【解析】选项B错误,c语言标识符是区分大小写的;选项C错误,复合数据类型应该包括数组、类和接口;选项D错误,数组应该属于复合数据类型;选项A正确,标识符首字符的后面可以跟数字、字母、下划线和美元符号。【解析】C语言规定数组变量名代表数组的首地址,即第0号元素的地址。本题将a数组中的值全部输出,即为【解析】同类型的结构体变量可以进行整体赋值。结构体变量的地址可以作为实参传递给函数。结构体数组ing可以作为实参传递给函数。结构体成员可以包含指向本结构体的指针成员。本题答案为D选项。第9/10页22、5|5,1【解析】上程序中第三个if语句有嵌套,前两个if语句没有嵌套。前两个if语句根据y=1便可得知输出结果均为5;最后一个if语句,根据条件y<0便知不成立,后续语句无法执行,只好输出前一赋值语句x=1的值。23、34525、[’10’]26、030、m{chari,j,k;if(i!=j){for(k='x';k<='z';k++){if(i!=k&&j!=k){if(i!='x'&&k!='x'&&k!='z'){printf("顺序为:a--%c\tb--%c\tc--%c\n",i,}32、#include<stdio.h>intmain(){for(i=0;i<10;i++){}a[i][j]=a[i-1][j-1]+a[i-1]第10/10页}}#include<stdlib.h>typedefstruct{charname[20];voidinput(Stu*stu);voidoutput(Stu*stu);input(stu);printf("5个学生的信息如下:\n姓名性别年龄\n");output(stu);system("pause");return0;voidinput(Stu*stu){voidoutput(Stu*stu){for(i=0;i<5;i++)}一、单项选择题(共20题,每题2分,共计40分)总分:【150分】题号一二三总分得分●答案一律写在答题纸上,写在试卷上无效●试卷不得带出考场●考试中途不能无端离场得分评卷人A、一个用于指向整型数据的指针变量B、一个用于指向一维数组的指针C、一个用于指向函数的指针变量D、一个返回值为指针型的函数名C、1A、算术表达式B、非法表达式C、字符串表达式D、关系表达式()4、{}while(x==0);A、循环体将执行一次B、循环体将执行两次C、循环体将执行无限次D、系统将提示有语法错误第1/10页第2/10页A、对文件操作必须先关闭文件C、对文件操作顺序无要求D、对文件操作前必须先测文件是否存在,然后再打开文件A、while循环的循环体至少执行1次B、while循环的循环控制条件比do-while循环的循环控制条件复杂C、do-while循环体不能是复合语句D、do-whil循环的循环体至少执行1次#include<stdio.h>main(){运行上面的程序,输入字符串howareyou,则程序的执行结果是。()10、已知3个字符为;a、x和5,按它们的ascii码值升序排序,结果是。A、模板形参表必须在关键字template之后B、模板形参表必须用括弧()括起来第3/10页C、可以用class修饰模板形参D、可以用typename修饰模板形参()12、以下选项中不正确的字符常量是’\\’对于以下变量定义,正确的赋值是。int*p[3],a[3];有以下程序:#include{<stdio.h>main(){structsp=data[1];printf("%d\n",++(p.a));程序运行后的输出结果是。A、10B、11D、21()15、下列程序的输出结果是#include<stdio.h>intf(inta,intb);main(){j=i;k=++i;printf("%d",p);intf(inta,intb){if(a>b)c=1;第4/10页()16、以下关于结构化程序设计的叙述中正确的是A、一个结构化程序必须同时由顺序、分支、循环三种结构组成B、结构化程序使用goto语句会很便捷C、在C语言中,程序的模块化是利用函数实现的D、由三种基本结构构成的程序只能解决小规模的问题{}若要使p指向data中的a域,正确的赋值语句是。A、p=(structsk*)&data.a;{}{c++;}执行此程序后屏幕上显示的结果是。A、81010B、7910C、8911D、8910A、即使是同类型的结构体变量,也不能进行整体赋值第5/10页二、填空题(共10题,每题2分,共计20分)B、结构体变量的地址不能作为实参传给函数二、填空题(共10题,每题2分,共计20分)C、结构体数组名不能作为实参传给函数D、结构体中可以含有指向本结构体的指针成员()20、以下对结构体变量stu1中成员age的非法引用是。{p=&stul;得分评卷人21、已知t=5,则表达式"t-=t+=3"的值是22、变量y满足以下两条件中的任意一个:①能被4整除,但不能被100整除;23、仅由顺序、选择(分支)和重复(循环)结构构成的程序是程序。24、mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。intmystrlen(char*str){return();}25、下列程序段的运行结果是。chars1[20]="abcdef",s2[5]="abcprintf("%c",s1[4]);26、在c语言中,二维数组在内存中的存放顺序是。27、字符读写函数是用于从磁盘文件中读出一个字符。28、inty=1,x,*p,a[]={2,4,6,8,10};p=&a[1];for(x=0;x<3;x++)y+=*(p+x);程序的输出结果y的值是。29、以下程序的输出结果是main(){第6/10页三、简答题(共3题,每题分值不等,共计40分)三、简答题(共3题,每题分值不等,共计40分)30、定义枚举类型时采用的关键字是得分评卷人31、编写程序:利用递归方法求5!。(本题10分)32、编写程序:判断一个素数能被几个9整,比如:素数13能整除6个9组成的数999999(本题14分)第7/10页【解析】在C中对文件操作必须先打开文件,待文件操作完毕后要关闭文件。对文件以读的方式进行打开操作时,同时会执行文件的检查文件是否存在,不存在将会返回空的文件指针,如果对文件以写的方式打开时,文件不存在,将会自动创建文件,因此在C中打开文件前不必对其检查文件是否存在,故答案为B。6、A【解析】当指针指向数组的首地址时,数组内各元素地址为p+n(数组下标从0开始到n-1结束),n为数组下标,取数组元素值为*(p+n)。【解析】do-whilewhile-w-和的主要区别在于do-不进行条件判断,先进入循环体执行一遍再判断是否可以继续循环,而while则是先进行条件判断再决定是否进入循环体执行。dowhile循环的循环体至少执行1次。本题答案为D选9、A【解析】当从键盘输入bowareyou时,由于scanf输入函数的特点是遇到空格时结束读入字符,因此,该程序只将how这3个字符送到了字符数组str中,并在其后自动加上结束符“\0”。【解析】主要考查函数模板的定义,声明一个函数模板的格式为template<<模板形参表声明>><函数声明>,其中<模板形参>具有typename<参数名>、class<参数名>、<类型修饰><参数名>三种形式,形参用”<>”括【解析】声明data是结构S数组。初始化data[0].a=10;,data[0].b=100;,data[1].a=20:,data[1].b=200。主函数中p=data[1];,即p.a=data[1].a;,p.b=data[1].b;。执行语句printf("%d\n",++(p.a));打印输出时p.a先增1再打印,即p.a=data[1].a=20,先增1等于21。【解析】C语言是结构化程序设计语言,顺序结构、选择结构、循环结构是结构化程序设计的种基本结构,研究证明任何程序都可以由这三种基本结构组成。但是程序可以包含一种或者几种结构,不是必须包含全部三种结构。自从提倡第8/10页结构化设计以来,goto就成了有争议的语句。首先,由于goto语句可以灵活跳转,如果不加限制,它的确会破坏结构化设计风格。其次,goto语句经常带来错误或隐患。它可能跳过了某些对象的构造、变量的初始化、重要的计算等语句。Goto语句的使用会使程序容易发生错误并且也不易阅读,所以应避免使用。由三种基本结构构成的程序几乎能解决大部分问题。【解析】同类型的结构体变量可以进行整体赋值。结构体变量的地址可以作为实参传递给函数。结构体数组ing可以作为实参传递给函数。结构体成员可以包含指向本结构体的指针成员。本题答案为D选项。二、填空题22、[’y%4==0&&y%100!=0||y%40026、按行主顺序存放<stdio.h>intmain(){for(i=0;i<6;i++){printf("%d!=%d\n",i,fact(i));}}intfact(intj){if(j==0){sum=1;}32、#include<stdio.h>#include<stdlib.h>{printf("素数%d能整除%d个9组成的数%ld\n",p,i,sum);33、#include<stdio.h>#include<stdlib.h>#include<malloc.h>typedefstructLNode{voidprint(LinkListh);{printf("刚刚建立的各个链表元素的值为:\n");system("pause");LinkListCreateList(intn){LinkListL,p,q;L=(LNode*)malloc(sizeof(LNode)if(!L)return0;q=L;{p=(LinkList)malloc(sizeof(LNode));printf("请输入第%d个元素的值:",i);第9/10页第10/10页scanf("%d",&(p->data)):1}voidprint(LinkListh){LinkListp=h->next;p=p->next;第1/11页专业班级:专业班级:身份证号:姓名:准考证号:密------一、单项选择题(共20题,每题2分,共计40分)2022年《C语言程序设计》专升本精选模拟(六)题号一二三总分得分●答案一律写在答题纸上,写在试卷上无效●试卷不得带出考场●考试中途不能无端离场得分评卷人main(){b=&a;…程序在执行了c=&b;b=&a;A、循环控制表达式的值为0B、循环控制表达式的值为1C、循环控制表达式不合法D、以上说法都不对()3、选择出合法的if语句(设intx,a,b,c;)A、使用while循环时,循环变量初始化的操作应在循环语句之前完成第2/11页B、while循环是先判断表达式,后执行循环体语句C、do-while和for循环均是先执行循环体语句,后判断表达式D、for,while和for-while循环中的循环体均可以由空语句构成()5、若有说明:long*p,a;则不能通过scanf语句正确给输入项读入数据的程序段是。()6、若已定义:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中O≤i≤9,则对a数组元素不正确的引用是。D、不确定)7、已知:chars[100];intx=y=z=l;t=++x||++y&&++z;A、不定值#include<string.h>main(){charp[20]={’a','b','c','d'},q[]="abc",r[]="abcde";strcat(p,r);}程序运行后的输出结果是,C、11()10、下面程序的功能是将从键盘输入的一对数,由小到大排序输出。当输入一对相等数时结束循第3/11页#includemain(){<stdio.h>a,b,t;while(){t>b)b=t;}()11、要调用数学函数时,在#include命令行中应包含,A、复合语句在语法上包含多条语句,其中不能定义局部变量B、花括号对只能用来表示函数的开头和结尾,不能用于其他目的C、空语句就是指程序中的空行D、当用scanf从键盘输入数据时,每行数据在没按下回车键(Enter键)前,可以任意修改()13、要求函数的功能是交换x和y中的值,且通过正确调用返回交换结果.能正确执行此功。能的函数是。{}{}{第4/11页{}{charnum[10];main(){structstus[3]={{"20021",90,95,85},{"20022",95,80,75},{"20023",100,95,90}},*p;p=s+1;for(i=0;i<3;i++)sum=sum+p->score[i];printf("%.3f\n",sum);}程序运行后的输出结果是A、250.000B、250C、270.000main(){printf("%d,",b=a+b);printf("%d",a=2*b);}程序运行后的输出结果是,()16、若变量已正确定义:for(x=0,y=0;(y!=99&&x<4);x++)则以上for循环()C、执行无限次D、执行次数不定()17、c语言中,定义结第5/11页二、填空题二、填空题(共10题,每题2分,共计20分)main(){x=(x>='a’&&x<='z’)?(x+32):x;printf("%c\n",x);}程序的输出结果是。#include<stdio.h>struct{x,y;}data[2]={{1,10},{2,20}};main(){printf("%d,",p->y);printf("%d\n",(++p)->x);}B、20,1C、10,2D、20,2得分评卷人21、#include#include<string.h>voidmain(){chara[10]={’a','b','c','d',’\0','f','g','h','\o'};i=sizeof(a);j=strlen(a):}main(){{break;break;break}printf("%d",a);23、结构化程序设计的3种基本结构是:()结构、选择结构、循环结构,这三种基本结构构成了复杂的c语言程序。24、mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。intmystrlen(char*str){return()}{1{printf("\n");则x数组中行下标的下限为【1】,列下标的上限为【2】。#include命令中应包含()头文件。28、以下程序的运行结果是#include<string.typedefstructstudent第6/11页第7/11页三、三、简答题(共3题,每题分值不等,共计40分)longsno;}main(){stua={"zhangsan",2001,95},b={"shangxian",2002,90},c=d=a;if(strcmp(,)>0)d=b;if(strcmp(,)>0)d=c;printf("%ld%s\n",d.sno,p->name);}#include<string.h>main(){chara[]={’a',’b','c','d','e','f’,’\o'};intj;j=strlen(a)程序运行后的输出结果是。{doubled;现在定义t数组,要求t数组的每个元素为该结构体类型,请填空;strut[20];得分评卷人31、编写程序:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?(本题10分)32、编写程序:删除一个字符串中的指定字母,如:字符串"aca",删除其中的a字母。(本题14分)33、编写程序:创建一个长度为n的链表,然后反向输出该链表。(本题16分)第8/11页参考答案【解析】t=1是将t赋值为1,所以循环控制表达式的值为1。判断t是否等于1时,应用t==1,注意“=”与“==”的用法。【解析】A虽然是赋值语句,但是在逻辑运算中自动将赋值语句的结果当作逻辑值,方法是,如果赋值语句的结果是非零值则当作逻辑真,否则当作逻辑
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 36450.4-2024信息技术存储管理第4部分:块设备
- 2024年度工程咨询服务合同协议书2篇
- 现代技术服务费合同6
- 2024年度核电站高低压配电系统施工及验收合同2篇
- 2024年度富士康产品回收与再利用合同3篇
- 2024年度工程脚手架施工合同变更与解除合同3篇
- 吊机设备维护保养服务合同(2024年度)2篇
- 2024年度服务器虚拟化技术实施与培训合同2篇
- 2024年度企业收购合同:食品生产公司3篇
- 出租房屋合同格式
- 游遍亚运参赛国(地区)智慧树知到答案2024年浙江旅游职业学院
- 卧床患者常见并发症
- 医疗器械营销策划服务合同范本2024年
- 2023年全国职业院校技能大赛赛项-ZZ019 智能财税基本技能赛题 - 模块二-答案
- 小学五年级数学题库100道及答案(完整版)
- 代收款三方协议书(2024版)
- 大学生职业生涯规划与发展智慧树知到期末考试答案章节答案2024年东北农业大学
- 信用管理师考试:助理信用管理师(题库版)
- 成都2024年四川成都市广播电视台招聘13人笔试历年典型考题及考点附答案解析
- 人教鄂教版(2024秋)一年级上册3.9《纸制品》 教案
- 《体育与健康》初二级(水平四)《校园定向越野》 教学设计
评论
0/150
提交评论