2011年10月自考00342高级语言程序设计一试题及答案含解析_第1页
2011年10月自考00342高级语言程序设计一试题及答案含解析_第2页
2011年10月自考00342高级语言程序设计一试题及答案含解析_第3页
2011年10月自考00342高级语言程序设计一试题及答案含解析_第4页
2011年10月自考00342高级语言程序设计一试题及答案含解析_第5页
免费预览已结束,剩余4页可下载查看

付费下载

下载本文档

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

文档简介

高级语言程序设计(一)年月真题

00342201110

1、【单选题】自定义标识符由字母、数字或下划线组成,且第一个字符必须是()

数字

字母或数字

A:

数字或下划线

B:

字母或下划线

C:

答D:案:D

解析:在C语言中,合法的标识符由字母、数字和下划线组成,并且第1个字符必须为字

母或下划线。

2、【单选题】运算符优先级符合由高到低排列的一组是()

+、!=、&&、=

&&、!=、+、=

A:

!=、+、=、&&

B:

&&、=、!=、+

C:

答D:案:A

解析:选项中给出的运算符,优先级符合由高到低排列为:+、!=、&&、=。

3、【单选题】转义字符中正确的是()

'\'

'\xyz'

A:

'\\\'

B:

'\820'

C:

答D:案:C

解析:反斜线后为1~3为八进制数,选项D中的8不属于八进制数。反斜线后的十六进

制数由小写字母x开头,后面1~2位十六进制数,选项B中x后面不是十六进制数。选

项A也是错误的转义字符,选项C是正确的转义字符,表示字符\。

4、【单选题】下列程序段执行后x、y和z的值分别是()intx=10,y=20,z=30;

if(x>y)z=x;x=y;y=z;

10,20,30

A:

20,30,30

20,30,10

B:

20,30,20

C:

答D:案:B

解析:x>y不成立,所以z=x;不执行,继续执行x=y;x的值变为20,接着执行y=z;,

有的值变为30,所以程序段执行后x、y和z的值分别是20,30,30。

5、【单选题】下列程序段执行后的输出结果是()intk=4,a=3,b=2,c=1;printf("%

d/n",k<a?k:c<b?c:a);

1

2

A:

3

B:

4

C:

答D:案:A

解析:k<a?k:c<b?c:a是一个嵌套的条件表达式,先计算c<b?c:a,由于c<b成立,

表达式c<b?c:a的值取c的值1;接着计算k<a?k:1,由于k<a不成立,表达式k<

a?k:1的值去1。

6、【单选题】关于for(表达式1;表达式2;表达式3),叙述正确的是()

表达式1不可以缺省

表达式2不可以缺省

A:

表达式3不可以缺省

B:

三个表达式都可以缺省

C:

答D:案:D

解析:for循环中的三个表达式都可以省略,省略表达式2,需要在循环题中使用break

语句结束循环,负责一定是死循环。

7、【单选题】设int*p[4];,则标识符p是()

整型数组名

指针数组名

A:

指针函数名

B:

指向整型变量的指针

C:

答D:案:B

解析:显然p是指针数组的数组名,该数组长度为4,存放指向整型变量的指针。

8、【单选题】在循环结构中,continue语句的作用是()

继续执行本次循环

提前退出多重循环

A:

提前结束本次循环

B:

提前退出本重循环

C:

答D:案:C

解析:在循环结构中,continue语句的作用是提前结束本次循环,重新判断循环控制条

件,决定是否继续循环。

9、【单选题】数组定义及初始化正确的是()

chara[5]={};

inta[5]={0,1,2,3,4,5};

A:

chara={"string"};

B:

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

C:

答D:案:D

解析:选项D,正确定义并初始化了字符数组a,省略的长度为6。选项A,没有进行初始

化,选项B初始化的值比数组长度大,选项C中的a不是数组,只是普通字符变量。

10、【单选题】设intm;,与while(!m)等价的是()

while(m!=0)

while(m=1)

A:

while(m==0)

B:

while(m!=1)

C:

答D:案:C

解析:本题考核的知识点是逻辑表达式的含义。m的值m的逻辑值!m的值m==0的

值m!=0的值00110非01001可见,逻辑上,!m与m==0的,m

与m!=0等价

11、【单选题】设char*sl="12345",*s2="1234";,执行语句printf("%d\n",

strlen(strcpy(sl,s2)));后的输出结果是()

4

5

A:

9

B:

C:

1O

答D:案:A

解析:strcpy(sl,s2)的含义是将字符串s2复制到字符串s1,这样字符串s1的内容就是

"1234",函数strlen求s1的长度,为4。

12、【单选题】下列不属于C语言数据类型的保留字是()

real

void

A:

float

B:

double

C:

答D:案:A

解析:real不属于C语言数据类型的保留字。

13、【单选题】设inti,j=7,*p=&j;,与赋值语句i=j;等价的是()

i=&p;

p=*&j;

A:

p=&j;

B:

i=*p:

C:

答D:案:D

解析:P是变量j的地址,i=*p含义是变量p所指变量j的值赋给变量i,所以与赋值语

句i=j;等价的是i=*p:。

14、【单选题】正确表示数学关系式x≥y≥z的C语言表达式是()

x>=y>=z

(x>=y)&&(y>=z)

A:

(x>=y)&(y>=z)

B:

(x>=y)||(y>=z)

C:

答D:案:B

解析:数学关系式x≥y≥z的含义是x≥y且y≥z,所以正确表示数学关系式x≥y≥z的

C语言表达式是(x>=y)&&(y>=z)。选项C中的“&”是按位与运算。尤其注意选项A,

x>=y>=z的含义是先计算x>=y的值,然后再与z进行>=运算。

15、【单选题】设structstudent{charname[10];charsex;}stu;,则sizeof(stu)的

值是()

2

1O

A:

11

B:

12

C:

答D:案:C

解析:结构体变量占用内存单元字节数等于其所有成员占用内存单元字节数的和,题中

stu是结构体变量,它占用内存单元字节数=10+1=11。sizeof(stu)的含义是计算变量stu

占用内存单元数。

16、【问答题】voidmain(){intn=9;if(n++<lO)printf("%d\n",n);else

printf("%d\n",n--);}

答案:10

解析:表达式n++<lO的含义是先进行n<10的判断,显然成立,然后n再加1变为10,所

以执行printf("%d\n",n);输出10。

17、【问答题】voidfun(intx,inty,intz){z=x*x+y*y;printf("%d\n",z);}

voidmain(){inta=31;fun(5,2,a);printf("%d\n",a);}

答案:2931

解析:执行fun(5,2,a);函数fun中变量x、y、z到的值分别为5、2、31。执行

z=x*x+y*y;后z的值变为29,所以执行printf("%d\n",z);输出29。回到主函数输出a的

值31。

18、【问答题】voidmain(){inta[]={O,9,8,7,6,5,4,3,2,1},*p=a;

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

答案:9,1

解析:*p相当于a[0],*p+9=0+9=9;*(p+9)相当于a[9],值为1。所以输出结果为9,1。

19、【问答题】func(inta){staticintm=O;m+=a;printf("%d\n",m);}void

main(){intk=4;func(k);func(k);}

答案:48

解析:本题考察静态变量,静态变量只在第一次调用所在函数时进行初始化,以后调用不

再进行初始化而是使用上次调用结束时该变量的值。第一次func(4),m=0+4=4;第二次

func(4),m=4+4=8。

20、【问答题】求数组a的所有元素之和。#defineN3voidmain(){inti,j,

sum=0;inta[N][N]={2,4,6,8,10,12,14,16,18};for(i=0;i<N;______)/*第一

空*/for(j=O;______;j++)/*第二空*/sum=sum+______;/*第三空*/

printf("sum=%d\n",sum);}

答案:i++j<Na[i][j]

解析:数组a是N行N列的二维数组,外围的for循环负责扫描行,内层的for循环负责

扫描列,所以第一空填i++,第二空填j<N。语句sum=sum+______;负责累加所有元素的

和,所以第三空填a[i][j]

21、【问答题】键入一个字符串(不超过80个字符)存至字符数组s中并对各元素升序排

序。#include<stdio.h>voidmain(){inti,j,len;chars[81],t;gets(s);

puts(s);len=strlen(s);for(i=O;i<len-l;i++)for(j=i+1;j<len;______)/*第一

空*/if(______)/*第二空*/{t=s[i]s[i]=s[j];______;/*第三空*/}

puts(s);}

答案:j++s[j]<s[i]s[j]=t

解析:外层循环执行len-l次,共进行len-l趟排序,内层循环负责参与每趟排序的元

素,每一趟会比前一趟少一个元素,第一空填j++。每一趟排序过程中,如果发现元素

s[j]比s[i]小,则s[j]与s[i]交换,一趟排序结束s[i]中的值是本趟参与排序的所有元

素中最小的元素,经过len-l趟排序,完成对各元素升序排序,所以第二空填

s[j]<s[i],第三空填s[j]=t。

22、【问答题】输入一个正整数,若是素数(或称质数)则输出“Yes”,否则输出“No”。

voidmain(){inti,n;scanf("%d",______);/*第一空*/printf("%d",n);

for(i=2;i<n;i++)if(n%i==O)______;/*第二空*/if(______)printf("Yes\n");/

*第三空*/elseprintf(”No\n”);}

答案:&nbreaki==n

解析:scanf完成输入一个正整数,所以第一空填&n。for循环用2~n-1去除n如果出现

整除,则结束循环,n不是素数,所以第二空填break。循环结束后,如果i==n则n是素

数,所以第三空填i==n。

23、【问答题】从键盘输入一串字符(!作为结束标志),保存到文件“user.dat”中。

答案:#include<stdio.h>#include<stdlib.h>voidmain(){charch;FILE*fp;/*

定义FILE的指针变量*/if((fp=fopen("user.bat","wb"))==NULL)/*使用fopen打开

文件并判断是否打开成功*/{printf("Cannotopenfile!\n");exit(0);}while

((ch=getchar())!='!')/*循环读取输入的一串字符并写入到文件中*/fputc(ch,fp);

fclose(fp);/*关闭文件*/}

解析:按照文件读取的方法操作即可,步骤1:定义FILE的指针变量保存打开文件时的指

针,步骤2:使用fopen打开文件,步骤3:循环读取输入的一串字符并依次写入到文件

中,步骤4:关闭文件。

24、【问答题】

答案:#include<stdio.h>voidmain(){intage;printf("inputage:");/*提示输入

年龄*/scanf("%d",&age);/*输入年龄*/switch(age)/*根据输入的年龄做判断*/

{case1:case2:case3:printf("Lowerclass");break;/*考虑1-3岁的情况*/

case4:printf("Middleclass");break;/*考虑4岁的情况*/case5:case

6:printf("Higherclass");break;/*考虑5-6岁的情况*/default:printf("Can’t

enter");/*除开上述情况的其他情况*/}}

解析:用scanf输入年龄后将这个值保存在age中。然后将age写在switch后的圆括号

中,接着在switch后的大括号中使用case考虑age为1-6的每种情况,1-3对应一种情

况输出内容后并使用break结束,其他情况以此类推。

25、【填空题】设inta=2,b=3;floatx=3.5,y=2.5;,表达式(float)(a+b)/

2+(int)x%(int)y的值是______。

答案:3.5

解析:该题考察数据类型强制转换。(float)(a+b)/2+(int)x%(int)y=(float)(2+3)/

2+(int)3.5%(int)2.5=5.0/2+3%2=2.5+1=3.5。

26、【填空题】设inti;,语句for(i=l;i==10;i++)++i;循环的次数是______。

答案:0

解析:i的初始值为1,第一次判断循环条件i==10不成立,循环一次也不执行。

27、【填空题】l数组名作为实参传给被调用的函数时,形参获得的是______。

答案:数组首地址

解析:数组名代表数组首地址,数组名作为实参传给被调用的函数时,形参获得的是数组

的首地址。

28、【填空题】设intx=9;,执行语句printf("%d\n",x<<2);后的结果是______。

答案:36

解析:x<<2的含义是按位左移2位。先将x的值9转换为2进制数00001001,按位左

移2位变为:00100100,按照%d格式输出结果是36。

29、【填空题】设charc[5]={'c','d','\0','e','\0'};,执行语句

printf("%s\n”,c);后的结果是______。

答案:cd

解析:执行语句printf("%s\n”,c)按照字符串格式输出数组c的内容,含义是从数组

首地址逐个输出字

温馨提示

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

评论

0/150

提交评论