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
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]