8_6、下列正确的定义是()。
① int i,*p=&i; ②int *p=&i,i; ③int *p,i;p=&i;④int *p,i;p=i;⑤int *p,i,p=&i; A: ①③ B: ②④ C:②⑤ D:④①
答案:D;D;C;A;C;A;
三、多项选择题
1_1、下列选项中合法的标识符有()。
A: good_morning B:main C: stdio.h D: 8abc 答案:AB;
1_2、下列选项中合法的用户标识符有()。
A: page B:short C: _3com D: int 答案:AC;
1_3、下列选项中合法的用户标识符有()。
A: return B:f2_G3 C: a3-3 D: abc 答案: BD;
1_4、以下叙述正确的是()。
A:C语言严格区分大小写英文字母。 B:C语言用“;”作为语句分隔符。 C:C程序书写格式自由:一行内可以写几个语句,一个语句也可以写在几行。 D:可以使用/*…*/对C程序中的任何部分作注释。 答案:ABCD;
1_5、下列对逻辑运算符两侧的运算对象的数据类型描述不正确的是()。
A: 只能是0或1; B:只能是0或非0正数; C: 可以是整型或字符型数据; D:可以是任何类型的数据; 答案:AB;
1_6、以下对switch语句和break语句中描述错误的有()。
A: 在switch语句中必须使用break语句; B:break语句只能用于switch语句;
C: 在switch语句中可以根据需要使用或不使用break语句; D:break语句是switch语句的一部分; 答案:ABD;
2_1、已定义c为字符型变量,则下列语句中错误的是()。
A: c=’97’; B:c=”97” ; C: c=97; D: c=”a”; 答案:ABD;
3_1、以下正确的是()。
A:预处理命令行必须以‘#’开始。 B:以‘#’开始的都是预处理命令行。 C:程序在执行过程中对预处理命令行进行处理。 D:#define ABCD是正确的宏定义。 答案:ABD;
4_1、在定义int a[2][3]之后,对a[i][j]的正确引用有()。
A: a[0][2] B: a[1,3] C: a[1>2][!1] D: a[2][0] 答案:AC;
4_2、以下对二维数组a正确初始化的是()。
A:static char word[]=’Turbo\\0’; B:static char word[]={‘T’,’u’,’r’,’b’,’o’,’\\0’}; C:static char word[]={“Turbo\\0”}; D:static char word[]=”Turbo\\0”; 答案:BCD;
5_1、以下4个选项中可以看作是一条语句的有()。
A: {;} B: a=0,b=0,c=0 ; C: if(a>0); D: if(b==0) m=1;n=2; 答案:ABC;
5
5_2、若a、b、c、d都是int型变量且已赋初值0,则正确的赋值语句是()。
A: a=b=c=d=100 ; B: d++; C: c+b; D: d=(c=22)-(b++); 答案:ABD;
5_3、设有以下定义:int a=0;double b=1.25;char c=’A’;
#difine d 2 ,则正确的语句是()。
A: a++; B: b++; C: c++; D: d++; 答案:ABC;
6_1、以下述说中正确的是()。
A:一个c源程序可以由一个或多个函数组成。 B:一个c源程序必须包含一个main()函数。 C:c源程序的基本组成单位是函数。 D:在c源程序中,注释说明只能位于一条语句的最后。 答案:ABC;
6_2、以下对C语言中的函数描述不正确的是()。
A:可以嵌套定义,不可以嵌套调用。 B:不可以嵌套定义,可以嵌套调用。 C:可以嵌套定义,也可以嵌套调用。 D:嵌套定义和嵌套调用都不允许。 答案:ACD;
四、程序填空
1、功能:计算平均成绩并统计90分以上人数。成绩数据以一负数作为结束标志。 #include
int n,m;float grade,average; /***********SPACE***********/ average=n=m=【?】; while(1) {
/***********SPACE***********/ 【?】(\ if(grade<0) break; n++;
average+=grade;
/***********SPACE***********/ if(grade<90)【?】; m++; }
if(n) printf(\}
答案: 1). 0 或 0.0 2). scanf 3). Continue
2、功能:找出一维数组中最大值和此元素的下标,数组元素的值由键盘输入。 #include \void main() {
int a[10],*p,*s,i; for(i=0;i<10;i++)
/***********SPACE***********/ scanf(\【?】);
/***********SPACE***********/ for(p=a,s=a;【?】<10;p++) if(*p>*s) s=p;
/***********SPACE***********/
printf(\【?】,s-a); }
答案:1). a + i 或 &a[i] 2). p-a 或 -a+p 3). *s
6
3、功能:输入学生成绩并显示。 # include
char number[6]; char name[6]; int score[3]; } stu[2];
void output(struct student stu[2]); void main(void) {
int i, j;
/***********SPACE***********/ for(i=0; i<2; 【?】) {
printf(\请输入学生%d的成绩:\\n\ printf(\学号:\
/***********SPACE***********/ scanf(\【?】.number); printf(\姓名:\
scanf(\ for(j=0; j<3; j++) {
printf(\成绩 %d. \ /***********SPACE***********/ scanf(\【?】.score[j]); }
printf(\ }
output(stu); }
void output(struct student stu[2]) {
int i, j;
printf(\学号 姓名 成绩1 成绩2 成绩3\\n\ for(i=0; i<2; i++) {
printf(\ for(j=0; j<3; j++)
printf(\ printf(\ } }
答案:
1). i++ 或 ++i 或 i=i+1 或 i+=1 2). stu[i] 3). &stu[i]
4、功能:输入两个整数x,y,请把这两个数由小到大输出。 #include
int x,y,t;
/***********SPACE***********/ scanf(\【?】);
/***********SPACE***********/ if (【?】)
7
/***********SPACE***********/ {【?】}
printf(\}
答案:
1). &x,&y 或 &y,&x
2). x>y 或 x>=y 或 y 3). t=y;y=x;x=t; 或 t=y,y=x,x=t; 或 t=x;x=y;y=t; 或 t=x,x=y,y=t; 5、功能:输出结果为: * * * * * * * * * * * * * * * * * * * * #include /***********SPACE***********/ static char 【?】={'*','*','*','*','*'}; int i,j,k; char space=' '; for(i=0;i<5;i++) { printf(\ for(j=1;j<=3*i;j++) /***********SPACE***********/ printf(\【?】); /***********SPACE***********/ for(k=0;k<【?】;k++) printf(\ } printf(\} 答案: 1). a[5] 或 a[] 2). space 或 ' ' 3). 5 或 =4 6、功能:下面函数为二分法查找key值。数组中元素已递增排序,若找到key则返回对应的下标,否则返回-1。 #include fun(int a[],int n,int key) { int low,high,mid; low=0; high=n-1; /***********SPACE***********/ while(【?】) { mid=(low+high)/2; if(key /***********SPACE***********/ 【?】; else if(key>a[mid]) /***********SPACE***********/ 【?】; else return mid; 8