2、多选(每题2分,共10题,共 20分,错选,漏选均不得分) 1). 下列符号串中,不属于C语言合法标识符的有___BCD__. A)_1_2_3 B)a-b-c C)int D)9cd 2). 下列选项中,没有构成死循环的程序段有_____. A)int i=100; B)for( ; ; ) while(1) { i=i%100+1; if(i>=100)break;} C)int k=0; D)int s=36; do { ++k;} while(k>=0); while(s);——s; 3). 下列判断正确的是__BC_____.(知识点10.3) A) char *a=“china”;等价于 char *a;*a=“china”; B) char str[6]={“china”};等价于char str[ ]= {“china”}; C) char *s=“china”;等价于char *s;s=“china”; D) char c[4]=“abc”,d[4]=“abc”;等价于char c[4]=d[4]=“abc”; 4). 设有如下定义: char *s[2]={“abcd”,“ABCD”}; 则下列说法正确的有__ABD___. A) s数组元素的值分别是“abcd”和“ABCD”两个字符串的首地址 B) s是指针数组名,它含有两个元素分别指向字符型一维数组 C) s数组的两个元素分别存放的是含有四个字符的一维字符数组中的元素 D) s数组的两个元素中分别存放了字符'a'和'A'的地址 5). 若有以下说明:int a[5][9];则下列选项中对数组元素a[i][j]的引用错误的有___B____.(0<=i<4,0<=j<9) A)*(&a[0][0]+9*i+j) B)*(a+i)(j) C)*(*(a+i)+j) D)*(a[i]+j) 6). 若有定义:char *st=“how are you!”;下面程序段正确的有__A___.(知识点:7.3) A) char a[11],*p;strcpy(p=a+1,&st[4]); B) char a[11];strcpy(++a,st); C) char a[11];strcpy(a,st); D) char a[ ],*p;strcpy(p=&a[1],st+2); 7). 设有以下说明语句: Struct stu { int a ; float b ; }stutype ; 则下列叙述正确的有__ABD_____. A) struct是结构体类型的关键字 B) struct stu是用户定义的结构体类型 C) stutype是用户定义的结构体类型名 D) a和b都是结构体成员名 8). 设有定义语句: int x[6]={2,4,6,8,5,7},*p=x,i; 要求依次输出x数组6个元素中的值,下列选项中能完成次操作的语句有__ABC_____. A)for(i=0;i<6;i++)printf(“%2d”,*(p++)); B)for(i=0;i<6;i++)printf(“%2d”,*(p+i)); C)for(i=0;i<6;i++)printf(“%2d”,*p++); D)for(i=0;i<6;i++)printf(“%2d”,(*p)++); 9). 下列叙述正确的有___CD__. A) 函数可以嵌套定义,但不能嵌套调用 B) 函数可以嵌套调用,也可以嵌套定义 C) 函数不可以嵌套定义,但可以递归调用 D) 函数可以嵌套调用,但不能嵌套定义 10). 下列选项中可以将变量n清零的表达式有__ABC_____. A)n=n&~n B)n=n&0 C)n=n^n D)n=n|n 3、程序填空(每空2分,共10空,共20分) 1)、请补充函数fun(),该函数的功能是:把从主函数中输入的字符串str2接在字符串str1的后面。例如:str1=“How do”,str2=“ you do?”,结果输出:How do you do? 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。 试题程序: #include #include #define N 40 void fun(char *str1,char *str2) { int i=0; char *p1=str1; char *p2=str2; while(【1】)*(p1+i) i++; for( ;【2】;i++)*p2 *(p1+i)=【3】;*p2++ *(p1+i)='\0'; }
main() { char str1[N],str2[N]; clrscr(); printf("*****Input the string str1 & str2*****\n"); printf(" \nstr1:"); gets(str1); printf(" \nstr2:"); gets(str2); printf("**The string str1 & str2**\n"); puts(str1); puts(str2); fun(str1,str2); printf("*****The new string *****\n"); puts(str1); } 2)、请补充函数fun(),该函数的功能是求一维数组x[N]的平均值,并对所得结果进行四舍五入(保留两位小数)。 例如:当x[10]={15.6,19.9,16.7,15.2,18.3,12.1,15.5,11.0, 10.0,16.0},结果为:avg=15.030000。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。 试题程序: #include #include double fun(double x[10]) { int i; long t; double avg=0.0; double sum=0.0; for(i=0;i<10;i++) 【1】;sum+=x[i]; avg=sum/10; avg=【2】avg*1000; t=【3】(avg+5)/10; avg=(double)t/100; return avg; } main() { double avg,x[10]={15.6,19.9,16.7,15.2, 18.3,12.1,15.5,11.0,10.0,16.0}; int i; clrscr(); printf("\nThe original data is :\n"); for(i=0;i<10;i++) printf("%6.1f",x[i]); printf("\n\n"); avg=fun(x); printf("average=%f\n\n",avg); } |