《北京石油化工学院2022年计算机C语言题目含答案.docx》由会员分享,可在线阅读,更多相关《北京石油化工学院2022年计算机C语言题目含答案.docx(76页珍藏版)》请在三一办公上搜索。
1、7、在C语言中,表示静态存储类别的关键字是oA、 autoB、 registerC、 staticD、 extern8、以下程序段给数组所有元素输入数据:main()(inta10,i=0;while(i,D、charc2,a,12、以下叙述错误的是A、一个C程序可以包含多个不同名的函数B、一个C程序只能有一个主函数C、C程序在书写时,有严格的缩进要求,否则不能编译通过D、C程序的主函数必须用main作为函数名2022年计算机C语言题目(一)(总分】00分,考试时长90分钟)一、单项选择题(每小题2分,共40分)1、有定义语句:intX,y;若要通过SCanf(%d,%d,&x,&y);语句使
2、变量X得到数值变量y得到数值12,下面四组输入形式中,错误的是。A、1112/B、IL12/C、11,12/D、11,/12/2、英文小写字母d的ascii码为100,英文大写字母d的ascii码为A、50B、66C、52D、683、59,73,83,94,()A、107B、101C、105D、1134、C语言对嵌套if语句的规定是:else总是与()。A、其之前最近的if配对B、其之前最近的且尚未配对的if配对C、缩进位置相同的if配对D、第一个if配对5、结构化程序设计的3种结构是oA、顺序结构,分支结构,跳转结构B、顺序结构,选择结构,循环结构C、分支结构,选择结构,循环结构D、分支结构
3、,跳转结构,循环结构6、在C语言中对一维整型数组的正确定义为0A、inta(10);intn=10,an;C、 intn;an;D、WefineN10intaN;for(i=0;i95,9218、有以下程序main()char*s=onc,two,three,*p;P=s1;printf(*%c,%sn*,*(p+l),s0);)执行后输出结果是OA、n,twoB、t,oneC、w,oneDno,two19、若二维数组a有m歹U,则在aij前的元素个数为()。A、 i*m+j-lB、 i*m+jC、 j*m+iD、 i*m+j+l20、有以下程序structstu(charname10;int
4、num;floattotalscore;;F以下叙述一错误的是。A、算法正诲的程序最终一定会结束B、算法正/角的程序可以有零个输出C、算法正确的程序可以有零个输入D、算法正确的程序对于相同的输入一定有相同的结果14、在C语言程序中()。As函数的定义可以嵌套,但函数的调用不可以嵌套B、函数的定义不可以嵌套,但函数的调用可以嵌套C、函数的定义和函数调用均可以嵌套D、函数的定义和函数调用不可以嵌套15、请阅读下面的程序,选择正确的输出结果。()voidmain()Printf(%d,null);)A、0B、变量无定义C、-1D、116、以下描述中正确的是。A、由于do-while循环中循环体语句只
5、能是一条可执行语句,所以循环体内不能使用复合语句do-while循环由do开始,用WhiIe结束,在WhiIe(表达式)后面不能写分号C、在do-while循环体中,一定要有能使while后面表达式的值变为零(假)的操作D、do-while循环中,根据情况可以省略while17、有以下程序typedefstruct(charname9;charsex;floatscore2;stu;stuf(stua)StUb=zhao”,n,85.0,90.0;inti;strcpy(a.name,b.name);a.sex=b.sex:;三、编程题(每小题分,共40分)1、编程将1.100间能被2、3、5
6、分别整除的数的和求出来并输出。注意,在判断时要按照2、3、5的先后次序来确定优先顺序,如6既能被2整除,又能被3整除,则只算到能被2整除的这种情况里。(本题10分)2、编写程序:计算字符串中子串出现的次数。请输入两个字符串,以回车隔开,母先串在前,子串在后,比如:abcaa2 (本题14分)3、给定N个职员的信息,包括姓名、基本工资、浮动工资和支出,要求编写程序顺序输出每位职员的姓名和实发工资(实发工资=基本工资+浮动工资-支出)。输入格式:输入在一行中给出正整数N。随后N行,每行给出一位职员的信息,格式为“姓名基本工资浮动工资支出”,中间以空格分隔。其中“姓名”为长度小于10的不包含空白字符
7、的非空字符串,其他输入、输出保证在单精度范围内。输出格式:按照输入顺序,每行输出一位职员的姓名和实发工资,间隔一个空格,工资保留2位小数。输入样例:3zhao24040075qian36012050zhou56015080输出样例:zhao565.00町idf(structstu*p)structsts2=*sundan*,20044,550),*penghua*,20045,537),*q=s;+P;+q;*p=*q;)mainOstructstus3=*yangsan*,20041,703,*lisiguo*,20042,580;f(s);printf(*%s%d%3.0fn*,s1.na
8、me,s1.num,sl.totalscore);)程序运行后的输出结果是OA、 SunDan20044550B、 Penghua20045537C、 1.iSiGuo20042580D、 SunDan20041703二、判断题(每小题2分,共20分)()1、十进制数10转换为二进制为Iol0。()2、C语言在函数调用时,若形参实参都是普通变量,实参和形参可以共用存储单元。()3、break语句不能够单独使用,只能用于循环语句和SWiteh语句()4、循环语句不能嵌套使用。()5、C语言中字符串的结束符是0。()6、在定义函数时,必须要指定函数中的参数列表。()7、字符串可以存储在字符数组中,
9、也可以存储在字符型指针变量中()8、对于一个具体的函数来说,实参与形参必须一一对应。()9、若函数的返回值与return表达式类型不一致时,以return表达式类型为准。()10、在一个文件中定义的全局变量其作用域还可以扩展到其他文件。ian430.00zhou630.00本题16分)15、B【解析】表示空的常量是NULL,而不是null。16、C17、C18、C19、B20、B二、判断题1、正确2、错误3、正确4、错误5、正确6、错误7、错误8、正确9、错误10、正确三、编程题1、ttincludemain()inti,s2=0,s3=0,s5=0;for(i=l;i=100;i+)if(i
10、%2=0)s2+=i;else参考答案一、单项选择题1、A2、D3、A【解析】44+4+4=52,52+5+2=59,59+5+9=73,73+7+3=83,83+8+3=94,94+9+4=107,选Ao4、B5、B【解析】程序设计语言仅仅使用顺序、选择和重复(循环)三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。遵循程序结构化的设计原则,按结构化程序设计方法设计出的程序易于理解、使用和维护:可以提高编程工作的效率,降低软件的开发成本。6、D7、C8、A9、B【解析】考察C语言中输入格式,因为在输入格式中定义好了“/c%c”,其中没有任何符号,所以中间不能加任何字符,包含不能加逗
11、号、回车和空格,因为这些也算是字符。所以在输入时也不可以有任何间隔符号。10、C11、B【解析】本题考查对一维数组的赋值。选项B)中,y5说明数组中有5个元素,但却给它赋了6个值,数组溢出所以是错误的。12、C13、B14、BSyStCln(pause);returnO;)3、includestructmessage(chara9;doublebasic;doublefu;doubleoutput;);structmessaged100;intmainO(intN;doublef100;scanf(*%d*,&N);for(inti=0;iN;i+)(scanf(*%s%lf%lf%lf*,d
12、i.a,&di.basic,&di.fu,&di.output);fi=di.basic+di.fu-di.output;)for(inti=0;iN;i+)(printf(*%s%.2fn*,di.a,fi);)s3+=i;elseif(i%5=0)s5+=i;Printf(nlK)O中能被能3、5分别整除的数的和分别为:%d为%dn*,s2,s3,s5);)2、ttincludettinclude#includeintmain()(inti,j,k,TLen,PLen,count=0;charT50,P10;Printf(请输入两个字符串,以回车隔开,母串在前,子串在后:n);getsC)
13、;gets(P);TLen=Strlen(T);PLen=Strlen(P);for(i=0;i=TLen-PLen;i+)(for(j=0,k=i;jPLen&Pj=Tk;j+,k+)if(j=PLen)count+;)printf(*%dn*,count);returnO;)Printf(%dn”,a);)A、IOlB、6C、5D、46、有以下程序:includeunionpwinti;charch2;)a;main()(1.25后,x的值是a,ch0=13;a.chl=O;Printf(%dn”,a.i);)程序的输出结果是OA、13B、14C、208D、2097、下列数据中是合法的整型
14、常量的是。A、3E2B、029C、 -32768D、 6e+0078、以下正确的程序段是JA、charstrl=*12345*,str2=*abcdef*;B、chaistr10,*st=abcdc”;strcat(str,st):CxCharstr10=z,*st=*abcde*;strcat(str,st);D、Char*st1=12345”,*st2=*abcde*;strcat(stl,st2);9、下列关于C语言的叙述错误的是OA、英文字母大小写不加以区分f2022年计算机C语言题目(二)(总分100分,考试时长90分钟)一、单项选择题(每小题2分,共40分)1、按照数的进位制概念,
15、下列各个数中正确的八进制数是。A、 1101B、 7081C、 1109D、 B03A2、为表示关系:xyz,应使用的C语言表达式是。A、(x=y)&(y=z)B、(x=y)AND(y=x)C、(x=y=z)D、(x=y)&(y=z)3、若X是double型变量,n是ini型变量,执行以下语句(),并输入3L25,n的值是3。A、scanf(z,%d%l,&n,&x);BsscanfC%lf%d,&x,&n);C、SCanf(黑If%d”,&n,&x);E、 SCanf(%d,%lf”,&n,&x);4、下列表达式为关系表达式的为o(其中a为一整型变量)A、 3+4*5B、 a=10C、a0a
16、:-aD、a=l5、以下程序的输出结果是0main()(inta,b;for(a=l,b=l;a=10)break;if(b%3=l)b+=3;continue;B是无限循环C、循环体一次也不执行D、循环体只执行一次17、相同结构体类型的变量之间,可以。A、相加B、赋值C、比较大小D、地址相同18、执行下列程序后,其输出结果是O。voidmain()inta=9;a+=a-=a+a;Printf(%dn”,a);)A、18B、9C、-18D、-919、下列描述中正确的是oA、标识符首字符的后面可以跟数字B、标识符不区分大小写C、复合数据类型变量包括布尔型、字符型和浮点型D、数组属于基本数据类型
17、20、若有下列说明和语句,则对结构体变量St中成员i的引用方式不正确的是structstuinti;intname:st,*p;P=&st;A、st.iBn*p.iC、(*p).iD、p-i二、判断题(每小题2分,共20分)()1、个十进制数转换成二进制后,其值发生的改变。FB、不同类W的变量可以出现在同个表达式中C、在赋值表达式中赋值号两边的类型可以不同D、某些运苞符在不同的场合可以有不同的含义10、下列数据中属于字符串常量”的是。A、ABCB、ABCC、ABCD、A11、以下不能正确定义二维数组的选项是oA、inta22=l,2);B、inta2=1,2,3,4);C、inta22=l,2
18、,3);D、inta口=1,2,3,4;12、若调用一个函数,且此函数中没有retum语句,则正确的说法是:该函数A、没有返回值B、返回若干个系统默认值C、能返回一个用户所希望的值D、返回一个不确定的值13、C语言用表示逻辑”真值。A、trueB、t或yC、非零整型值D、整型值014、若pl、p2都是整型指针,pl已经指向变量X,要使p2也指向X,是正确的。A、 p2=plB、 p2=*plC、p2&p1D、p2=*pl15n程序片段:Shorti=65536;printf%dn*,i);的输出结果是OA、65536B、0C、有语法错误,无输出结果D、-116、设j和k都是int类型,则for
19、循环语句for(j=0,k=-l;k=l;j+,k+)printfC*11,);()。A、循环结束的条件不合法西)2、doubl)型变量在内存中占的字节数比int型变量在内存中占的字节数多。()3、关系上达式的值只能为1和。()4、循环体如果包含一个以上语句,应该用花括弧括起来,以复合语句的形式出现。()5、用StrCat(字符串1,字符串2)连接两个字符串函数时,字符串1的存储空间必须足够大。()6、可以用一个指针变量指向一个函数,然后通过该指针变量调用此函数。()7、指针数组的每一个元素都是指针变量,且都指向相同的数据类型。()8、一个自定义函数中可以根据不同情况设置多条return语句。
20、()()9、数组的下标从1开始。()10、以“a”方式打开一个文件时,文件指针指向文件首。三、编程题每小题分,共40分)1、编写程序:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13.求出这个数列的前20项之和。(本题10分)2、输入一个字符串和一个特定字符,在字符串中删除从该特定字符开始的所有字符。例如输入字符串为abcdefg,特定字符为d,删除后的字符串为abc;输入字符串为abcdefg”,特定字符为x,则输出“特定字符不存在”。(本题14分)3、编写程序:编程实现输入5个学生的学号、计算他们的期中和期末成绩,然后计算其平均成绩,并输出成绩表(本题16分)17、B18
21、、C19、【解析】选项B错误,c语言标识符是区分大小写的;选项C错误,复合数据类型应该包括数组、类和接口;选项D错误,数组应该属于复合数据类型;选项A正确,标识符首字符的后面可以跟数字、字母、下划线和美元符号。20、B【解析】本即主要考查结构指针:P=&st,访问结构体的成员,可以通过结构变量访问,即st.i,也可以用等价的指针形式即(*p)形和p-i二、判断题1、错误2、正确3、正确4、正确5、正确6、正确7、正确8、正确9、错误10、错误三、编程题1、#includeintmain()(inti,t;floatsum=0;参考答案一、单项选择题1、A【解析】八进制的数字为07。2、A3、A
22、4、B5、D6、A【解析】在本题中,首先定义了一个共用体pw,其中有两个域:整型变量i和字符数组cho因为共用体中的域是共享内存空间的,数组元素由低到高存储:ch0在低字节;chl在高字节;整型变量i占两个字节,高位与chl共用存储空间,低位与chO共用存储空间,而高位chl的值为0,所以输出的成员变量i的值就是chO的值13。7、C8、C【解析】本题考查了一维字符数组的定义和初始化。选项C中StHl0初始化为空,可以不必进行类似”的空赋值,字符数组若没有进行初始化赋值,默认的字符为空。并且定义完Str数组后,应该用“,”分隔而不是,所以选项C错误。9、10、B11、D12、A13、C14、A
23、15、B【解析】ShOrI类型的取值范围是-32768,32767,再加1时发生溢出,变为0。16、B)if(fIag=O)Printf(特定字符不存在”);)3、Sincludeintmain()(structstud_str(charnum10;floatSCorejnid;floatSCOrestu5;floatsummid=0;floatsumfinal=0;floatave_mid=0;floatave_final=0;inti=0;for(i=0;i5;i+)(printf(wplaseinputscanf(,%s*,stui.num);printf(*pleaseinputmid
24、extunscore:n*);Br一floata=2b=l;for(i=l;i|=20;i+)(sum=sum+ab;t=a;a=a+b;b=t;)printf(*%9.6fn*,sum);)2、ttincludeintmainO(inti,flag=0;chars80,n;gets(s);scanf(%c,&n);Printf(特定字符是cn”,n);for(i=0jsi!=,0,;i+)if(si=n)si0;flag=l;Printf(删除特定字符%c后的字符串是,n);pts(s);break;elsescanfC%f*,stui.scoremid);printf(wpleaseinp
25、utfinal_examscore:n*);SCanfH&stui.score_final);)for(i=0;i5;i+)(SUmJnid+=stui.score_mid;sum_final+=stui.score_final;)avcjnid=sum_nid5;ave_final=sum_final/5:Printf(学号期中分数期末分数tn);for(i=0;i,1,、a9b,CB、a.b,C,L,、a,brv,D、 a,9c3、以下符合C语言语法的实型常量是OA、1.2E0.5B、3.14.159EC.5E-3D、E154、假定所有变量均已正确定义,下列程序段运行后X的值是()。kl=
26、l;k2=2;k3=3;x=15;if(!kl)X;elseif(k2)x=4;elsex=3:A、14B、4C、15D、35、可以作为自定义标识符的是oA、2xB、breakC、m-nmain()chara=abcdefg”;fun(a,strlen(a);puts(a);)上面程序的输出结果是。A、 GEFDCBB、 AGADAGAC、 AGAAGAGD、 GGGG16、以下叙述中正确的是oA、continue语句使得整个循环终止B.break语句不能用于提前结束for语句的本层循环C、使用breakswitch语句可以使流程跳出语句体D、在for语句中,continue与break的效果
27、是一样的,可以互换17、当定义一个结构体变量时,系统为它分配的内存空间是。A、结构中一个成员所需的内存容量B、结构中第一个成员所需的内存容量C、结构体中占内存容量最大者所需的容量D、结构中各成员所需内存容量之和18、阅读下面的程序main()(inti,j;scanf%3d%2d*,Ai,ftj);printf(*i=%d,j=%dn*,i,j);)如果从键盘上输入1234567V回车,则程序的运行结果是0A、i=123,j=4567B、i=1234,j=567C、i=l,j=2D、i=123,j=4519、avg功能是求整形数组中的前若干个元素的平均值,设数组元素个数最多不超过则下列函数说明
28、语句错误的是OA、intavg(int*aintn);B%intavg(inta10,intn);FD、sj=si11、当调用函缸时,实参是一个数组名,则向函数传送的是OA、数组的上度Bs数组的首地址C、数组每一个元素的地址D、数组每个元素中的值12、设函数定义如下:floatfl(floata,floatb)return(a+b);)若有floatx=l.1,y=2.2;,则以下语句中正确的函数调用是。A、printf(*%,fl();B、printf(*%f*,fl(&x,);C、piintf(*%f*,fl(*x,*);D、printf(%f”,fl(x,);13、下列不正确的转义字符是
29、oA、WB、C、074,D、0,14、对于int*pa5;的描述,以下哪个选项是正确的A、Pa是一个指向数组的指针,所指向的数组是五个int类型的指针B、Pa是一个具有五个元素的指针数组,每个元素都是一个int类型的指针C、pa5表示某个数的第五个元素的值D、Pa是一个指向某个数组中第五个元素的指针,该元素是int类型的变量15、请读程序:JtincludeVstdio.hJfincludeVstring.hvoidfun(char*w,intm)chars,*pl,*p2;pl=w;p2=w+m-l;while(plp2)s=*pl+;*pl=*p2-;*p2=s;,C、intav(inta
30、,intn);D、intav(inta,intn);20、C语言结构体类型变量在程序执行期间,A、所有成员直驻留在内存中B、没有成员驻留在内存中C、部分成员驻留在内存中D、只有一个成员驻留在内存中二、判断题每小题2分,共20分)()1、若有以下程序段:intCI=I,c2=2,c3;c3=L0/c2*cl;则执行后,c3中的值是0。()2、在标准C中=是判断两个数是否相等。()3、在switch语句中必须使用break语句()4、While循环语句的循环体至少执行一次.()5、C语言中,字符串常量最后一个字符是结束标志,该结束符是0。()6、输入操作称为写操作,将输入流中的信息存到内存时,使用
31、写函数。()7、数组定义后,数组名的值是一个地址,可以被修改。()8、通过return语句,函数可以带回一个或一个以上的返回值。()9、C语言中的main函数是程序的入口。()10、文件是否打开是可以判断的。三、编程题(每小题分,共40分)1、编写程序:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?(本题10分)2、编写程序:将字符数组a中下标值为奇数的元素从小到大排列,其它元素不变例如:当a数组中的字符串为:CIangUage”时,程序的输出结果为:CgaIgnaUe()(本题14分)3、输入某班30位学生的姓名及数学、英语成绩,计算每位学生的平均
32、分然后输出平均分最高的学生的姓名及其数学和英语成绩,使用结构体实现.(本题16分)出循环。continue语句的作用是跳过循环体中剩余的语句而强行执行下一次循环。A,B和D三个选项中均有错误。因此C选项正确。17、D18、D19、C20、A二、判断题1、正确2、错误3、错误4、错误5、错误6、错误7、错误8、错误9、正确10正确三、编程题1、4includeintmain(void)(inti,j,m,n,x;for(i=1;ifor.while循环语句中时可使程序终止循环而执行循环后面的语句,即满足条件时便跳7、接下来将i的所有数字循环计算即可。2、#includeincludemain()
33、chara口=clanguage”,t;inti,j,k;k=strlen(a);for(i=l;i=k-2;i+=2)for(j=i+2;jk;j+=2)if(ajai)t=ai;ai=aj;aj=t;)puts(a);printf(z/11,);)3、ttincludedefineSIZE50structstudent(charname10;intmath,eng;floataver;=168/i;?(ij&(i+j)%2=O&(i-j)%2=O)m=(i+j)/2;n=(i-j)/2;x=n*n-1OO;printf(%d+100=%d*%dn”,x,n,n);printf(%d+268
34、=%d*%dn”,x,m,m);returnO;【解析】假设该数为Xo1、则:X+100=n2,X+100+168=m22、计算等式:m2-n2=(m+n)(m-n)=1683、设置:m+n=i,m-n=j,i*j=168,i和j至少一个是偶数4、可得:m=(i+j)/2,n=(i-j)/2,i和j要么都是偶数,要么都是奇数。5、从3和4推导可知道,i与j均是大于等于2的偶数。6、由于i*j=168,j=2,则IViVI68/2+1。intmainOstructstudentstuSIZE;inti,maxstd=O;for(i=0;iSIZE;i+)(scanf(*%s%d%d*,stui.
35、name,ftstui.math,ftstui.eng);stui.aver=(stui.eng+stui.math)/2.O;for(i=l;istumaxstd.aver)maxstd=i;printf(*%10s%3d%3dn*,stumaxstd.name,stumaxstd.math,stumaxstd.eng);)D、1.07、若有以下定义,则正确的语句是。uniondata(inti;charc;floatf;a;intn;A、c=5;B、a=2,a,1.2;C、Printf(*dn”,a);D、n=a;8、若二维数组a有m歹人则计算任一元素aij在数组中位路的公式为(假设a00
36、位于数组的第一个位辂上)0A、 i*m+jB、 j*m+iC、 i*m+j-lD、 i*m+j+l9、在c语言中,以下叙述不正确的是A、在C程序中,无论是整数还是实数,都能被准确无误的表示B、在C程序中,变量名代表存储器中的一个位置C、静态变量的生存期与整个程序的生存期相同D、C语言中变量必须先定义后引用10、设有定义:char*c;以下选项中能够使字符型指针c正确指向一个字符串的是OAxcharstr=*string*;c=str;B、SCanf(%s,c);C、 c=getchar();D、 *c=string”;11、有定义语句:int*p4;以下选项中与此语句等价的是OA、 intp4;B、 int*p;C、 int*(p4):D、 int(*p)4:12、