齐齐哈尔大学往年C语言期末测试卷及答案_第1页
齐齐哈尔大学往年C语言期末测试卷及答案_第2页
齐齐哈尔大学往年C语言期末测试卷及答案_第3页
齐齐哈尔大学往年C语言期末测试卷及答案_第4页
齐齐哈尔大学往年C语言期末测试卷及答案_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2/2齐齐哈尔大学C语言期末测试卷总分:100分 考试时间:60分钟注意事项:仔细查看答题卡正反面,如出现字迹模糊、行列歪斜或缺印、破损、有褶皱等现象,要立即向监考老师报告。保持“答题卡”面的清洁,不得折叠、破损。考试结束后,一定要带回准考证等所带物品。一、单项选择题(每小题2分,共100分)1、以下选项中不合法的标识是________。 A、&a B、FOR C、print D、_002、下列不属于整型变量的类型是________。 A、byte B、short C、float D、long3、与y=(x>0?1:x<0?-1:0);的功能相同的if语句是________。 A、if(x>0)y=1;

elseif(x<0)y=-1;

elsey=0; B、if(x)

if(x>0)y=1;

elseif(x<0)y=-1;

elsey=0; C、y=-1

if(x)

if(x>0)y=1;

elseif(x==0)y=0;

elsey=-1; D、y=0;

if(x>=0)

if(x>0)y=1;

elsey=-1;4、下列各循环语句中,不是死循环的是________。 A、inti=100;

while(i){

i=i%100+1;

if(i==20)

break;

} B、inti,sum=0;

for(i=1;;i++)

sum=sum+1; C、intk=0;

do

++k;

while(k>=0); D、ints=3379;

while(s++%2+3%2)

s++;5、有语句charstr1[10],str2[10]={"china"};

则能将字符串china赋给数组str1的正确语句是________。 A、str1={"china"}; B、strcpy(str1,str2); C、str1=str2; D、strcpy(str2,str1);6、若已定义x和y为double类型,则表达式x=1;y=(x+3)/2的值是________。 A、1 B、2 C、2.00000 D、2.500007、下列哪个数组定义是正确的________。 A、inta[5)5]; B、INTa[10]; C、inta[n]; D、inta[3+2];8、按照数的进位制概念,下列各个数中正确的八进制数是______。 A、1101 B、7081 C、1109 D、B03A9、下列字符串中可以用作c标识符的是________。 A、2009var B、goto C、test-2009 D、-12310、执行下列语句后,i和n的值为()inti=10;intn=i++%5; A、10,0 B、10,1 C、11,0 D、11,111、以下程序的输出结果为________。

main()

{

inta=1,b=2,c=3,d=4,e=5;

printf("%d\n",func((a+b,b+c,c+a),(d+e)));

}

intfunc(intx,inty)

{

return(x+y);

} A、15 B、13 C、9 D、函数调用出错12、以下说法正确的是________。 A、实参类型不必同形参类型一致。 B、实参可以是常量、变量和表达式。 C、形参可以是常量、变量和表达式。 D、实参顺序与形参顺序无关。13、下列程序的运行结果是________。

voidfun(int*a,int*b)

{

int*k;

k=a;

a=b;

b=k;

}

main()

{

inta=3,b=6,*x=&a,*y=&b;

fun(x,y);

printf("%d%d",a,b);

} A、63 B、36 C、编译出错 D、0014、设intf(int);和intg(int);是函数f和g的原形,以下将f作为语句调用的是______。 A、g(f(3)) B、f(g(3)); C、g(f(3)+2); D、p=f(g(3)+1);15、下面程序的输出结果是:

main()

{

inta=-1,b=4,k;

k=(a++<=0)&&(!(b--<=0));

printf("%d,%d,%d\n",k,a,b);

} A、1,1,2 B、1,0,3 C、0,1,2 D、0,0,316、以下程序段的输出结果为()。

for(i=4;i>1;i--)

for(j=1;j<i;j++)

putchar('#'); A、无 B、###### C、# D、###17、若有以下说明和定义uniondt

{

inta;

charb;

doublec;

}

data;

以下叙述中错误的是______。 A、data的每个成员起始地址都相同 B、变量data所占的内存字节数与成员c所占字节数相等 C、程序段data.a=5;printf("%f\n",data.;输出结果为5.000000 D、data可以作为函数的实参18、以下程序的功能是:按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出,程序如下:

main()

{

intn,k;

floatscore,sum,ave;

sum=0.0;

for(n=1;n<=10;n++)

{

for(k=1;k<=4;k++)

{

scanf("%f",&score);

sum+=score;

}

ave=sum/4.0;

printf("no%d:%f\n",n,ave);

}

}

上述程序运行后结果不正确,调试中发现有一条语句出现在程序的位置不正确。这条语句是______。 A、sum=0.0; B、sum+=score; C、ave=sum/4.0; D、printf("NO%D:%f\n",n,ave);19、以下语句或语句组中,能正确进行字符串赋值的是________。 A、char*sp;*sp="right!"; B、chars[10];s="right!"; C、chars[10];*s="right!"; D、char*sp="right!";20、表达式*((int*)(p+1)+2)的值时_______.

staticstruct

{

intx,y[3];

}

a[3]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},*p;

p=a+1; A、3 B、7 C、10 D、1121、下列符号中,可以作为变量名的是________。 A、+c B、*X C、_DAY D、next-day22、下列选项中,合法的变量名是______。 A、print B、print#1 C、print1 D、9print123、对于void类型函数,调用时不可作为()。 A、自定义函数体中的语句 B、循环体里的语句 C、if语句的成分语句 D、表达式24、若变量已正确定义:for(x=0,y=0;(y!=99&&x<4);x++)则以上for循环() A、执行3次 B、执行4次 C、执行无限次 D、执行次数不定25、若有以下的定义:"intt[a][2];",能正确表示t数组元素地址的表达式的是________。 A、&.t[3][2] B、t[3] C、t[1] D、t[2][2]26、在c语言中,能表示无符号长整型常数的是________。 A、OL B、4962710U C、912374u D、2UL27、若有inta[10],*p=a;

,且a数组已赋值,则与a[4]不等价的表达式为________。 A、p+4 B、*(p+4) C、*(a+4) D、p[4]28、若已定义:inta[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是________。 A、p+1 B、a+1 C、&a[1] D、*p[1]29、字符串指针变量中存入的是________。 A、字符串 B、字符串的首地址 C、第一个字符 D、字符串变量30、以下叙述中错误的是________。 A、C语言的可执行程序是由一系列机器指令构成的 B、用C语言编写的源程序不能直接在计算机上运行 C、通过编译得到的二进制目标程序需要连接才可以运行 D、在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exe文件31、以下程序中函数scmp的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址

#include<stdio.h>

#include<string.h>

char*scmp(char*s1,char*s2)

{

if(strcmp(s1,s2)<0)return(s1);

elsereturn(s2);

}

main()

{

inti;

charstring[20],str[3][20];

for(i=0;i<3;i++)gets(str[i]);

strcpy(string,scmp(str[0],str[1]));

/*库函数strcpy对字符串进行复制*/

strcpy(string,scmp(string,str[2]));

printf("%s\n",string);

}

若运行时依次输入:abcd、abba和abc三个字符串,则输出结果为 A、abcd B、abba C、abc D、abca32、若已定义:inta[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式为()。 A、p+1 B、a+1 C、a++ D、++p33、以下能正确定义一维数组的选项是________。 A、inta[5]={

0,1,2,3,4,5}; B、chara[]={

1,2,3,4,5,6}; C、chara={'s','d','k'}; D、inta[5]="0123";34、若有以下定义的语句

structstudent

{

intage;

intnum;

};

structstudentstu[3]={{1001,20},{1002,19},{1003,21}};

main()

{

structstudent*p;

p=stu;

}则以下不正确的引用是________。 A、(p++)->num B、p++ C、(*p).num D、p=&stu.age35、下面的程序

main()

{

intx=3,y=0,z=0;

if(x=y+z)printf("****");

elseprintf("####");

} A、有语法错误不能通过编译 B、输出****。 C、可以通过编译,但是不能通过连接,因而不能运行。 D、输出####。36、已知: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;37、下列数据中为字符串常量的是________。 A、'A' B、"9" C、Howdoyoudo D、'$abd'38、有以下程序

voidchange(intk[])

{

k[0]=k[5];

}

main()

{

intx[10]={1,2,3,4,5,6,7,8,9,10},n=0;

while(n<=4)

{

change(&x[n]);

n++;

}

for(n=0;n<5;n++)printf("%d",x[n]);

printf("\n");

}

程序运行后输出的结果是______。 A、678910 B、13579 C、12345 D、6234539、下列语句中正确的是________。 A、char*myString="Hello-World!"; B、charmyString="Hello-World!"; C、charmyString[11]=”Hello-World!”; D、charnlyString[12]="Hello-World!";40、设有以下说明语句:

typedefstructstu

{

inta;

floatb;

}stutype;

则下面叙述中错误的是________。 A、struct是结构类型的关键字 B、structstu是用户定义的结构类型 C、a和b都是结构成员名 D、stutype是用户定义的结构体变量名41、以下选项中不属于字符常量的是________。 A、'C' B、"C" C、'\xCC0' D、'\072'42、若有定义"inta=-5,b=7;",则表达式a%=(b%2)运算后,a的值为________。 A、0 B、1 C、11 D、343、设变量a、b、c、d和y都已正确定义并赋值。若有以下if语句:if(a<b)if(c==d)y=0;elsey=1;该语句所表示的含义是________。 A、y=0,a

y=1,a≥b B、y=0,a

y=1,a≥b且c≠d C、y=0,a

y=1,a<B且C≠D D、y=0,a

y=1,c≠d44、下面有关for循环的正确描述是()。 A、for循环只能用于循环次数已经确定的情况 B、for循环是先执行循环循环体语句,后判断表达式 C、在for循环中,不能用break语句跳出循环体 D、for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来45、以下程序中函数f的功能是:当flag为1时,进行由小到大排序;

当flag为0时,进行由大到小排序。

voidf(intb[],intn,intflag)

{

inti,j,t;

for(i=0;i<n-1;i++)

for(j=i+1;j<n;j++)

if(flag?b[i]>b[j]:b[i]<b[j])

{

t=b[i];

b[i]=b[j];

b[j]=t;

}

}

main()

{

inta[10]={5,4,3,2,1,6,7,8,9,10},i;

f(&a[2],5,0);

f(a,5,1);

for(i=0;i<10;i++)printf("%d,",a[i]);

}

程序运行后的输出结果是______。 A、1,2,3,4,5,6,7,8,9,10, B、3,4,5,6,7,2,1,8,9,10, C、5,4,3,2,1,6,7,8,9,10, D、10,9,8,7,6,5,4,3,2,1,46、若fahr为整型变量,则能正确表示以下数学式的c语言表达式是________。 A、5*(fahr-32)/9 B、5/9*(fahr-32) C、5(fahr-32)/9 D、(fahr-32)/9*547、下列程序段的运行结果是________。

#include<stdio.h>

voidmain()

{

charstr[]="abc",*p=str;

printf("%d\n",*(p+3));

} A、67 B、0 C、字符'C'的地址 D、字符'C'48、下列关于指针运算的描述中,错误的是________。 A、在一定条件下,两个指针可以相加 B、在一定条件下,两个指针可以进行逻辑判断 C、在一定条件下,指针可以为空值 D、在一定条件下,两个指针可以相互赋值49、下列关于boolean类型的叙述中,正确的是________。 A、可以将boolean类型的数值转换为int类型的数值 B、可以将boolean类型的数值转换为字符串 C、可以将boolean类型的数值转换为char类型的数值 D、不能将boolean类型的数值转换为其他基本数据类型50、关于fgets()函数,下列描述中正确的是________。 A、从文件fp中读取长度为n的字符串存入str指向的内存 B、从文件fp中读取长度不超过n-1的字符串存入str指向的内存 C、从文件fp中读取n个字符存入str指向的内存 D、从str读取至多n个字符到文件fp中

【C语言期末测试卷参考答案】一、单项选择题1、A2、C3、A4、A【解析】分析各个选项。选项A中,当变量i的值等于20时,会执行break;语句,即退出整个while循环体。所以选项A的循环语句不是死循环。其他各个选项的循环语句中,没有循环退出点,所以都是死循环。5、B6、C【解析】()的优先级较高,先计算x+3,结果为4.0,再4.0/2结果为2.0。7、D8、A【解析】八进制的数字为0~7。9、D【解析】在C中,变量标识符必须以大小写字母或下画线开始,是由数字或者字母下画线等组成的一个字符串,其中C++关键字不能作为标识符,不能包含-、+、*、/等运算符号。C++变量区分大小写。10、C【解析】本题考查了++和%两个运算符。++运算符在前是先使用操作数的值参与表达式的计算,然后将操作数的值加1;%是求余。该题参与运算的i的值是10,而运算完后i的值就变为11,n=0。所以本题选C。11、B12、B13、B【解析】在C语言中,调用函数时是将实参复制一份给形参,所以无论怎么改变形参的值,都不会影响到实参,即传值调用。即使形参是指针变量,也没有改变C语言传值调用这个事实,实参指针也还是复制了一份给形参指针,无论怎么改变形参指针的内容(注意:不是形参指针所指向的内容),也不会影响实参指针的内容。但它们两个现在的值一样,即指向的是同一个内存地址,所以改变形参指针所指向的内容,也就改变了实参指针所指向的内容,C语言就是这样实现传址调用的。本题中fun()函数的形参就是两个指针,但函数中没有任何语句改变这两个指针所指向的内容,只是交换了两个参数的内容,所以该函数不会对传递给它的实参以及实参所指向的内容造成任何影响,故a,b初始化时为3,6,输出结果亦为3和6。应该选择B。14、D【解析】p=f(g(3)+1):函数f被作为一个语句调用。15、B16、B17、C【解析】union是表示共用体的关键字,成员a,b,c共占用同一个内存空间,data的每个成员起始地址都相同;共用体变量所占的内存长度等于最长的成员的长度,故变量data所占的内存字节数与成员c所占字节数相等;执行“data.a=5;printf("%f\n",data.c);”printf函数只是将内存中的数据以不同的类型输出,而不能将内存中的整型数据自动转换为等值的浮点数,故C是错误的。18、A19、D【解析】本题考查了考生对字符串常量的理解。字符串常量是一段以双引号括起来的字符序列,它既可以出现在对字符数组的初始化中,也可以出现在表达式中。当它用于对字符数组的初始化时,应注意系统自动为其添加的结束标志'\0'。而当它出现在表达式中时,应该将其看作一个constchar*类型的指针常量。在选项A中,首先定义了一个字符指针sp,然后将一个字符串赋给甲所指的地址,这是错误的。因为sp是一个未经初始化的野指针,不知其指向哪儿,往一个不确定的地址中写数据很容易让程序出错。选项B首先定义了一个字符数组,然后将一个字符串赋给数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论