一选择题 (本题共20分,每小题1分,请将答案填入下划线位置)
1. 合法的变量定义为 c
A) int a; b; c; B) int a; b, float c;
C) int a, b; float c; D) int a, b, float c;
2. 下列常量中,为不合法的实型常量表示的是 d
A) .0032 B) 0.0 C) 0.3242E8 D) .E3
3. 定义变量:int x=3,y=2;float a=2.5; 则(x+y)/2+(int)a的值为 b
A) 5 B) 4 C) 3 D) 3.5
4. 下列常用转义字符中不正确的是b
A) \\ B) \c C) \012 D) \t
5. 设a、b为整型,则表达式(a=2,b=5,b++,a+b)的值是 d
A)2 B)6 C)7 D)8
6. 有输入语句:scanf("%d,%d",&a,&b);
为使变量a、b分别为5和3,从键盘输入数据的正确形式为____b_
A)5 3<回车> B)5,3<回车>
C)a=5 b=3<回车> D)a=5,b=3<回车>
7. 字符a的ASCII码是97,以下程序段的输出结果是b_____
char ch='b'; printf("%d %c",ch,ch);
A)96 b B)98 b C)b,96 D)b,98
8. 有数学表达式(x≠y)且(y≥z) , 则对应的C表达式为 b
A)x≠y,y≥z B)(x!=y)&&(y>=z)
C)(x<>y)||(y>=z) D)x≠y ||(y>=z)
9. 设a=1,b=2,c=3,d=4,则表达式“a>b?a:c>d?c:d”的值为 a
A)4 B)3 C)2 D)1
10. 在下面给出的四个语句段中,能够正确表示求绝对值函数的语句段是 a
A)if (x!=0) B)y=0;
if (x>0) y=1; if (x>=0)
else y=-1; if (x>0) y=1;
else y=0; else y=-1;
C)if (x<0) y=-1; D)y=-1;
if (x!=0) y=1; if (x!=0)
else y=0 ; if (x>0) y=1;
else y=0;
11. 设有如下程序段,正确的答案是 c
int k=3;
while (k!=0)
{ k- -; }
A)无限循环下去B)只执行一次循环体
C)执行3次循环体D)一次也不执行
12. 设有如下程序段,正确的答案是 a
int x;
for (t=1; t<=100; t++){
scanf(“%d”,&x);
if (x<0) continue;
printf(“%3d”,x);
}
A)当x<0时整个循环结束B)x>=0时什么也不输出
C)printf函数永远也不执行D)最多允许输出100个非负整数
13. 若有数组定义语句:int a[10]; 则对a数组元素的正确引用是 c
A) a[3.5] B) a(8) C) a[6-5] D) a[10]
14. 合法的指针数组说明语句是 a
A) char *x[2]={2,3}; B) char *x[2]={“2” , “3”};
C) char *x[2]={ 2.0 , 3.0}; D) char *x[2]={“2” ; “3”};
15. 若有如下程序,则屏幕输出结果是 c
int a[10]={1,2,3,4,5,6,7,8,9,10};
int *pa=&a;
printf(“%d”,*pa + *(pa+3));
A)3 B) 4 C)5 D)6
16. 设p1是指向函数int func(int,int)的指针变量,调用该函数的语句是 __c___
A) *p1(2,3); B) *p1(int,int);
C) func(int x, int y); D) p1(2,3);
17. 以下不正确的字符串赋值语句是 d
A) char *s; s="abcde"; B) char s[ ]="abcde";
C) char s[10]; s="abcde"; D) char *s="abcde";
18. 若有定义:int a[3][4],不能表示数组元素a[1][1]的是 b
A) *(a[1]+1) B) *(a+5) C) *(&a[1][1]) D) *(*(a+1)+1)
19.若有以下结构体定义,则正确的引用或定义是 b
struct example
{
int x;
int y;
}v1;
A)example.x=10 B)example v2;v2.x=10
C)struct v2;v2.x=10 D)struct example v2={10}
20. 已知有如下定义,则test占用内存的字节数是
union{ int i; char c; float a; }test;
A)4 B)5 C)6 D)7
二、根据给出的程序写运行结果(本题共24分,每小题4分)
1. 下列程序执行后的输出结果是
void main( ){
int x=5,a=1,b=3,c=5,d=5;
if (a
if (c else if (a else x=3; else x=4; printf("%d",x); } 2. 下列程序执行后的输出结果是 void main( ) { int i,j,x=0; for (i=0; i<2; i++) { x++; for (j=0;j<=3;j++) { if (j%2) continue; x++; } x++; } printf(“x=%d\n”,x); } 3. 下列程序执行后的输出结果是 void main() { char s[]="abcdef"; char *p=s; *(p+2)+=3; printf("%c,%c\n",*p,*(p+2)); } 4. 下列程序执行后的输出结果是 void main() { struct s { int n; int *m; }*p; int d[5]={10,20,30,40,50}; struct s arr[5]={100,&d[0],200,&d[1],300,&d[2],400,&d[3],500,&d[4]}; p=arr; printf("%d,",++p->n); printf("%d,",(++p)->n); printf("%d\n",++(*p->m)); } 5. 下列程序执行后的输出结果是 void main() { union un { short int a; char c[2]; }w; w.c[0]=10;w.c[1]=1; printf("%d\n",w.a); } 6. 下列程序执行后的输出结果是 struct STU { char name[10]; int num; }; void f1(struct STU c) { struct STU b={"LiSiGuo",2042}; c=b; } void f2(struct STU *c) { struct STU b={"SunDan",2044}; *c=b; } void main( ) { struct STU a={"YangSan",2041},b={"WangYin",2043}; f1(a); f2(&b); printf("%d %d\n",a.num,b.num); } 三、填空题(本题共30分,每小题6分) 1.输入月份号,输出该月英文名。如输入“5”,则输出“May” void main( ) { char *ch[ ]={"January","February","March","April","May","June", "July","August","September","October","Novenmber","December"}; int month= 0; printf("请输入月份:"); scanf("%d", ________); if(month<1 || ________ ) printf("您输入的月份有错:\n"); printf("您输入的月份是:%s",*(ch+_______)); } 2. 将若干字符串按字符顺序(由小到大)输出 void main( ) { char *name[ ]={"Follow me","BASIC","Java","Delphi","Computer design"}; char *temp; int n=5, i, k, j; for (i=0; i { _______; for (j=i+1;j if (strcmp(name[k],name[j])>0) k=j; if( _______ ) {temp=name[i]; name[i]=name[k]; name[k]= ______; } } } 3. 求一个4*4矩阵两条对角线之和 void main( ) { int i,j,a[4][4],sum=0; printf("请输入矩阵:\n"); for(i=0;i<4;i++) for(j=0;j<4;j++) scanf("%d",________); for(i=0;i<4;i++) for(j=0;j<4;j++) if(i= =j|| _______) sum+=a[i][j]; printf("sum=%d", ________); } 4. 判别素数 void main( ) { int a, i, flag=0; printf("请输入a:\n"); scanf("%d",&a); for (i= ______ ; i<= a-1 ; i++) { if(a%i= =0) { flag=1; ______; } } if( _______ ) printf("%d是素数\n",a); else printf("%d不是素数\n",a); } 5. 输出文件exa7_1.c的内容 #include #include void main() { _______ *fp; char ch; if((fp=fopen("exa7_1.c", "r"))==NULL) { printf("Cannot open file, strike any key exit!"); getche(); exit(0); } ch=________ (fp); while (ch!=EOF) { putchar(ch); ch=fgetc(fp); } _______(fp); }四.编程题(本题共26分) 1. 猜数游戏:从键盘输入一个10以内的正整数,判断其值是否等于6。若大于6则输出“too big”,若小于6则输出“too small”,若等于6则输出“it is true”, 在循环中输入数据,当输入数据超出10时结束该循环(10分)。 2.某班期末考试科目为数学、英语和物理,该班有30名学生参加考试,编程实现下述功能(16分)。 (1)定义函数sort,计算每个学生总成绩,按总成绩由高到低排出成绩名次(6分)。 (2)主函数实现学生信息的输入,这些信息包括学号(StuNum)、数学(Math)、英语(Eng)、和物理(Phi)成绩(10分)。提示:定义30行5列的整型数组。