一、单项选择题(本大题共15小题,每小题2分,共30分)
1.表达式9%45+15/6*2的值是 D
A.4 B.5 C.10
2.设int a[10];,则数组a的下标正确的使用范围是 A
A.0到9到1到9 到10
3.执行语句printf("%c",'A'+3);后输出结果是 D
A.3 B.A C.D
4.设int ml=60,m2=80,m3=100;,表达式m3>m2>ml的值是 A.0 B.1 C.60
5.下列程序段执行后,变量n的值是 C
Static int n;
do {n=n+1;} while(n<1000);
A.1 B.999 C.1000
6.设int a,b,c;,执行语句printf ("%d",(a=1,b=2,c=3));后输出结果是 B
A.6 B.3 C.2
7.设int n=2;,执行语句n+=n-=n-n;后n的值是 C 1、n+=n-=0 2 、n+=2 3、n=4;
A.0 B.2 C.4
8.设int a[2][3]={1,2,3,4,5};,数组元素a[1][1]的值是 D
A.1 B.2 C.4
9.设int a=10,b=20,c=1,d=2;,执行语句if(ad&&(c=10)||c==100)d=200;后,c和d的值分别是A
A.1和2和2和2 和200
10.下列数组初始化后,元素值不全为0的是 B
A.int a[5]={0}; B.int a[5]={'0'} a[0]=48 ; C.static int a[5]; [5]={0,0,0,0,0};
11.设int a[]={11,21,31,41,51,61},*p=a;,表达式*p++的值是 A
A.11 B.21 C.31
12.设Struct t { int a; float b; char c[10]; }x[2]={{1,6.6,"Dollar"},{2,9.8,"Pound"}};
则执行语句printf("%d,%s",x[1].a,x[1].c);后输出结果是 D
A.1,Dollar B.2,Dollar C.1,Pound
13.设char sl[10]="Better",s2[10]="Life";,执行语句printf("%s",strcat(s1,s2));后输出结果是 B
A.LifeBetter B.BetterLife C.Better strcat:连接字符串
14.下列程序段的输出结果是 C
int n=6; while(n>3) { n--; if(n%2==0) continue; printf("%nd",n); }
A.13 B.35 C.53
15.下列程序的输出结果是 B
int a=l;
int f ()
{ int a=2;return a;}
void main()
{printf("%d,%d",a,f());}
A.1,1 B.1,2 C.2,1
二、填空题(本大题共10小题,每小题2分,共20分)
16.指针变量中存放的是_地址_____。
17.设int a;,从键盘输入数据给变量a的输入语句是___scanf("%d",&a);___。
18.break语句除可在循环语句中使用外,还可以用于___switch 语句___。
19.一个源程序中允许有多个函数,但必须有且只能有一个__主函数____。
20.设int m[10],*p;,使指针变量p指向数组m首元素的语句是__*(p=m)++___。
21.运算符+=、&&、<和!中,优先级最低的是____+=__。
22.设int x=12;,执行语句X>>=2;后X的值是__3 _。x>>2等价于 x=x>>2 x>>2等价于x的二进制右移2位(x/2的次)
23.计算使用的系统函数是_pow_____。
24.设char s[20]="Computer";,则strlen(s)的值是_8_____。
25.表达式(int)(3.5+1/2)的值是__3____。 1/2=0
三、程序分析题(本大题共4小题,每小题4分,共16分)
阅读下列程序,将输出结果写到答题纸上。
26.void main()
{
int k,m;
for(m=3;m<12;m++)
{ for(k=2;k if(k==m) printf("%2d",m); } } 3 5 7 11 // %md 以宽度m输出整型数,不足m时,左补空格 27.#define N 5 void main() { int k, sl=0,s2=0; for(k=1;k { case1: case 2:sl+=1;break; case3: case0:s2+=1;break; } printf("s1=%d,s2=%dn",s1,s2); } s1=2 s2=2n 28.int f(intt) { int b; static int c=3; b=c+t; c++; return b; } void main() { int i,k; for(i=1;i<3;i++) {(i); printf("%2d",k); } printf("\\n"); } 4 6 // static int c=3; c为静态变量 29.int f(int n) { if(n=2)return 0; else return(n+f(n-2)); } void main() { int a=10; printf("%d\\n",f(a)); } 0 这里if(n=2) 为永真 不是==2 四、程序填充题(本大题共3小题,每小题6分,共18分) 30.求a、b和c的最大值并输出。 #include int f(int x,__int y ____) /*第一空*/ {return(____y>x__?y∶x);} /*第二空*/ void main() { int a=3,b=4,c=5,d; _____d_=f(f(a,b),f(a,c)); /*第三空*/ printf("%dn",d); } 31.计算并输出结果。 #include void main() { float sum; float fun(int); _____sum_=fun(10); /*第一空*/ printf("sum=%.4f\\n",sum); } float fun(___int___n) /*第二空*/ { int f=1,i; float m=0; for(i=1;i<=n;i++) { m+=1.0/i*f; ____f__第三空*/ } return m; } 32.将一维数组逆序存放后输出。例如int a[3]={1,2,3},逆序存放后int a[3]={3,2,1}。 include void move(int*p,int n); void main() { int i,n=6,a[6]={1,2,3,4,5,6}; move(a,5); for(i=0;i void move(int*p,int n) { __int k__,c__; /*第二空*/ for(k=0;k<=n/2;k++) {c=p[k];p[k]=p[n-k];__p[n-k]=_c___;} /*第三空*/ } 五、程序设计题(本大题共2小题,每小题8分,共16分) 33.计算1到100的平方根,并将结果保存至二进制文件root.dat。 #include #include void main() { double gen = 0; int sum=0,i; for(i=1;i<=100;i++) sum+=i; gen=sqrt(sum); FILE *fp; fp=fopen("f:/root.txt fwrite(&gen, sizeof(double),1,fp) ; fclose(fp); } 34.从键盘输入10个整数,由大到小排序后输出。 #include void main() { int i, j, temp; int a[10]; printf("请输入10个整数:\\n"); for (i = 0; i < 10; i++) { scanf("%d,", &a[i]); } for (j = 0; j < 10; j++) { for (i = 0; i < 10- j; i++) { if (a[i] < a[i + 1]) { temp = a[i]; a[i] = a[i + 1]; a[i + 1] = temp; } } } for (i = 0; i < 10; i++) { printf("%d ", a[i]); } } //快速排序 #include "stdio.h" void main() { int a[10],i,j,k,t ; printf("enter the array\\n"); for (i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<10-1;i++) {k=i; for(j=i+1;j<10;j++) if(a[j]>a[k]) k=j; t=a[k] ; a[k]=a[i]; a[i]=t; } printf("the sorted array :\\n"); for (i=0;i<10;i++) printf("%d ",a[i]); printf("\\n"); }下载本文