c语言中数组元素的正确引用,1. 若有定义:int a[2][3];,以下选项中对a数组元素正确引用的是...

本文介绍了C语言中数组元素的正确引用,通过一系列选择题,探讨了数组引用的常见误区,如越界访问、非法索引等。同时,涵盖了C语言的关键概念,如循环、跳转语句、存储类别和类型转换。文章旨在帮助初学者理解C语言中的这些基础但重要的知识点。

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

西工大机考《C语言程序设计》网考

寻求答案(非免费)找我Q和V:2082851315

试卷总分:100 得分:96

一、 单选题 (共 35 道试题,共 70 分)

1. 若有定义:int a[2][3];,以下选项中对a数组元素正确引用的是( )。

A.a[2][!1]

B.a[2][3]

C.a[0][3]

D.a[1>2][!1]

2. 以下描述错误的是( )。

A.break语句不能用于循环语句和switch语句外的任何其他语句

B.在switch语句中使用break语句或continue语句的作用相同

C.在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环

D.在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环

3. 以下存储类型只有在使用时才为该类型变量分配内存的是( )。

A.auto和static

B.auto和register

C.register和static

D.static和extern

4. 若变量已正确定义,有以下程序段

int a=3,b=5,c=7;

if(a>b) a=b; c=a;

if(c!=a) c=b;

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

其输出结果是( )。

A.程序段有语法错

B.3,5,3

C.3,5,5

D.3,5,7

5. 函数strlen("1234\0xy")的值为( )。

A.7

B.8

C.4

D.9

6. 若二维数组a由m列,则在a[i][j]之前的元素个数为( )。

A.j*m+i

B.i*m+j

C.i*m+j-1

D.i*m+j+1

7. 假定x和y为 double型,则表达式x=2,y=x+3/2的值是( )。

A.3.500000

B.3

C.2.000000

D.3.000000

8. 设变量已正确定义并赋值,以下正确的表达式是( )。

A.x=y*5=x+z

B.int(15.8%5)

C.x=y+z+5,++y

D.x=25%5.0

9. 在C语言中,设一表达式中包含有int,long,char和unsigned类型的变量和数据,则这4种类型数据转换的规则是( )。

A.int→unsingned→long→char

B.char→int→long→unsingned

C.char→int→unsigned→long

D.int→char→unsigned→long

10. 若有说明:int *p,m=5,n;,以下正确的程序段是( )。

A.p=&n;scanf("%d",&p);

B.p=&n;scanf("%d",*p)

C.scanf("%d",&n);*p=n;

D.p=&n;*p=m;

11. 在C语言中,变量的隐含存储类别是( )。

A.auto

B.static

C.extern

D.无存储类别

12. 函数的功能是交换变量x和y中的值,且通过正确调用返回交换的结果。能正确执行此功能的函数是( )。

A.funa(int *x, int *y)

{ int *p;

*p=x; *x=*y; *y=*p;

}

B.funb(int x, int y)

{ int t;

t=x; x=y; y=t;

}

C.func(int *x, int *y)

{ *x=*y; *y=*x;

}

D.{fund(int *x, int *y)

13. 在C语言中,只有在使用时才占用内存单元的变量,其存储类型是 ( )。

A.auto和register

B.extern和register

C.auto和static

D.static和register

14. 以下定义语句中正确的是( )。

A.int a=b=0;

B.char A=65+1,b=′b′;

C.float a=1,*b=&a,*c=&b;

D.double a=0.0;b=1.1;

15. 以下描述中正确的是( )。

A.由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句

B.do-while循环由do开始,用while结束,在while(表达式)后面不能写分号

C.在do-while循环体中,是先执行一次循环,再进行判断

D.do-while循环中,根据情况可以省略while

16. 下面程序的输出结果是( )。

main()

{

int s,k;

for(s=1,k=2;k<5;k++) s+=k;

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

A.1

B.9

C.0

D.15

17. 以读写方式打开一个已有的文件file1,下面有关fopen函数正确的调用方式为( )。

A.FILE *fp;fp=fopen("file1";"f");

B.FILE *fp;fp=fopen("file1","r+");

C.FILE *fp;fp=fopen("file1","rb");

D.FILE *fp;fp=fopen("file1","rb+");

18. 设int a=12,则执行完语句a+=a-=a*a后,a的值是( )。

A.552

B.264

C.144

D.-264

19. 阅读下列程序,则运行结果为( )。

#include "stdio.h"

fun()

{ static int x=5;

x++;

return x;\

A.5

B.6

C.7

D.8

20. 运行下面程序:

main()

{

int n1,n2;

scanf("%d",&n2);

while(n2!=0)

\ n1=n2%10;

n2=n2/10;

}

printf("%d",n1);

}若从键盘上输入298↙ ,则输出结果为( )。

A.2

B.29

C.8

D.0

21. C语言规定,在一个源程序中,main函数的位置( )。

A.必须在最开始

B.必须在系统调用的库函数的后面

C.可以任意

D.必须在最后

22. 已知double *p[6]; 它的含义是( )。

A.p是指向double类型变量的指针

B.p是double类型数组

C.p是指针数组

D.p是数组指针

23. 以下叙述中错误的是( )。

A.在程序中凡是以"#"开始的语句行都是预处理命令行

B.预处理命令行的最后不能以分号表示结束

C.#define MAX 是合法的宏定义命令行

D.C程序对预处理命令行的处理是在程序执行的过程中进行的

24. 为了判断两个字符串s1和s2是否相等,应当使用( )。

A.if(s1==s2)

B.if(s1=s2)

C.if(strcpy(s1, s2))

D.if(strcmp(s1, s2)==0)

25. 在下列结论中,只有一个是正确的,它是( )。

A.递归函数中的形式参数是自动变量

B.递归函数中的形式参数是外部变量

C.递归函数中的形式参数是静态变量

D.递归函数中的形式参数可以根据需要自己定义存储类型

26. 以下不正确的定义语句是( )。

A.double x[5]={2.0,4.0,6.0,8.0,10.0;

B.int y[5]={0,1,3,5,7,9;

C.char c1[]={′1′,′2′,′3′,′4′,′5′;

D.char c2[]={′\x10′, ′xa′, ′\x8′;

27. 有以下程序段

int n=0,p;

do

{ scanf("%d",&p);n++;

}while(p!=123&&n<10);

此处do-while循环的结束条件是( )。

A.P的值不等于123或者n的值小于10

B.P的值等于123并且n的值大于等于10

C.P的值不等于123并且n的值小于10

D.P的值等于123或者n的值大于等于10

28. 以下叙述中错误的是( )。

A.改变函数形参的值,不会改变对应实参的值

B.函数可以返回地址值

C.可以给指针变量赋一个整数作为地址值

D.当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL

29. 当变量c的值不为2、4、6时,值也为"真"的表达式是( )。

A.(c==2)︱︱(c==4)︱︱(c==6)

B.(c>=2&& c<=6)︱︱(c!=3)︱︱(c!=5)

C.(c>=2&&c<=6)&&!(c%2)

D.(c>=2&& c<=6)&&(c%2!=1)

30. 运行程序:

#include

main()

{

int n='c';

switch(n++)

{ default: printf("error");break;

case 'a':case 'A':case 'b':case 'B':printf("good");break;

case 'c':case 'C':printf("pass");

case 'd':case 'D':printf("warn");

}

}则输出结果是( )。

A.good

B.pass

C.warn

D.passwarn

31. 设有 int x=8; 则表达式 (++x*1/3) 的值是( )。

A.2

B.3

C.2.6

D.0

32. 下面程序的输出结果是( )。

main()

{ int x=5,y=9,z=1,t;

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

printf("%d\n",t);

A.1

B.0

C.5

D.3

33. 有以下程序

#include

main()

{ int x=1,y=0,a=0,b=0;

switch(x)

{ case 1:

switch(y)

{ case 0:a++; break;

case 1:b++; break;

}

case 2:a++; b++; break;

case 3:a++; b++;

}

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

}

A.a=1,b=0

B.a=2,b=2

C.a=1,b=1

D.a=2,b=1

34. 一个C程序的执行是从( )。

A.本程序的main函数开始,到main函数结束

B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束

C.本程序的main函数开始,到本程序文件的最后一个函数结束

D.本程序文件的第一个函数开始,到本程序main函数结束

35. 有以下程序

main()

{ int i,s=1;

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

if(!(i%5)&&!(i%3)) s+=i;

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

A.409

B.277

C.1

D.91

二、 判断题 (共 15 道试题,共 30 分)

1. C语言的编译系统对宏命令的处理是和c程序中的其他语句同时进行编译的。

A.错误

B.正确

2. 设变量 a 为整型,f 是实型,i 是双精度型,则表达式10+'a'+i * f 值的数据类型不能确定为何类型。

A.错误

B.正确

3. (a=3)>(b=5) 是合法的关系表达式。

A.错误

B.正确

4. 预处理指令只能位于C源程序文件的首部。

A.错误

B.正确

5. 在c程序中,语句之间必须要用分号";"来分隔。

A.错误

B.正确

6. for循环是先执行循环体语句,后判断表达式。

A.错误

B.正确

7. 在C语言中char型数据在内存中的存储形式为ASCII码。

A.错误

B.正确

8. 声明语句可放在函数体中的任何位置。

A.错误

B.正确

9. 在C程序中,%是只能用于整数运算的运算符。

A.错误

B.正确

10. 设int a=12;则执行完语句a+=a-=a*a后,a的值为144。

A.错误

B.正确

11. 两个字符串所包含的字符个数相同时才能比较字符串大小。

A.错误

B.正确

12. %x是格式符的一种,它可以适用于任何一种类型的数据。

A.错误

B.正确

13. 若a和b类型相同,在执行了语句a=b后,b中的值将放入a中,b中的值不变。

A.错误

B.正确

14. 用typedef可以定义各种类型名,但不能用来定义变量。

A.错误

B.正确

15. C语言认为变量number和NuMbEr是相同的。

A.错误

B.正确

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值