选择题综合 下载本文

1.以下不正确的C语言标识符是( )。 A. ABC B. abc C. a_bc D. ab.c 2.C程序是由( )构成的。

A. 主程序与子程序 B. 主函数与若干子函数

C. 一个主函数与一个其它函数 D. 主函数与子函数

3.以下说法中正确的是: ( )。

A. 在C语言中,实参与其对应的形参各占独立的存储单元;

B.在C语言中,实参与其对应的形参共占同一个存储单元;

C.在C语言中,只有当实参与其对应的形参同名时,才共占同一个存储单元;

D. 在C语言中,形参是虚拟的,不占存储单元。 4.设n=3;则n++的结果是( )。 A. 2 B. 3 C. 4 D. 5

5.设整型变量n=10,i=4,则赋值运算n%=i+1执行后,n的值是( )。 A. 0 B. 1 C. 2 D. 3

6.在while(x)语句中的x与下面条件表达式等价的是: 。

A. x= =0 B. x= =1 C. x!=1 D. x!=0 7.若有以下说明和语句: struct worker {

int no; char *name; }work, *p=&work;

则以下引用方法不正确的是( )。

A. work.no B. (*p).no C. p->no D. work->no

8.以下对二维数组进行正确初始化的是( )。 A.int a[2][3]={{1,2},{3,4},{5,6}}; B.int a[][3]={1,2,3,4,5,6}; C.int a[2][]={1,2,3,4,5,6}; D.int a[2][]={{1,2},{3,4}};

10.二维数组a有m列,则在a[i][j]之前的元素个数为:( ) 。 A.j*m+i B.i*m+j C.i*m+j-1 D.i*m+j+1

11、假设已定义char a[10]和char *p=a, 下面的赋值语句中,正确的是:

A. a[10]=”Turbo C”; B. a=”Turbo C”;

C. *p=”Turbo C”; D. p=”Turbo C”; 12、下面关于运算符优先顺序的描述中正确的是: A.关系运算符< 算术运算符< 赋值运算符< 逻辑与运算符

B.逻辑 运算符< 关系运算符< 算术运算符< 赋值运算符

C.赋值运算符< 逻辑与运算符< 关系运算符< 算术运算符

D.算术运算符< 关系运算符< 赋值运算符< 逻辑与运算符

13、以下正确的描述是。

A.continue语句的作用是结束整个循环的执行 B.只能在循环体内和switch语句体内使用break语句

C.在循环体内使用break语句或continue语句的作用相同

D.从多层循环嵌套中退出时, 只能使用goto语句 14、以下对C语言函数的有关描述中,正确的是: A.调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参

B.函数既可以嵌套定义又可以递归调用 C.函数必须有返回值,否则不能使用函数 D. 程序中有调用关系的所有函数必须放在同一个源程序文件中

15、以下叙述中不正确的是: A.在不同的函数中可以使用相同名字的变量 B.函数中的形式参数是局部变量

C.在一个函数内定义的变量只在本函数范围内有效

D.在一个函数内的复合语句中定义的变量在本函数范围内有效

16、若有以下定义和语句:double r=99,*p=&r; *p=r;则以下正确的叙述是:

A.以下两处的*p含义相同,都说明给指针变量p赋值

B.在“double r=99,*p=&r;”中,把r的地址赋值给了p所指的存储单元

C.语句“*p=r;”把变量r的地址值赋给指针变量p

D.语句“*p=r;”取变量r的值放回r中

17.C语言中基本数据类型包括( )。

A. 整型、实型、逻辑型 B. 整型、实型、字符型

C. 整型、字符型、逻辑型 D. 整型、实型、逻

辑型、实型

18.已知 int i,a; 执行语句”i=(a=2*3,a*5),a+6;”后,变量a的值是( )。 A. 6 B. 12 C. 30 D. 36

19.C语言中规定函数的返回值的类型是由( )。 A.return语句中的表达式类型所决定 B.调用该函数时的主调用函数类型所决定 C.调用该函数时系统临时决定

D.在定义该函数时所指定的函数类型所决定 20.不能进行++和--运算的数据类型是( )。 A. 指针 B. double C. int D. long

21.为了判断两个字符串s1和s2是否相等,应当

使用( )。

A.if(s1==s2) B.if(s1=s2) C.if(strcpy(s1,s2))

D.if (strcmp(s1,s2))

22、若有以下说明和语句: struct stu {

int no; char *name;

}student, *p=&student;

则以下引用方法不正确的是( )。

A. student.no B. (*p).no C. p->no D. student->no

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

A. 不同的函数中可以使用相同的变量名 B. 形式参数是局部变量

C. 一个函数内部定义的变量只能在本函数范围内有效

D. 在一个函数内部的复合语句中定义的变量可以在本函数范围内有效

24.若用数组名作为函数调用时实参,则实际上传递给形参的是( )。

A.数组首地址 B. 数组的第一个元素值 C.数组中全部元素的值 D. 数组元素的个数 25.已知 int a,*p=&a; 则为了得到变量a的值,下列错误的表达式是()。

A. *&p B.*p C. p[0] D.*&a

26.若有定义int (*p)[4],则标识符p是一个 。

A、指向整型变量的指针变量 B、指向函数的指针变量

C、指向有四个整型元素的一维数组的指针变量 D、指针数组名,有四个元素,每个元素均为一个指向整型变量的指针

27.如果a=3,b=2,c=1,则下列表达式的值为0的是( ) A)a>b

B)(a>b)==c C)b+cb

28.C语言中规定函数的返回值的类型是由( )。 A. return语句中的表达式类型所决定 B.在定义该函数时所指定的函数类型所决定 C.调用该函数时系统临时决定

D.调用该函数时的主调用函数类型所决定 29、在if(x)语句中的x与下面条件表达式等价的是()。

A. x!=0 B. x==1 C. x!=1 D. x==0 30、已知 struct sk { int a;

float b;

}data,*p;

若有p=&data 则对data中成员b的正确引用是________。

A. (*p).data B.(*p).b C. p->data.b D. p.data.b

32.下列对字符串的定义中,错误的是( ) 。 A. char str[7] = \B. char str[] = \C. char *str = \D.

char

str[]

=

{'F','O','R','T','R','A','N',0};

33.设有声明语句:int a=1,b=0;则执行以下语句后输出( ) switch (a) { case 1:

switch (b) {

case 0: printf(\ case 1: printf(\ }

case 2: printf(\}

A.**0** B.**0****2**

C.**0****1****2** D.有语法错误

34.char *p[10];该语句声明了一个( ) 。 A. 指向含有10个元素的一维字符型数组的指针变量p

B. 指向长度不超过10的字符串的指针变量p C. 有10个元素的指针数组p,每个元素可以指向一个字符串

D. 有10个元素的指针数组p,每个元素存放一个字符串 35、已知: union {

double k; char c;

float a;

}test;则sizeof(test)的值是( ) 。 A)8

B.1 C.4

D.13

36.以下对一维数组的定义中,正确的是: 。 A. #define MAX 5 B. int MAX=5; int a[MAX];

int a[MAX];

C. int MAX; D. #define MAX 5;

Scanf(“%d”,&MAX); int a[MAX]; int a[MAX];

37.以下程序运行时输入8,则程序运行后t的值

是( ) 。 main() {

int t;

scanf(“%d”,&t); if(t-->=8)

printf(“%d\\n”,t--) ;

else

printf(“%d\\n”,t++) ; } A.9 B.8 C.7 D.6

38.有以下程序段 main() {

int i=1,sum=0,n; scanf(“%d”,&n); do {

i+=2; sum+=i ; }while(i!=n); printf(?%d”,sum);

}

若使程序的输出值为8,则应该从键盘输入的n的值是:( )。

A. 1 B. 3 C. 5 D. 7

39.C语言源程序的某文件中定义的全局变量的作用域为:_______。

A. 本文件的全部范围 B. 本函数的全部范围

C. 从定义该变量的位置开始到本文件结束 D. 本程序的所有文件的范围 40.设有以下定义:

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

则以下能够正确表示数组元素a[1][2]的表达式是( ) 。

A. *((*ptr + 1)[2]) B. *(*(p + 5))

C. (*ptr + 1) D. *(*(a + 1) + 2)

41.有如下程序片段: int i = 0; while(i++ <= 2); printf(\则正确的执行结果是:

A. 2 B. 3 C. 4 D. 无结果 42.如果int i = 3, 则printf(\的输出结果是 () ,i的值是 () 。 A. -3 4 B. -4 4 C. -4 3 D. -3 3 43.针对下面程序段,下面哪些说法是正确的?

#include

void Swap(int *x, int *y); main() {

int a, b; a = 5; b = 9; Swap(&a, &b);

printf(\}

void Swap(int *x, int *y) {

int *pTemp; *pTemp = *x; *x = *y; *y = *pTemp; }

A. 程序运行结果为乱码; B. 程序运行后将导致程序崩溃; C. 程序编译时出错导致程序无法运行; D. 程序执行了危险的操作; 44、有如下程序片段: #include main( ) {

int a = 5, b = 4, x, y; x = 2 * a++;

printf(\y = --b * 2;

printf(\}

则正确的执行结果是 。 A. a=6, x=10 b=3, y=8 B. a=6, x=10 b=3, y=6 C. a=6, x=12 b=3, y=6 D. 以上均不对

45.对于以下程序片段,描述正确的是 。 int x = -1; do {

x = x * x; }while(!x);

A.是死循环 B.循环执行两次 C.循环执行一次 D.有语法错误 46.有以下程序片断 float fun(int x, int y) { return (x+y);

} main() {

int a=2,b=5,c=8;

cout<

程序运行后的输出结果是 ( )。 A.编译出错

B.12 C.21

D.9.0

47.若有以下调用语句,则不正确的fun函数的函数原型是 ( ) 。 main() {

int a[50],n; ? ?

fun(n, &a[9]); ? ? }

A)void fun(int m, int x[]); B.void fun(int s, int h[41]); C.void fun(int p, int *s); D.void fun(int n, int A);

48、 下列程序执行后的输出结果是 。 main() {

int a[3][3], *p, i; p = &a[0][0]; for (i=1; i<9; i++) {

p[i] = i + 1; }

printf(\}

A.3 B.6 C.9 D.随机数 49.以下叙述正确的是 ( )

A. do-while语句构成的循环不能用其它语句构成的循环来代替。

B. do-while语句构成的循环只能用break语句退出。

C. 用do-while语句构成的循环,在while后的表达式为非零时结束循环。

D. 用do-while语句构成的循环,在while后的表达式为零时结束循环。 51.若已定义:

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]