A. 当x<0时整个循环结束
B. x>=0时什么也不输出
C. cout永远也不执行
D. 最多允许输出100个非负整数
35.定义一个函数实现交换x和y的值,并将结果正确返回。能够实现此功能的是。
A. swap(int x, int y){ int t; t=x; x=y; y=t; }
B. swap(int *x, int *y){ int t; t=x; x=y; y=t; }
C. swap(int *x, int *y){ int t; t= *x; *x = *y; *y=t; }
D. swap(int *x, int *y){ int *t; t=x; x=y; y=t; }
36.若有代数式3ae/bc,则不正确的C语言表达式是。
A. a/b/c*e*3
B. 3*a*e/b/c
C. 3*a*e/b*c
D. a*e/c/b*3
37.以下表达式值为3的是。
A. 16-13%10
B. 2+3/2
C. 14/3-2
D. (2+6)/(12-9)
38.设有说明语句,int k=7, x=12;则以下能使值为3的表达式是。
A. x%=(k%=5)
B. x%=(k-k%5)
C. x%= k-k%5
D. (x%=k)-(k%=5)
39.若有条件表达式(exp)? A++: b--,则以下表达式中能完全等价于表达式(exp)的是。
A. (exp= =0)
B. (exp!=0)
C. (exp= =1)
D. (exp!=1)
40.设有以下语句:
typedef struct REC
{ char c; int a[4];} REC1;
则下面叙述中正确的是。
A.可以用REC定义结构体变量
B.REC1是struct REC类型的变量
C.REC是struct类型的变量
D.可以用REC1定义结构体变量
41.下列关于结构的语法错误的是
A.结构是由用户自定义的一种数据类型
B.结构中可设定若干个不同数据类型的成员
C.结构中成员的数据类型可以是另一个已定义的结构
D.在定义结构时,可以为成员设置默认值
42.以下关于结构体的叙述中,错误的是。
A.结构体是一种可由用户构造的数据类型
B.结构体中的成员可以具有不同的数据类型
C.结构体中的成员不可以与结构体变量同名
D.结构体中的成员可以是指向自身结构的指针类型
43.说明一个结构体变量时,系统分配给它的内存是。A.各成员所需内存量的总和
B.结构中第一个成员所需内存量
C.成员中占内存量最大者所需的容量
D.结构中最后一个成员所需内存量
44.设有以下说明语句:
struct stu
{ int a; float b; } stutype;
则下面的叙述不正确的是。
A.struct是结构体类型的关键字
B.struct stu是用户定义的结构体类型名
C.stutype是用户定义的结构体类型名
D.a 和b都是结构体成员名
45.若有如下定义
struct data
{ int x,y;} test1={10,20}, test2;
则以下赋值语句中错误的是。
A. test2=test1;
B. test2.x=test1.x;
C. test2.x=test1.y
D. test2={30,40};
46.以下对结构体变量stu1中成员age的非法引用是。struct student
{ int age; int num;} stu1,*p;
p=&stu1;
A. stu1.age
B. student.age
C. p->age
D. (*p).age
47.当说明一个共用体变量时,系统分配给它的内存是。
A. 各成员所需内存量的总合
B.结构中第一个成员所需内存量
C.成员中占内存量最大者所需的容量
D.结构中最后一个成员所需内存量
48.以下对C语言中共用体类型数据的叙述正确的是。A.可以对共用体变量名直接赋值
B.一个共用体变量中可以同时存放其所有成员
C.一个共用体变量中不能同时存放其所有成员
D.共用体类型定义中不能出现结构体类型的成员
49.若有以下定义和语句:
union data
{ int i; char c; float f;} a;
int n;
则以下语句正确的是。
A.a=5; B. a={2,’a’,1.2}
C. printf(“%d\n”,a);
D. n=1;
50.设有以下说明,则下面不正确的叙述是。
union
{ int i; char c; float f;} un;
A. un所占的内存长度等于成员f的长度
B.un的地址和它的成员地址都是同一地址
C.un可以作为函数参数
D.不能对un赋值,但可以在定义un时对它初始化
51.C语言共用体类型变量在程序运行期间
A.所有成员一直驻留在内存中
B.只有一个成员驻留在内存中
C.部分成员驻留在内存中
D.没有成员驻留在内存中
52.使用typedef定义一个新类型的正确步骤是。A.(2)、(4)、(1)、(3) B. (1)、(3)、(2)、(4)C.(2)、(1)、(4)、(3) D. (4)、(2)、(3)、(1)
(1)把变量名换成新类型名
(2)按定义变量的方法写出定义体
(3)用新类型名定义变量
(4)在最前面加上关键则typedef
53.下面对typedef的叙述中不正确的是。
A.用typedef可以定义各种类型名,但不能用来定义变量
B.用typedef可以增加新类型
C.用typedef只是将已存在的类型用一个新的标识符来代表
D.使用typedef有利于程序的通用和移植
54.下面试图为double说明一个新类型名real的语句中,正确定是。
A.typedef real double;
B. typedef double real;
C. typedef real=double;
D. typedef double=real;
55.下面不能正确进行字符串赋值操作的是。
A. char s[5]={“ABCDE”};
B. char s[5]={‘A’, ‘B’, ‘C’, ‘D’, ‘E’};
C. char *s; s=“ABCDE”;
D. char *s; scanf(“%s”,s);
56.下面程序段的运行结果是。
char *s=”abcde”;
s+=2; printf(“%d”,s);
A. cde
B. 字符c
C. 字符c的地址
D. 无确定的输出结果
57.下面程序段的运行结果是。
char a[ ]=”language”, *p;
p=a;
while(*p!=’u’){printf(“%c”,*p-32); p++;}
A. LANGUAGE
B. language
C. LANG
D. langUAGE
58.有如下说明语句,则以下不正确的叙述是。
char a[ ]=”It is mine”;
char *p=”It is mine”;
A. a+1表示的是字符t所在存储单元的地址
B.p指向另外的字符串时,字符串的长度不受限制
C.p变量中存放的地址值可以改变
D.a中只能存放10个字符
答案:
1.A 2.C 3.C 4.D 5.C 6.B 7.D 8.A 9.B 10.A 11.B 12.C 13.D 14.B 15.C 16.B 17.D 18.A 19.D 20.A 21.C 22.D 23.B 24.A 25.C 26.D 27.C 28.C 29.C 30.A 31.D 32.B 33.B 34.D 35.C
36.C 37.B 38. D 39. B 40. D 41. D 42. C 43. A 44. C 45. D 46. B 47.C 48.C 49.B 50.C 51.B 52.C
53. B 54 B 55.C 56.C 57. C 58. D
二、填空题
1.程序的三种基本的控制结构是:、、。
2.C语言中的每条基本语句以作为结束符,每条复合语句以作为结束符。
3.关系表达式x+y>5的相反表达式为。
4.下面的程序段中循环体的执行次数是。
a=10;b=0;
do{b+=2;a-=2+b;} while(a>=0);
5.下面程序段的运行结果为。
x=2;
do{cout<<“*”;x--; } while(!x==0);
6.已知int a[3][2]={3, 2, 1}; 则表达式“a[0][0]/a[0][1]”的值是。
7.若用数组名作为函数调用时的实参,则实际上传递给形参的是。
8.如果一个函数无返回值,定义它时函数类型应是。
9.预处理命令以开头。
10.指针类型变量用于存储,在内存中它占有一个存储空间。
11.赋值语句在执行时先计算,再将该值转换成与一致的值,并将值赋给左部变量。
12.在程序中else总是与的if配对,而不管程序的书写格式如何。
13.在函数中使用语句返回值。
14.函数的形参在未被调用前分配空间,函数形参的要和实参相同。
15.函数调用一般分、,前者的特点是形参和实参各有独立的存储空间,形参的存储空间在函数被调用时才分配,形参内容的变化不影响实参,后者的特点是形参实参共用一个存储空间,形参内容的改变可以改变实参值。
16.在传值调用中,实际是把实参的传给形参。
17.int a[3]={3}; 则a[2]= 。
18.int a[3]={1, 3, 5, 7}; 则。
19.数组由和构成,其数组元素的数据类型是。
20.声明长度为10的float型数组a,且初始化为0的语句是:。
21.指针是存放一个变量的的变量。
22.当数组名作形参时,相当于。
23.要访问数组元素可以采用、、。
24.定义一个指针p,它指向一个有6个整型元素的一维数组,定义语句为。
25.定义一个指针数组p,它有4个元素,每个指针指向一个整型数据,定义语句为。
26.指针可以指向字符串,在定义一个字符型指针时,可以给它初始化,目的是把字符串的放入指针变量。
27.指针可以指向函数,这时它所指的是函数的。
28.C语言的源程序必须通过和后,才能被计算机执行。
29.C语言源程序文件的后缀是;经过编译后,生成文件的后缀是;经过连接后,生成文件的后缀是。
30.在C语言中,表示逻辑“真”值用。
31.设y为int型变量,请写出描述“y是奇数”的表达式。
32.C语言提供的3种逻辑运算符是、和。
33.若x、y、z均为int型变量,则描述“x或y中有一个小于z”的表达式是。
34.设a、b、c均为int型变量且a=7.5, b=2,c=3.6,则表达式a>b &&
c>a || ab 的值是。
35.设a、b、c均为int型变量且a=6, b=4,c=2,则表达式!(a-b)+c-1 && b+c/2的值是。
36.设a、b均为int型变量且a=2, b=4,则表达式!(x=a) || (y=b) && 0的值是。
37.设a、b、c均为int型变量且a=1, b=4,c=3,则表达式!(a
c && 1的值是。
38.若有条件“2答案:
1.顺序结构选择结构循环结构
2.;}
3.x+y<=5
4. 3
5.**
6. 1
7.数组首地址
8.内置函数
9.#
10.所指变量的地址
11.表达式的值左部变量类型
12.它前面最近且未配对
13.return
14.不类型及数量
15.传值调用传址调用
16.值
17.0
18.会出错
19.数组名下标相同的
20.float a[10]={0};
21.地址
22.指针
23.下标法地址法指针法
24.int (*p)[6]
25.int *p[4]
26.首地址
27.入口地址
28.编译连接
29.c obj exe
30.非0数字
31.(y%2)= =1
32.&& || !
33.x34.0
35.1
36.0
37.0
38.x<3 && x>2 || x<-10
三、填空完成下面的程序
1. 以下程序的功能是:输出x,y,z三个数中的最大者。请填空。
#include
int main( )
{ int x=4, y=6, z=7;
int u,v ;
if( x>y ) u=x;
else u=y;
if( u>z ) v=u;
else v=z;
printf(“v=%d”,v);
return 0;
}
2.以下程序的功能是:输入3个整数,按从大到小的顺序进行输出。请填空。