高级语言程序设计

  • 格式:doc
  • 大小:57.50 KB
  • 文档页数:10

下载文档原格式

  / 10
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

高级语言程序设计(C)模拟题四

一、选择题(本题共20道小题,每题2分,共40分。)

1.以下有4组用户标识符,其中合法的一组是()。

A) For -sub Case B) 4d DO Size

C) f2_G3 IF abc D) WORD void define

答案:C

解析:标识符的命名规则:由字母、数字、下划线组成,第一个字符必须是字母或者下划线,标示符的命名不能同C语言的关键字相同。

2. 若有下面的程序片段:

int a[12]={0}, *p[3], **pp, i;

for(i=0; i<3; i++)

p[i]=&a[i*4];

pp=p;

则对数组元素的错误引用是

A) pp[0][1] B) a[10] C) p[3][1] D) *(*(p+2)+2)

答案:C

解析:A. pp[0]表示p[0]的地址,而pp[0]也为一个指针,它和pp用法相同,故pp[0][1]则表示a[1]的地址,正确。

B.正确。

C.数组p的最大下标为2,错误。

D. *(*(p+2)+2)表示a[10],正确。

3. 若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为

A) a<>0 B) !a

C) a=0 D) a

答案:D

解析:对if(a)而言,如果a的值不为0,则if语句括号中表达式的值不为0,if为真,选D。

4. 若已定义:

int a[ ]={0,1,2,3,4,5,6,7,8,9], *p=a,i;

其中0≤i≤9, 则对a数组元素不正确的引用上

A) a[p-a] B) *(&a[i]) C) p[i] D) a[10]

答案:D

解析:

A. a[p-a]表示a[0],正确。

B. *(&a[i])表示a[i],正确。

C. p[i]表示&a[i],正确。

D. a数组最大下标为9,错误。

5. 以下程序的输出结果是

int main( )

{ int x=10,y=10,I;

for(i=0;x>8;y=++i)

printf("%d,%d ",x--,y);

}

A) 10 1 9 2 B) 9 8 7 6 C) 10 9 9 0 D) 10 10 9 1

答案:D

解析:

第一遍循环: x=10,y=10,x>8,输出 10 10后,x=9,y=1.

第二遍循环:x=9>8,输出 9 1 后x=8,y=2。

第三遍循环:x=8,不满足条件,循环结束,无输出。

6. 下面程序的输出是

void prtv(int *x)

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

int main()

{ int a=25;

prtv(&a);

return 0;

}

A) 23 B) 24

C) 25 D) 26

答案:D

解析:主函数传递给prtv函数的x值为25 ,在printf中,先对x自增,再输出x值为26。

7. 下面能正确进行字符串赋值操作的语句是

A)char s[5]={"ABCDE"}; B)char s[5]={'A'、'B'、'C'、'D'、'E'};

C) char *s;s="ABCDEF"; D)char *s; scanf("%s",s);

答案:C

解析:

A. {}中的’“’也作为字符串中的一个字符,故右侧字符串长度为7>5,越界,错误。

B. 右侧字符的分割符应使用‘,’,而不是‘、’,错误。

C. 正确。

D. s是一个字符串常量,应在定义同时初始化且不能通过scanf函数或任何其他方式修改其值,错误。

8. 设x,y,z,t均为int型变量,则执行以下语句后,t的值为

x=y=z=1;t=++x||++y&&++z;

A)不定值 B)2 C)1 D)0

答案:C

解析: ||和&&运算符的优先级高于赋值运算符=,所以t为一个逻辑值,其只能为0或1,又表达式++x||++y&&++z为真,故t=1。

9. 设p1和p2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是

A)k=*p1+*p2;

B)p2=k;

C)p1=p2;

D)k=*p1 *(*p2);

答案:B

解析:B中不能将一个整形变量的值赋给一个指针变量,应改为p=&k 或者*p=k。

10. 请读程序:

#include<>

#define SUB(X,Y) (X)*Y

int main()

{

int a=3, b=4;

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

return 0;

}

上面程序的输出结果是

A) 12 B) 15

C) 16 D) 20

答案:A

解析:printf函数中输出的内容等价于(a++)*b++,由于自增运算符优先级高于*,所以又等价于(a++)*(b++),应先输出a*b,后进行自增运算。

11. sizeof(float)的结果是:

A) 4

B) 6

C) 8

D)不确定

答案:D

解析:sizeof操作符用来测定数据类型位长,但在不同的系统中,同一数据类型的位长并不一定相同,故不确定,选D。

12. 若执行下面的程序时从键盘上输入3和4,则输出是

int main()

{

int a,b,s;

scanf("%d %d",&a,&b);