复习A:一、单项选择题1、如果要把常量327 存入变量a 中,a 不能定义的类型是哪一个? ()A)int B)char C)long D)float2、若x 为unsigned int 型变量,则执行下列语句后x 值为()x = 65535 ;printf(“%d \ n”,x);A)65535 B)1 C)无定值D)-13、有以下程序main(){int a=1,b=2,m=0,n=0,k;k=(n=b>a)||(m=a<b);printf(″%d,%d\n″,k,m);}程序运行后的输出结果是()A)0,0 B) 0,1 C)1,0 D)1,1 4、在C 语言中,如果下面的变量都是int 类型,则输出的结果是()。
sum=pad=5; pAd=sum + + ,pAd + +, + + pAd; printf("%d\n",pad);A) 7 B) 6 C) 55、以下程序的输出结果是()。
main(){ int a=4,b=5,c=0,d; d=!a&&!b||!c; printf("%d\n",d);}7、全局变量的存储类型可以定义为( A)auto 或static C)auto 或extern8、定义全局变量时,若变量的的存储类别缺省,则默认的存储类型是()。
B) registerD) static9、已知:int a, x; 则正确的赋值语句是()。
D) 4A)1 B)0 C)非0 的数D)-16、当执行以下程序段时()。
x=-1;do{x=x*x;}while(!x);A)循环体将执行一次B)循环体将执行两次C)循环体将执行无限次D)系统将提示有语法错误)。
B ) extern 或registerD ) extern 或staticA)autoC) externA ) a=(a[1]+a{2})/2;B ) a*=*a+1;C ) a=(x=1, x++, x+2);D ) a="good";10、已知:int a, *p=&a; 则下列函数调用中错误的是()。
A ) scanf("%d", &a);B ) scanf("%d", p);C ) printf("%d", a);D ) printf("%d", p);11、下述程序的输出结果是 ( )。
#include <stdio.h> struct complex{ int x ; int y;} cnum[2]={1,3,2,7};printf(“%d”, cnum[0].y/cnum[0].x*cnum[1].x) ;int i;for (i=0;i<3;i++) p[i]=ch[i]; for (i=0;i<3;i++)printf("%s",p[i]); }A ) 123456780B ) 123 456 780C) 12345678D) 15、对于所定义的二维数组 a[2][3],元素 a[1][2]是数组的第( )个元素。
A) 3B )4C )5D )6二、判断题1、 赋值运算符的优先级低于关系运算符( )。
2、 条件运算符的结合方向是“自左向右” ()。
A ) 0B ) 1 下述程序的输出结果是(C )D ) 612、 #include <stdio.h> void main( ) { union{ unsigned char c ; unsigned int i[4]; }z ; z.i[0]=0x39 ; z.i[1]=0x36; printf(“%c”,z.c);}A ) 6B ) 9下述关于 C 语言文件操作的结论中,( 对文件操作必须先关闭文件 对文件操作必须先打开文件 对文件操作顺序无要求 对文件操作前必须先测试文件是否存在,然后再打开文件 以下程序的输出结果是( main(){ char ch[3][4]={"123","456","78"},*p[3];)。
C ) 13、 14、 D ) 3 )是正确的。
A ) B ) C ) D ) )。
void main( ) { 147C 语句的循环语句中循环体如果包含一个以上的语句,必须以复合语句形式出现( )。
C 程序中的函数不能嵌套调用,但可嵌套定义( )。
若自定义函数要求函数名返回一个值,则该函数体中必须要有 return 语句( )。
当形式参数为指针变量名时,实际参数可为指针变量名、数组名或其它类型变量的首地址( )。
若有说明:static int a[3][4];,则数组 a 中各数组元素可在程序的编译阶段得到初值 0( )。
若用数组名作为函数调用时的实参,则实际上传递给形参数组的是数组的第一个元素的值( )。
利用指针和结构体类型可以构成表、树等复杂的数据结构( )。
共用体变量的地址和它的各成员的地址都是同一地址( )。
printf 函数中的“%0”格式参数表示用来输出unsigned 型数据( )。
在一个 C 程序中,所有要使用的变量和要调用的函数都必须在 main ( )函数中定义( )。
赋值运算符的结合性是“自右至左” ( )。
一个C 程序可以由多个源程序文件组成 ( )。
do-while 语句构成的循环,当 while 语句中的表达式的值为零时结束循环 ( )。
写出下面各程序的运行结果 1、 #include stdio.h main ( ) {int i=0, j=0, k=0, m; for (m=0; m 4; m++) switch (m ) {case 0:i=m++;case 1: j=m++; case 2: k=m++;case 3: m++; }printf (“\n%d, %d, %d, %d”, i, j, k, m ); }2、 #include stdio.h main ( ) {int i=1;while (i =15) if (++i% 3!=2) continue; else printf (“%d”, i ); } 3、#include<stdio.h> add1(int a[ ], int n ){ int i; for (i =0;i<n;i++) a[i]++;}5、# include <string.h> typedef struct student{ char name[10]; long sno; float score;}STU;main ( ) { STUa={"zhangsan",2001,95},b={"Shangxian",2002,90},c={"Anhua",2003,95},d,*p=&d; d=a;3、 4、 5、 6、 7、 8、 9、 10、 11、 12、 13、 14、 15、 main(){ static int array[ ]={0,1,2,3,4,5,6,7,8,9};int j; add1(array,10); for(j=0;j<10;j++) printf(“%d”,array[j]); }4、union data { long w; float x; int y; char z; } beta; main( ) { beta.w=123456; beta.y=888;beta.x=3.14;beta.z='x'; printf(“%c”,beta.y); }if(strcmp(,)>0) d=b;if(strcmp(,)>0) d=c;printf("%ld%s\n",d.sno,p->name);}四、程序填空1、以下程序是从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入,请将缺省语句填上。
main ( ){float x, amax, amin;scanf (“%f”, &x);amax=x; amin=x;while ( ① ){if ( ② ) amax =x;if ( ③ ) amin =x;scanf (“%f”, &x);}printf(“amax=%f, amin=%f\n”, amax, amin); }2、下面的程序是用指针来交换两个数据,请将缺省语句填上。
void exchange( int *p ,int *q){ int t;t=*p; *p=*q; *q=t;}main(){ int a,b,*x,*y;a=10;b=20;x=&a; ①②printf(“%d %d\n”,*x, *y);}五、程序设计题有10 个学生,每个学生的数据包括学号、姓名、 3 门课的成绩,从键盘输入10 个学生数据,要求打印出3 门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、3 门课的成绩、平均分数。
2 、用自定义函数和数组求n 个数的平均值,并用主函数调用参考答案:一、单项选择题1、B2、D 3 、C4 、C 5 、A6、A7 、D8 、C9 、C10、D11、D 12 、B13 、B 14、C15、D二、判断题(√ ) 2 、( ×) 3 、(√ ) 4、( ×) 5 、( ×)6、√ ) 7 、( √)8、( √) 9 、(√) 10 、( √ )11、(×)12、( ×)13、(√) 14 、(√ ) 15 、(√)三、写出程序的运行结果1、答案是:0,1,2,52、答案是:2 5 8 11 143、答案是:123456789104、答案是:x5、答案是:2002Shangxian四、程序填空1、答案是:①x=0 ②x amax ③x amin2、答案:①y=&b; ②exchange(x,y);五、程序设计题1、参考答案:#define N 10 struct student{ char num[6];char name[8];int score[4];float ave;} stu[N];main(){ int i,j,max,maxi,sum;float average;/*输入*/for ( i=0; i<N; i++){ printf( “ \nInput scores of student %d,\n ” ,i+1);printf(“No.:”);scanf(“%s”,stu[i].num); printf(“name:”);scanf(“%s”,stu[i].name);for(j=0;j<3;j++){ printf( “ score %d :”,j+i);scanf(“%d”,&stu[i].score[j]);}}/*计算*/ average=0;max=0; maxi=0;for(i=0; i<N; i++)2、参考答案:float average( float a[ ], int n) { float aver=0;int j;for(j=0;j<n;j++) aver=aver+a[j]; aver=aver/n;return aver;}复习B:一、单项选择题{ sum=0;for(j=0; j<a; j++)sum+=stu[i].score[j];stu[i].avr=sum/3.0; average+=stu[i].avr; if(sum>max) { max=sum;maxi=i;}}average/=N;/*打印*/printf(“NO. name score1 score2score3 average\n”);for(i=0; i<N; i++){ printf( “ %s%10s ” , stu[i].num ,stu[i].name);for(j=0; j<3; j++)printf(“ %9d ” ,stu[i].score[j]);printf(“ %8.2f\n ” ,stu[i].avr);}printf( “ average=%6.2f\n ”,average);printf(“The highest score is : %s, score total: %d”, stu[maxi].name,max);}main(){ float x[10],y;int j;for(j=0;j<10;j++)scanf( “ %f” ,&x[j]);y=average(x,10);printf( “ aver=%.2f\n ” ,y); }选用( )。