版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2/2C语言程序设计专升本测试卷(总分100分,考试时长60分钟)一、单项选择题(每小题2分,共100分)1、已知大写字母a的ascii码是65,小写字母a的ascii码是97,以下不能将变量c中的大写字母转换为对应小写字母的语句是______。 A、c=(c-'A')%26+'a' B、c=c+32 C、c=c-'A'+'a' D、c=('A'+c)%26-'a'【答案】D【解析】由97-65=32可知大写字母对应的小写字母之间相差32,所以将大写字母加上32就得到小写字母,所以选项B和C是正确的。选项A中(c-'A')%26可以求出变量c中的字母与字母A相差几位,那么小写字母a的ASCII码向后移动相差的位数就是对应的小写字母,所以选项A也是正确的。2、与十进制数245等值的二进制数是______。 A、11111110 B、11101111 C、11111011 D、11101110【答案】A【解析】十进制向二进制的转换采用“除二取余”法,本题计算过程如下。
[*]3、与"y=(x>0?1:x<0?-1:0)";的功能相同的if语句是________。 A、if(x>0)y=1; B、if(x)
elseif(x>0)y=1;
elsey=0;elseif(x%0)y=-1;
elsey=0; C、y=-1 D、y=0;
if(x)if(x>=0)
if(x>O)y=1;if(xi>=O)y=1;
elseif(x==0)y=0;elsey=-1;
elsey=-1;【答案】B4、下面程序的运行结果是________。
#include<stdio.h>
main(){
inta=1,b=10;
do
{
b-=a;
a++;
}
while(b--<0);
printf("a=%d,b=%d\n",a,b);
} A、a=3,b=11 B、a=2,b=8 C、a=1,b=-1 D、a=4,b=9【答案】B【解析】本题考查两个知识点:自加自减运算符和do-while循环语句。do-while循环条件是b--<0,所以循环体语句只执行一次。5、以下程序运行后的输出结果是
#include<stdio.h>
voidfun(inta,intb){
intt;
t=a;
a=b;
b=t;
}
main(){
intc[10]=1,2,3,4,5,6,7,8,9,0,i;
for(i=0;i<10;i+=2)fun(c[i],c[i+1]);
for(i=0;i<10;i++)prinff("%d,",c[i]);
printf("\n");
} A、1,2,3,4,5,6,7,8,9,0 B、2,1,4,3,6,5,8,7,0,9 C、0,9,8,7,6,5,4,3,2,1 D、0,1,2,3,4,5,6,7,8,9【答案】A【解析】fun函数无值返回。
main函数调用时数组元素作实参,形参的改变不会影响实参。因此,循环调用结束后,C数组没有任何改变。6、设a为int型变量,执行下列赋值语句后,a的取值分别为()
a=125.534;a=20.0/3;a=20%3;a=(int)125%521%4;a=5<<2; A、125,6.666666,2,1,1 B、125,6,2,1,1 C、125.534,6.666666,2,1,20 D、125,6,2,1,20【答案】D7、下面说明不正确的是________。 A、chara[10]="china"; B、chara[10],*p=a;p="china" C、char*a;a="china"; D、chara[10],*P;P=a="china"【答案】D【解析】C语言中操作一个字符串常量的方法有:①将字符串常量存放在一个字符数组之中;②用字符指针指向字符串,然后通过字符指针来防问字符串存储区域。当字符串常量在表达式中出现时,根据数组的类型转换规则,将其转换成字符指针。
本题D)项中错误的关键是对数组初始化时,可以在变量定义时整体赋初值,但不能在赋值语句中整体赋值。8、若已定义:inta[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式为()。 A、p+1 B、a+1 C、a++ D、++p【答案】C9、以下选项中关于c语言常量的叙述错误的是________。 A、所谓常量,是指在程序运行过程中,其值不能被改变的量 B、常量分为整型常量、实型常量、字符常量和字符串常量 C、常量可分为数值型常量和非数值常量 D、经常被使用的变量可以定义成常量【答案】D10、以下不正确的定义语句是________。 A、unsignedinta=-100u; B、longb=0L; C、shortc2=0123; D、intd=0x0;【答案】A11、c语言程序的基本单位是_____________. A、程序行 B、语句 C、函数 D、字符【答案】C12、c语言的编译系统对宏定义的处理是________。 A、在程序连接时进行的 B、在程序运行时进行的 C、在对源程序中的其它语句进行编译前进行的 D、和C程序中的其它语句同时进行编译的【答案】C【解析】所谓“编译预处理”就是在C编译程序对C源程序进行编译前,由编译预处理程序对这些编译预处理命令进行处理的过程。宏定义属于预处理命令,在对源程序中的其它语句进行编译前进行的。本题答案为C选项。13、设有如下函数定义:intfun(intk)
{
if(k<1)return0;
elseif(k==l)returnl;
elsereturnfun(k-1)+1:
}
若执行调用语句:"n=fun(3);
",则函数fun总共被诃用的次数是________。 A、2 B、3 C、4 D、5【答案】B14、设有以下程序段:inta[5]=0,*p,*q;p=a;q=a;则下列选项中,合法的运算是________。 A、p+q B、p-q C、p*q D、p%q【答案】B【解析】本题考核指针的运算。C语言中,指向同一字符串的指针之间能且只能进行减运算,减运算后返回的是一整型数,表示指针之间的地址偏移量。15、有以下程序
voidsum(int*a)
{
a[0]=a[1];
}
main()
{
intaa[10]={1,2,3,4,5,6,7,8,9,10},i;
for(i=2;i>=0;i--)sum(&aa[i]);
printf("%d\n",aa[0]);
}
执行后的输出结果是________。 A、4 B、3 C、2 D、1【答案】A16、若a和b均是整型变量并已正确赋值,正确的switch语句是________。 A、15 B、50 C、55 D、5【答案】C【解析】仔细观察case后的语句,每个都没有用break关键字;在switch语句中,是通过break关键字来退出switch语句的。而在题目中,case8:k++;后没有break,则继续执行k+=2;这时还没有break语句,继续执行,这时的k的值是33;一直执行完k+=3;这时k的值是36;default语句是当表达式的值与任一case子句中的值都不匹配时,程序执行default后面的语句。在题目中,因为在执行完case10:k+=3;后还没有break,所以要执行k=k/j得k的值是2。break语句是用来退出循环,并从紧跟该循环语句的第17、若有说明:intn=2,*p=&n,*q=p,则以下非法的赋值语句是:() A、p=q B、*p=*q C、n=*q D、p=n【答案】D18、有如下程序
main()
{
inta[3][3]={{1,2,3},{3,4,5},{5,6,7}},i,j,s=0;
for(i=0;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j]];
printf("%d\n",s);
}
该程序的输出结果是______。 A、18 B、19 C、36 D、26【答案】D19、设floatf[10];则f数组中下标最大的元素的正确表示为________。 A、f[10] B、f[0] C、f[9] D、f(9)【答案】C20、下面哪个不是关键字? A、int B、struct C、define D、continue【答案】C21、关于二进制的说法中,正确的是________。 A、所有的信息只能用二进制代码来表示 B、计算机一般都使用二进制代码,用它的某种信息编码方式来表示信息 C、ASCII是计算机用来表示文字符号的唯一一种二进制代码 D、汉字在计算机内使用汉字国标码来表示,不使用二进制编码【答案】B【解析】计算机不只是能用二进制,还有八进制、十进制、十六进制。22、以下符合c语言语法的实型常量是________。 A、1.2E0.5 B、3.14.159E C、.5E-3 D、E15【答案】C23、若函数调用时参数为基本数据类型的变量(俗称简单变量),以下叙述正确的是__________. A、实参与其对应的形参共占存储单元 B、只有当实参与对应的形参同名时才共占存储单元 C、实参与其对应的形参分别占用不同的存储单元 D、实参将数据传递给形参后,立即释放原先占用的存储单元【答案】C24、已知:inta,b;下列switch语句中,()是正确的。 A、switch(a)
casea:a++;break;
caseb:b++;break; B、switch(a+b)
case1:a+b;break;
case1:a-b C、switch(a*a)
case1,2:++a;
case3,4:++b: D、switch(a/10+b)
case5:a/5:break:
default:a+b;【答案】D25、若有以下定义和语句,则输出结果是______。
int**pp,*p,a=10,b=20;pp=&p;p=&a;p=&b;printf("%d\n",*p,**pp); A、10,20 B、10,10 C、20,10 D、20,20【答案】D26、c语言源程序名的后缀是________。 A、c B、cp C、obj D、exe【答案】A27、以下二维数组c的定义形式是________。 A、intc[3][] B、floatc[3,4] C、doublec[3][4] D、floatc3)4)【答案】C28、若变量已正确定义,表达式(j=3,j++)的值是____。 A、3 B、4 C、5 D、6【答案】A29、以下选项中关于c语言常量的叙述错误的是________。 A、经常被使用的变量可以定义成常量 B、常量分为整型常量、实型常量、字符常量和字符串常量 C、所谓常量,是指在程序运行过程中,其值不能被改变的量 D、常量可分为数值型常量和非数值型常量【答案】A30、下列叙述中正确的是________。 A、每个C语言程序文件中都必须要有一个main()函数 B、在C语言程序中main()函数的位置是固定的 C、C语言程序中所有函数之间都可以相互调用,与函数所在位置无关 D、在C语言程序的函数中不能定义另一个函数【答案】A【解析】mam函数是C语言程序的主函数,可以出现在程序中的任何位置。函数是C语言程序的基本模块,函数内部可以再定义其他函数。但函数间可相互调用,被调用的既可以是C语言提供的库函数,也可以是用户自定义的函数。31、以下关于字符串的叙述中正确的是________。 A、空串比空格打头的字符串小 B、两个字符串中的字符个数相同时才能进行字符串大小的比较 C、可以用关系运算符对字符串的大小进行比较 D、C语言中有字符串类型的常量和变量【答案】A【解析】字符串比较大小是以第1个不相同字符的大小为标准的,跟长度没有关系,B选项不正确;字符串比较大小除了使用库函数strc3()以外,就只能靠自己写代码来实现了,而不能通过关系运算符来比较大小。因为字符串在表达式中相当于constchar*,即常字符指针,代表的是字符串的首地址,关系运算符会将两个字符串的首地址值比较大小,这是毫无意义的。C选项不正确。C语言中只有字符串常量而没有字符串变量,D选项描述不正确;空串的长度为0,而以空格打头的字符串的长度至少为1,因此A选项是正确。32、在下列给出的表达式中,与while(e)中的(e)不等价的表达式是________。 A、(!E==0) B、(E>0||E<0) C、(E==0) D、(E!=0)【答案】B33、以下正确的说法是______。 A、实参和与其对应的形参各占用独立的存储单元 B、实参和与其对应的形参共用一个存储单元 C、只有当实参和与其对应的形参同名时才共用存储单元 D、型参是虚拟的,函数在没有被调用时,不占用存储单元【答案】D【解析】形参在个数和类型上要与实参匹配,形参在未被调用之前,不占用存储单元。34、有以下程序
structstu
{
charname[10];
intnum;
floattotalscore;
};
voidf(structstu*p)
{
structstus[2]={{"sundan",20044,550},{"penghua",20045,537}},*q=s;
++p;
++q;
*p=*q;
}
main()
{
structstus[3]={{"yangsan",20041,703},{"lisiguo",20042,580}};
f(s);
printf("%s%d%3.0f\n",s[1].name,s[1].num,s[1].totalscore);
}
程序运行后的输出结果是________。 A、SunDan20044550 B、Penghua20045537 C、LiSiGuo20042580 D、SunDan20041703【答案】B35、阅读下面的程序
main()
{
inti,j;
charch;
scanf("%d%c%f",&i,&ch,&j);
printf("%d%2c%7.2f",i,ch,j);
}
如果从键盘上输入123a123x.12<回车>则程序的运行结果是________。 A、123a123.00 B、123a123.12 C、123a123.12 D、123a123.00【答案】D36、以下描述中正确的是________。 A、由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句 B、do-while循环由do开始,用while结束,在while(表达式)后面不能写分号 C、在do-while循环体中,一定要有能使while后面表达式的值变为零("假")的操作 D、do-while循环中,根据情况可以省略while【答案】C37、有以下程序
main()
{
char*p[]={"3697","2584"};
inti,j;
longnum=0;
for(i=0;i<2;i++)
{
j=0;
while(p[i][j]!=′\0′)
{
if((p[i][j]-′0′)%2)num=10*num+p[i][j]-′0′;
j+=2;
}
}
printf("%d\n",num);
}
程序执行后的输出结果是________。 A、35 B、37 C、39 D、3975【答案】C38、有以下程序:
main()
{
intaa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};
inti,s=0;
for(i=0;i<4;i++)s+=aa[i][1];
printf("%d\n",s);
}
程序运行后的输出结果是________。 A、11 B、19 C、13 D、20【答案】B39、以下一维数组a的正确定义是__________. A、intn=10,a[n]; B、intn; C、#defineSIZE10
scanf("%d",&n);inta[SIZE];
inta[n]; D、inta(10);【答案】C40、设有以下语句
typedefstructtt
{
charc;
inta[4];
}
cin;
则下面叙述中正确的是______。 A、可以用TT定义结构体变量 B、TT是struct类型的变量 C、可以用CIN定义结构体变量 D、CIN是structTT类型的变量【答案】D41、下列不是合法的c语言语句是________。 A、a=5 B、inti;i++; C、; D、;【答案】A【解析】选项A)是一个表达式,它后面没有分号结尾(C语言中规定语句必须以分号结束),所以它不是语句;选项B)用一个花括号把几条语句括起来了,这是一个复合语句;选项C)中只有一个分号,是一个空语句;选项D)是个复合语句,也是一个空语句。42、若已定义x和y为int类型,若x=1,y=x+3/2,则y的值是________。 A、1 B、2 C、2.0 D、2.5【答案】B43、若a的值为3时,下列程序段被执行后,c的值是________。
intc=1;
if(a>0)if(a>3)c=2;
elsec=3;
elsec=4; A、1 B、2 C、3 D、4【答案】C【解析】此题主要考查if-else的使用,当if语句中的条件为真时执行后的语句,并跳过else执行下面的语句;当条件为假时执行else后的语句。44、要求通过while循环不断读人字符,当读入字母n时结束循环,若变量已正确定义,下列正确的程序段是________。 A、while((ch=getchar())!='N')printf(”%c”,ch); B、while
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论