高级语言程序设计C语音.docx
《高级语言程序设计C语音.docx》由会员分享,可在线阅读,更多相关《高级语言程序设计C语音.docx(14页珍藏版)》请在冰豆网上搜索。
高级语言程序设计C语音
C语言程序设计模拟试题三
一、选择题(本题共20道小题,每题2分,共40分。
)
1.若有说明,double*p,a;则能通过scanf语句正确给输入项读入数据的程序段是
A)*p=&a;scanf("%lf",p);
B)p=(double*)malloc(8);scanf("%f",p);
C)p=&a;scanf("%lf",a);
D)p=&a;scanf("%le",p);
答案:
D
解析:
选项A:
此项中*p是指针指向单元的值引用,&a是a单元的地址,故此项错误。
选项B:
scanf中的格式控制符对双精度变量而言是"%lf",而非选"%f",此项错误。
选项c:
scanf函数的地址表列中不能写成a,此项错误。
选项D:
指针p首先指向a单元,再通过键盘以科学计数格式赋值浮点数,此项正确。
2.两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是
intmain()
{intx;
scanf("%d",&x);
if(x++>5)printf("%d",x);
elseprintf("%d\n",x--);}
A)7和5B)6和3C)7和4D)6和4
答案:
A
解析:
当输入为6时,即x=6,∵++在x后,∴先取x=6与5比较,再取x=6+1=7,6>5成立,输出x=7;同理,当输入为4时,输出x=5。
本题考察++,--的优先级与结合性。
3.下面程序的输出是
A)xyzabcABCB)zabcABCC)yzabcABCD)xyabcABC
#include
#include
intmain()
{
char*p1="abc",*p2="ABC",str[50]="xyz";
strcpy(str+2,strcat(p1,p2));
printf("%s\n",str);
}
答案:
D
解析:
strcat将p2字符串连在p1字符串尾,产生新字符串:
abcABC,在讲连接后的值赋在str[2]处,即a将z覆盖,产生新的字符组元素:
xyabcABC。
本题考察字符串函数应用.
4.若有以下说明:
inta[12]={1,2,3,4,5,6,7,8,9,10,11,12};
charc='a',d,g;
则数值为4的表达式是
A)a[g-c]B)a[4]
C)a['d'-'c']D)a['d'-c]
答案:
D
解析:
数值为4的元素的位置在数组内下标为3,∵c=a,d的减去a的得3.
5.以下叙述中不正确的是
A)在不同的函数中可以使用相同名字的变量
B)函数中的形式参数是局部变量
C)在一个函数内定义的变量只在本函数范围内有效
D)在一个函数内的复合语句中定义的变量
答案:
D
解析:
c语言在函数中说明的变量为局部变量,只在函数内起作用,不会影响到其他函数。
在不同函数中使用相同的变量名不代表是同一变量,A)正确;在函数定义时声明的参数只在函数内部起作用,是函数的局部变量,B)正确;在一个函数中定义的变量是这个函数的局部变量,所以只在函数内部起作用,C)正确;复合语句中定义的变量其作用域是这个复合语句,不会扩大到整个函数,所以D)错误。
可参考《c语言程序设计新视角》函数变量的有效范围问题.
6.请选出以下程序段的输出结果
#include
#defineMIN(x,y)(x)<(y)?
(x):
(y)
intmain()
{
inti,j,k;
i=10;j=15;
k=10*MIN(i,j);
printf("%d\n",k);
return0;
}
A)15B)100C)10D)150
答案:
A
解析:
执行MIN(i,j),∵i=107.在C语言中,用于实现打开文件的库函数是()。
A)fclose() B)fopen() C)fseek() D)rewind()
答案:
B
解析:
本题考查c语言文件操作函数,答案为B
8.设有以下语句:
structst{intn;structst*next;};
staticstructsta[3]={5,&a[1],7,&a[2],9,'\0'},*p;
p=&a[0];
则表达式_____的值是6。
A)p++->nB)p->n++C)(*p).n++D)++p->n
答案:
D
解析:
a是先取a[0]的值5然后p自增指向a[1]的n值为7
b是直接取a[0]的5,未经过++运算
c也是直接取a[0]的5,未经过++运算
d是先取a[0]的5再自增为6
9.C语言中形参的缺省存储类别是
A)自动(auto)B)静态(static)
C)寄存器(register)D)外部(extern)
答案:
A
解析:
在函数体内声明的变量,在默认情况都是auto型。
参考查询《c语言程序设计新视角》变量存储类别。
10.执行下面的程序段后,变量k中的值为
intk=3,s[2];
s[0]=k;k=s[1]*10;
A)不定值B)33C)30D)10
答案:
A
解析:
如题,s[0]=k=3,而s[1]并未初始化,则其内存储的是系统随机给的整数值,通常是负数,因而k也为不定值。
11.已知字母A的ASCII码为十进制的65,下面程序的输出是
intmain()
{
charch1,ch2;
ch1='A'+'5'-'3';
ch2='A'+'6'-'3';
printf("%d,%c\n",ch1,ch2);
return0;
}
A)67,DB)B,C
C)C,DD)不确定的值
答案:
A
解析:
ch1的ASCⅡ值为65+2对应到字母C,输出格式中ch1以整数形式输出67;ch2的ASCⅡ值为65+3对应到字母D,输出格式中ch2以字符形式输出D.可以参考《c语言程序设计新视角》输出格式说明符。
12.语句:
printf("%d\n",12&012);的输出结果是
A)12B)8C)6D)012
答案:
B
解析:
012表示八进制,,二进制表示001010,所以12&012=1100&001010(二进制)=1000(二进制)=8.
13.以下说法中正确的是
A)C语言程序总是从第一个的函数开始执行
B)在C语言程序中,要调用的函数必须在intmain()函数中定义
C)C语言程序总是从intmain()函数开始执行
D)C语言程序中的intmain()函数必须放在程序的开始部分
答案:
C
解析:
c语言程序总是main()函数开始执行,其他子函数通过主函数调用而执行。
可以参考《c语言程序设计新视角》中函数部分章节。
14.以下程序运行后,输出结果是
intmain()
{
char*s="abcde";
s+=2;
printf("%ld\n",s);
return0;
}
A)cdeB)字符c的ASCII码值C)字符c的地址D)出错
答案:
C
解析:
s为指针变量,其值为地址,为”abcde”字符串的首地址即a的地址,s+=2等价于s=s+2,即s的值为字符串中a向后移两位对应元素c的地址。
15.设x和y均为int型变量,则执行下的循环后,y值为
for(y=1,x=1;y<=50;y++)
{
if(x>=10)break;
if(x%2==1){x+=5;continue;}
x-=3;
}
A)2B)4C)6D)8
答案:
C
解析:
①x=1不满足x>=10,∴继续向下执行,x%2=1,满足第二个if,∴x=x+5=6,y=2进行第二次循环;
②x=6不满足x>=10,∴继续向下执行,x%2=0,不满足第二个if,继续执行x=3,y=3进行第三次循环;
当进行到第六次循环时,x=11满足x>=10跳出循环,此时y=6。
16.当a=1,b=3,c=5,d=4时,执行下面一段程序后,x的值为
if(a
if(celseif(aif(belsex=3;
elsex=6;
elsex=7;
A)1B)2C)3D)6
答案:
B
解析:
如果if-else语句掌握熟练可直接分析程序做题目。
否则,先将if和else配对(题目上红色数字即为配对情况)
如果a
17.若b是int型变量,则表达式b=25/3%3的值为
A)7B)8C)6D)2
答案:
D
解析:
运算级/与%自左向右,25/3=8,8%3=2,可以参考《c语言程序设计新视角》运算符相关知识。
18.设C语言中,一个int型数据在内存中占2个字节,则unsignedint型数据的取值范围为:
A)0-255
B)1-32767
C)0-65535
D)0-2147483647
答案:
C
解析:
c语言中int取值范围为-32768到32767之间,unsignedint为无符号整型,取值无赋值,因而为0到32767.
19.下面的程序
intmain()
{
intx=3,y=0,z=0;
if(x=y+z)printf("****");
elseprintf("####");
return0;
}
A)有语法错误不能通过编译
B)输出****。
C)可以通过编译,但是不能通过连接,因而不能运行。
D)输出####。
答案:
D
解析:
由题,x=3不等于y+z=0所以执行else语句,输出####。
20.若有以下函数调用语句:
fun(a+b,(x,y),fun(n+k,d,(a,b)));在此函数调用语句中实参的个数是
A)3B)4C)5D)6
答案:
A
解析:
本题考查子函数中形参个数,因为fun()函数默认返回一个数,所以在最外层的fun()函数中有三个形式参数。
本题需注意函数的套用,相关知识点可以参考《c语言程序设计新视角》中函数部分。
二、填空题(本大题共7小题,每题2分,共14分。
)
1.若有定义:
doublex[3][5],则x数组中行下标的下限为_________,列下标的下限为__________。
答案:
2,4
解析:
数组下标从0开使,因而下限为数组长度-1.
2.设有说明语句"inta[3][4]={{1,2},{3,4,5},{6,7,8}};"则a[0][2]的初始化值为_____________,a[2][2]的初始化值为______________。
答案:
0,8
解析:
a[0]={1,2},a[0][2]初始化但未赋值为0,a[2]={6,7,8},a[2][2]=8,注意数组下标是从0开始的。
3.表达式7/2的结果是____________。
表达式7%2的结果是____________。
答案;3,1
解析:
/为除后取整符号,%为除后取余符号。
4.若已知a=1.5,b=15,c=1,则表达式a*b&&c的运算结果是____________。