第一学期《C程序设计》试卷A(0809.11)含答案.doc
《第一学期《C程序设计》试卷A(0809.11)含答案.doc》由会员分享,可在线阅读,更多相关《第一学期《C程序设计》试卷A(0809.11)含答案.doc(9页珍藏版)》请在冰点文库上搜索。
一、单项选择题(1’×40=40分)
1.下面哪种方法不能用来描述算法:
【】
A)自然语言B)流程图C)数据结构D)计算机语言编写的程序
2.以下叙述中错误的是【】
A)C语言源程序经编译后生成后缀为.obj的目标程序
B)C程序经过编译、连接之后才能形成一个真正可执行的二进制机器指令文件
C)用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中
D)C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令
3.按照C语言规定的用户标识符命名规则,不能出现在标识符中的是【】
A)大写字母 B)连接符 C)数字字符 D)下划线
4.以下不合法的用户标识符是【】
A)j2_KEY B)double C)f4dD)_8_
5.以下叙述中错误的是【】
A)C程序必须由一个或一个以上的函数组成
B)函数调用可以作为一个独立的语句存在
C)若函数有返回值,必须通过return语句返回
D)函数形参的值也可以传回给对应的实参
6.对于一个正常运行的C程序,以下叙述中正确的是【】
A)程序的执行总是从main函数开始,在main函数结束
B)程序的执行总是从程序的第一个函数开始,在main函数结束
C)程序的执行总是从main函数开始,在程序的最后一个函数中结束
D)程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束
7.以下叙述中正确的是【】
A)预处理命令行必须位于C源程序的起始位置
B)在C语言中,预处理命令行都以"#"开头
C)每个C程序必须在开头包含预处理命令行:
#include
D)C语言的预处理不能实现宏定义和条件编译的功能
8.以下叙述不正确的是【】
A)分号是C语言的必要组成部分
B)C程序的注释可以写在语句的后面
C)函数是C程序的基本单位
D)主函数的名字不一定用main表示
9.下列说法不正确的是【】
A)定义变量必须要有数据类型
B)任何变量必须先定义后使用
C)所有的变量定义时系统并不分配相应的内存,而是在使用的时候才分配
D)常量可以赋值给一个变量
10.设有定义:
intk=0;,以下选项的四个表达式中与其他三个表达式执行后k值不相同的是【】
A)k++ B)k+=1 C)++k D)k+1
11.以下叙述中正确的是【】
A)break语句只能用于switch语句体中
B)continue语句的作用是:
使程序的执行流程跳出包含它的所有循环
…………………………………装…………………………………………………订…………………………………………………线…………………………………………….
学院:
年级:
姓名:
学号:
……………………………...….密………………………………………...………封…………………………………………………线………………..………………………….…
C)break语句只能用在循环体内和switch语句体内
D)在循环体内使用break语句和continue语句的作用相同
12.在C语言中,函数返回值的类型最终取决于【】
A)函数定义时在函数首部所说明的函数类型
B)return语句中表达式值的类型
C)调用函数时主函数所传递的实参类型
D)函数定义时形参的类型
13.已知大写字母A的ASCII码是65,小写字母a的ASCII码是97,以下不能将变量c中大写字母转换为对应小写字母的语句是【】
A)c=tolower(c)/*tolower()是将大写字母转换为小写字母的函数*/
B)c=c+32
C)c=c-‘A’+‘a’
D)c=(‘A’+c)-‘a’
14.下面结构体的定义语句中,错误的是:
【】
A)structstudent{charname[20];charsex;intage;};structstudents1;
B)structstudent{charname[20];charsex;intage;}structstudents1;
C)structstudent{charname[20];charsex;intage;}s1;
D)struct{charname[20];charsex;intage;}s1;
15.设有定义:
char*p;以下选项中能够使字符型指针p正确指向一个字符串的是:
【】
A)charstr[]=”China”;p=str[0];B)scanf(“%s”,p);
C)p=getchar();D)p=”string”;
16.阅读以下程序
#include
voidmain()
{intcase;floatprintF;
printf(“请输入2个数:
”);
scanf(“%d%f”,&case,&printF);
printf(“%d%f”,case,printF);
}
该程序在编译时出现错误,其出错原因是:
【】
A)定义语句出错,case是关键字,不能用作用户自定义标识符
B)定义语句出错,printF不能用作用户自定义标识符
C)定义语句无错,scanf不能作为输入函数使用
D)定义语句无错,printf不能输出case的值
17.表达式3.6-5/2+1.2+5%2的值是【】
A)4.3B)4.8C)3.3D)3.8
18.sacnf(“%s%d,%f”,s,&i,&f),要想s=“Cumtb”,i=30,f=5.0;下面哪种输入方式能使变量得到正确的结果:
【】
A)cumtb305B)Cumtb305.0C)Cumtb30,5D)cumtb30.05.0
19.以下数组定义中错误的是【】
A)intx[][3]={0};
B)intx[2][3]={{l,2},{3,4},{5,6}};
C)intx[][3]={{l,2,3},{4,5,6}};
D)intx[2][3]={l,2,3,4,5,6};
20.定义数组inta[10],若整型类型变量长度是2个字节,数组a的首地址是0,则&a[5]的值是:
【】
A)5B)10C)6D)12
21.要求通过while循环不断读入字符,当读入字母N时结束循环。
以下正确的是【】
A)while((ch=getchar())!
=′N′)printf("%c",ch);
B)while(ch=getchar()!
=′N′)printf("%c",ch);
C)while(ch=getchar()==′N′)printf("%c",ch);
D)while((ch=getchar())==′N′)printf("%c",ch);
22.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是【】
A)l B)2 C)2.0 D)2.5
23.若有说明语句:
float*p,a;则能通过scanf语句正确给输入项读入数据的程序段是【】
A)*p=&a;scanf("%f",&p);B)*p=&a;scanf("%f",p);
C)p=&a;scanf("%f",*p); D)p=&a;scanf("%f",p);
…………………………………装…………………………………………………订…………………………………………………线…………………………………………….
学院:
年级:
姓名:
学号:
……………………………...….密………………………………………...………封…………………………………………………线………………..………………………….…
24.若有以下语句,则对a数组元素的引用不正确的是(0≤i≤9)【】
inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;
A)a[p-a]B)*(&a[i])C)p[i]D)*(*(a+i))
25.若有语句int*point,a=4;和point=&a;下面均代表地址的一组选项是【】
A)a,point,*&aB)&*a,&a,*point
C)*&point,*point,&aD)&a,&*point,point
26.在调用函数时,如果实参是简单的变量,它与对应形参之间的数据传递方式是【】
A)地址传递B)单向值传递
C)由实参传形参,再由形参传实参D)传递方式由用户指定
27.设变量a是int型,f是float型,i是double型,则表达式10+′a′+i*f值的数据类型为【】
A)intB)floatC)doubleD)不确定
28.能正确表示逻辑关系:
"a≥10或a≤0"的C语言表达式是【】
A)a>=10ora<=0B)a>=0|a<=10C)a>=10&&a<=0D)a>=10‖a<=0
29.若变量a,i已正确定义,且i已正确赋值,合法的语句是【】
A)a==1;B)++i;C)a=a++=5;D)a=int(i);
30.设以下变量均为int类型,表达式的值不为7的是【】
A)(x=y=6,x+y,x+1)B)(x=y=6,x+y,y+1)
C)(x=6,x+1,y=6,x+y)D)(y=6,y+1,x=y,x+1)
31.若变量a是int类型,并执行了语句:
a=′A′+1.6;,则正确的叙述是【】
A)a的值是字符CB)a的值是浮点型
C)不允许字符型和浮点型相加D)a的值是字符′A′的ASCII值加上1
32.执行语句for(i=1;i++<4;);后变量i的值是【】
A)3B)4C)5D)不定
33.若变量c为char类型,能正确判断出c为小写字母的表达式是【】
A)′a′<=c<=′z′B)(c>=′a′)||(c<=′z′)
C)(′a′<=c)and(′z′>=c)D)(c>=′a′)&&(c<=′z′)
34.有以下程序
main()
{inti,s=0;
for(i=1;i<10;i+=2)s+=i+1;
printf(“%d\n”,s);
}
程序执行后的输出结果是【】
A)自然数1~9的累加和
B)自然数1~10的累加和
C)自然数1~9中的奇数之和
D)自然数1~10中的偶数之和
35.若有说明:
inta[][3]={1,2,3,4,5,6,7};则a数组第一维的大小(长度)是【】
A)2B)3C)4D)无确定值
36.以下不正确的定义语句是【】
A)doublex[5]={2.0,4.0,6.0,8.0,10.0};
…………………………………装…………………………………………………订…………………………………………………线…………………………………………….
学院:
年级:
姓名:
学号:
……………………………...….密………………………………………...………封…………………………………………………线………………..………………………….…
B)inty[5,3]={0,1,3,5,7,9};
C)charc1[]={′1′,′2′,′3′,′4′,′5′};
D)charc2[]={′\x10′,′\xa′,′\x8′};
37.设x=2.5,a=7,y=4.7,则表达式x+a%3*(int)(x+y)%2/4的值为【】
A.0B.2.5C.3.5D.4.5
38.设定义inta,b;scanf(“a=%db=%d”,&a,&b);若要a获得3,b获得7,则输入格式为【】
A.37B.3,7Ca=3b=7D3(回车符)739.设a=3,b=4,c=5则逻辑表达式!
(a+b)+c-1&&b+c/2的值为【】
A.1B.0C.6D.740.若有定义inta=1,b=2,c=3;以下语句中执行效果与其它三个不同的是:
【】
A)if(a>b)c=a,a=b,b=c;B)if(a>b){c=a,a=b,b=c;}
C)if(a>b)c=a;a=b;b=c;D)if(a>b){c=a;a=b;b=c;}
二、写出程序运行结果。
(每题3分,共30分)
1.有以下程序
fun(intx,inty,intz)
{z=x*y;}
main()
{inta=4,b=2,c=6;
fun(a,b,c);
printf("%d",c);
}
2.执行下述程序时,若从键盘输入6和8时,输出结果为:
main()
{inta,b,s;
scanf("%d%d",&a,&b);
s=a;
if(a
s=b;
s*=s;
printf("%d",s);
}
3. main()
{
floatc,f;
scanf(“%f”,&f);
c=5/9*(f-32);
printf(“摄氏温度为:
%5.2f\n”,c);
}
若输入78,则运行结果为:
4. main()
{
inti,j,k;
for(i=0;i<=2;i++)
{
for(j=0;j<=2-i;j++)
printf(“”);/*双引号中是一个空格*/
for(k=0;k<=2*i;k++)
printf(“*”);
printf(“\n”);
}
}
5.有如下程序:
main()
{intx=1,a=0,b=0;
switch(x)
{case0:
b++;
case1:
a++;
case2:
a++;b++;
}
printf("a=%d,b=%d\n",a,b);}
6.有以下程序
main()
{inti=1,j=1,k=2;
if((j++||k++)&&i++)
printf("%d,%d,%d\n",i,j,k);
}
7.main()
{charb[]="Helloyou";
b[5]=’\0’;
printf("%s\n",b);}
8.#include
voidmain()
{ intx=20;
printf("%d,%d\n",0}
9.
#include
voidmain()
{inta[]={1,2,3,4,5};
inty=0,x,*p;
p=a;
for(x=0;x<3;x++)
y+=*(p+x);
printf("%d\n",y);
}
10.有以下程序
voidswap1(intc[])
{intt;
t=c[0];c[0]=c[1];c[1]=t;
}
voidswap2(intc0,intc1)
{intt;
t=c0;c0=c1;c1=t;
}
main()
{inta[2]={3,5},b[2]={3,5};
swap1(a);
swap2(b[0],b[1]);
printf(“%d%d%d%d\n”,a[0],a[1],b[0],b[1]);
}
三、填空题(共10分)
1.若a=5,b=3则执行条件表达式temp=(a>b)?
a:
b后,temp的值是:
【】
2.设原来a=12;a*=2+3;则a=【】
3.假设p指向一个数组,则printf(“%d”,*p++)的作用是:
【】
4.structdata
{inti;
charc;
floatf;
}n;
则结构变量n占用内存的字节数是【】
5.如果在程序中使用了getchar()、putchar()函数,则必须在文件的开头加入的命令【】
四、编程题(共20分)
1.求100-200中的全部素数。
2.从键盘输入20个整数,存储到一个整型一维数组a[20]中。
要求:
(1)编写一函数intfind(intx,intb[20])。
实现给定x,找出该数x是数组b中第几个元素的值,并返回该元素的下标。
如果该数不在数组中,则返回-1。
(2)调用上述函数,实现给定x,将数组中值为x的元素的数值清零,并说明x是数组b中第几个元素的值,并返回该元素的下标。
如果x不在数组中,则返回-1。
参考答案一
1--5
C
D
B
B
D
6--10
A
B
D
C
D
11--15
C
A
D
B
D
16--20
A
D
C
B
B
21--25
A
C
D
D
D
26--30
B
C
D
B
C
31--35
D
C
D
D
B
36--40
B
B
C
A
C
二
1.6
2.64
3.0.00
4.*
***
*****
5.a=2,b=1
6.2,2,2
7.Hello
8.1,0
9.6
10.5335
9