一、填空 共5题 (共计20分)
第1题 (4.0分) 题号:1880 难度:易 第22章
以下程序运行后,输出的a值是【1】,b值是【2】,x的值是【3】,y的值是【4】。
# include
void ex(int, int);
int main( )
{
int a = 11, b = 17;
ex(a, b);
printf("a = %d, b = %dn", a, b);
return 0;
}
void ex(int x, int y)
{
x++;
++y;
printf("x = %d, y = %dn", x, y);
}
=======(答案1)=======
11
=========或=========
a=11
=======(答案2)=======
17
=========或=========
b=17
=======(答案3)=======
12
=========或=========
x=12
=======(答案4)=======
18
=========或=========
y=18
第2题 (4.0分) 题号:1884 难度:较易 第22章
以下程序输出结果是【1】。
#include "stdio.h"
union pw
{
int i;
char ch[2];
}a;
main()
{
a.ch[0]=97;
a.ch[1]=0;
printf("%dn",a.i);
}
=======(答案1)=======
97
第3题 (4.0分) 题号:1888 难度:中 第22章
以下程序输出结果是【1】。
# include
int age(int n)
{
int c;
if (n==1)
c = 8;
else
c = age(n-1)+2;
return c;
}
int main()
{
printf("%dn", age(5));
return 0;
}
=======(答案1)=======
16
第4题 (4.0分) 题号:1895 难度:较难 第22章
以下程序输出结果是【1】。
#include
int a=30,b=50;
int main()
{ int f(int);
int a=2,i;
for(i=0;i<3;i++)
printf("%d ",f(a));
return 0;
}
int f(int a)
{ auto int b=0;
static int c=3;
b=b+1;
c=c+1;
return(a+b+c);
}
=======(答案1)=======
7 8 9
第5题 (4.0分) 题号:1462 难度:难 第22章
程序运行时若依次输入25,3,40,则输出结果是【1】.
main()
{int *p1,*p2,*p3;
int i,j,k,t;
scanf("%d%d%d",&i,&j,&k);
p1=&i;
p2=&j;
p3=&k;
if(*p1<*p2){t=*p1;*p1=*p2;*p2=t;}
if(*p1<*p3){t=*p1;*p1=*p3;*p3=t;}
if(*p2<*p3){t=*p2;*p2=*p3;*p3=t;}
printf("%dn",*p2);
}
=======(答案1)=======
25
二、程序填空 共3题 (共计20分)
第1题 (5.0分) 题号:529 难度:中 第9章
# include
struct student
{
char number[6];
char name[6];
int score[3];
} stu[2];
void output(struct student stu[2]);
void main()
{
int i, j;
for(i=0; i<2; 【?】)
{
printf("请输入学生%d的成绩:n", i+1);
printf("学号:");
scanf("%s", 【?】.number);
printf("姓名:");
scanf("%s", stu[i].name);
for(j=0; j<3; j++)
{
printf("成绩 %d. ", j+1);
scanf("%d", 【?】.score[j]);
}
printf("n");
}
output(stu);
}
void output(struct student stu[2])
{
int i, j;
printf("学号 姓名 成绩1 成绩2 成绩3n");
for(i=0; i<2; i++)
{
【?】("%-6s%-6s", stu[i].number, stu[i].name);
for(j=0; j<3; j++)
printf("%-8d", stu[i].score[j]);
printf("n");
}
}
答案:
=======(答案1)=======
i++
=========或=========
++i
=========或=========
i=i+1
=========或=========
i+=1;
=======(答案2)=======
stu[i]
=======(答案3)=======
&stu[i]
=======(答案4)=======
printf
第2题 (10.0分) 题号:368 难度:中 第10章
#include
void fun(char *s, int *t)
{
int i, n;
n=0;
for(i=0; 【?】 !=0; i++)
if(s[i]>='0'&&s[i]<= 【?】 ) n++;
【?】 ;
}
main()
{
char s[80]="abcdef35adgh3kjsdf7";
int t;
printf("nThe original string is : %sn",s);
fun(s,&t);
printf("nThe result is : %dn",t);
}
答案:
=======(答案1)=======
s[i]
=======(答案2)=======
'9'
=======(答案3)=======
*t=n
第3题 (5.0分) 题号:530 难度:中 第11章
# include
# include
void main()
{
【?】 *fp;
char filename[10];
printf("Please input the name of file: ");
scanf("%s", filename);
if((fp=fopen(filename, "【?】")) == NULL)
{
printf("Cannot open the file.n");
exit(0);
}
【?】;
}
答案:
=======(答案1)=======
FILE
=======(答案2)=======
r
=======(答案3)=======
fclose(fp)
三、程序改错 共3题 (共计20分)
第1题 (5.0分) 题号:229 难度:中 第8章
#include
int fun(double x[],int n)
{
int j,c=0;
float j=0;
for(j=0;j<=n;j++)
xa+=x[j];
xa=xa/n;
printf("ave=%fn",xa);
for(j=0;j<=n;j++)
if(x[j]<=xa) c++;
return xa;
}
main()
{
double x[]={23.5,45.67,12.1,6.4,58.9,98.4};
printf("%dn",fun(x,6));
}
答案:
=======(答案1)=======
float xa=0;
=========或=========
float xa=0.0;
=========或=========
double xa=0;
=========或=========
double xa=0.0;
=======(答案2)=======
for(j=0;j =========或========= for(j=0;n>j;j++) =========或========= for(j=0;n-1>=j;j++) =========或========= for(j=0;j<=n-1;j++) =======(答案3)======= for(j=0;j =========或========= for(j=0;n>j;j++) =========或========= for(j=0;j<=n-1;j++) =========或========= for(j=0;n-1>=j;j++) =======(答案4)======= return c; =========或========= return (c); 第2题 (10.0分) 题号:247 难度:中 第10章 #include void fun(float *a,float *b,float *c) { float *k; if( *a<*b ) { k=*a; *a=*b; *b=k; } if( *a>*c ) { k=*c; *c=*a; *a=k; } if( *b<*c ) { k=*b; *b=*c; *c=k; } } main() { float a,b,c; printf("Input a b c: "); scanf("%f%f%f",&a,&b,&c); printf("a = %4.1f, b = %4.1f, c = %4.1fnn",a,b,c); fun(&a,&b,&c); printf("a = %4.1f, b = %4.1f, c = %4.1fnn",a,b,c); } 答案: =======(答案1)======= float k; =======(答案2)======= if(*a< *c) =========或========= if(*c> *a) 第3题 (5.0分) 题号:207 难度:难 第10章 #include main() { int a[10]; void input(); void output(); void max_min(); input(a,10); max_min(a,10); output(a,10); } void input(int *arr,int n) { int *p,i; p=arr; printf("please enter 10 integers:n"); for(i=0;i scanf("%d",p); } void max_min(int *arr,int n) { int *min,*max,*p,t; min=max=arr; for(p=arr+1;p
if(*p<*max) max=p; else if(*p<*min) min=p; t=*arr;*arr=*min;*min=t; if(max=arr) max=min; t=*(arr+n-1); *(arr+n-1)=*max; *max=t; } void output(int *arr,int n) { int *p,i; p=arr; printf("The changed array is:n"); while(i=0;i printf("%3d",*p++); printf("n"); } 答案: =======(答案1)======= scanf("%d",p ++); =========或========= scanf("%d",arr[i]); =========或========= scanf("%d",p+i); =========或========= scanf("%d",arr+i); =======(答案2)======= if(*p>*max) =========或========= if(*max<*p) =======(答案3)======= if( max == arr ) =======(答案4)======= for(i=0;i =========或========= for(i=0;n>i;i++) =========或========= for(p=arr;p
=========或========= for(i=0;i<=n-1;i++) =========或========= for(i=0;n-1>=i;i++) =========或========= for(p=arr;p<=arr+n-1;) =========或========= for(p=arr;arr+n-1>=p;) 四、程序设计 共4题 (共计40分) 第1题 (10.0分) 题号:313 难度:易 第3章 #include void wwjt(); int fun(int n) { } main() { int k; k=fun(1234); printf("k=%dn",k); wwjt(); } void wwjt() { FILE *IN,*OUT; int iIN,iOUT,i; IN=fopen("22.IN","r"); if(IN==NULL) { printf("Please Verify The Currernt Dir..it May Be Changed"); } OUT=fopen("22.out","w"); if(OUT==NULL) { printf("Please Verify The Current Dir.. it May Be Changed"); } for(i=0;i<10;i++) { fscanf(IN,"%d",&iIN); iOUT=fun(iIN); fprintf(OUT,"%dn",iOUT); } fclose(IN); fclose(OUT); } 答案:---------------------- int d,k,s=0; while (n>0) {d=n%10; s+=d*d*d; n/=10; } return s; ---------------------- 第2题 (10.0分) 题号:440 难度:中 第3章 #include void wwjt(); double fun(int m) { } main() { int n; printf("Enter n: "); scanf("%d", &n); printf("nThe result is %1fn", fun(n)); wwjt(); } void wwjt() { FILE *IN,*OUT; int i ; int t; double o; IN=fopen("in.dat","r"); if(IN==NULL) { printf("Read FILE Error"); } OUT=fopen("out.dat","w"); if(OUT==NULL) { printf("Write FILE Error"); } for(i=0;i<5;i++) { fscanf(IN,"%d",&t); o=fun(t); fprintf(OUT,"%fn",o); } fclose(IN); fclose(OUT); } 答案:---------------------- double y=0; int i; for(i=1; i<=m; i++) {y+=1.0/(2*i); } return(y); ---------------------- 第3题 (10.0分) 题号:362 难度:较难 第3章 #include #define N 16 void wwjt(); typedef struct { char num[10]; int s; } STREC; int fun( STREC *a,STREC *b,int l, int h ) { } main() { STREC s[N]={{"GA005",85},{"GA003",76},{"GA002",69},{"GA004",85}, {"GA001",96},{"GA007",72},{"GA008",64},{"GA006",87}, {"GA015",85},{"GA013",94},{"GA012",64},{"GA014",91}, {"GA011",90},{"GA017",64},{"GA018",64},{"GA016",72}}; STREC h[N]; int i,n,low,heigh,t; printf("Enter 2 integer number low & heigh : "); scanf("%d%d", &low,&heigh); if ( heigh< low ) { t=heigh; heigh=low; low=t; } n=fun( s,h,low,heigh ); printf("The student's data between %d--%d :n",low,heigh); for(i=0;i printf("%s %4dn",h[i].num,h[i].s); printf("n"); wwjt(); } void wwjt() { FILE *in, *out ; STREC s[N],h[N]; int i,j,n; in=fopen("in.dat","r"); if(in==NULL) { printf("Please Verify The Currernt Dir..It May Be Changed"); } out=fopen("out.dat","w"); if(out==NULL) { printf("Please Verify The Current Dir.. It May Be Changed"); } for(j=0;j<10;j++) { for(i=0;i<16;i++) { fscanf(in,"%s %d",&s[i].num,&s[i].s); } n=fun( s,h,80,98 ); fprintf(out,"%dn",n); } fclose(in); fclose(out); } 答案: int i,j=0; for(i=0;i if(a[i].s>=l&&a[i].s<=h) b[j++]=a[i]; return j; 第4题 (10.0分) 题号:302 难度:难 第3章 #include void wwjt(); float StuAgv[2]; float CouAgv[3]; float Max=0; void fun(float score[2][3]) { } void main() { int i,j; float score[2][3]; printf("输入学生的成绩:"); for(i=0;i<2;i++) for(j=0;j<3;j++) scanf("%f",&score[i][j]); printf("n输出学生的成绩:"); for(i=0;i<2;i++) { for(j=0;j<3;j++) printf("%.2f ",score[i][j]); printf("n"); } fun (score); for(i=0;i<2;i++) printf("第%d个学生的平均成绩是:%0.2fn",i+1,StuAgv[i]); for(j=0;j<3;j++) printf("第%d门课的平均成绩是:%0.2fn",j+1,CouAgv[j]); printf("所有分数中的最高分为:%.2fn",Max); wwjt(); } void wwjt() { FILE *IN,*OUT; float iIN[2][3]; int i,j; IN=fopen("in.dat","r"); if(IN==NULL) { printf("Please Verify The Currernt Dir..it May Be Changed"); } OUT=fopen("out.dat","w"); if(OUT==NULL) { printf("Please Verify The Current Dir.. it May Be Changed"); } for(i=0;i<2;i++) for(j=0;j<3;j++) fscanf(IN,"%f",&iIN[i][j]); fun(iIN); for(i=0;i<2;i++) fprintf(OUT,"%.2fn",StuAgv[i]); for(j=0;j<3;j++) fprintf(OUT,"%.2fn",CouAgv[j]); fprintf(OUT,"%.2fn",Max); fclose(IN); fclose(OUT); return ; } 答案: int i,j; float sum; for(i=0;i<2;i++) { sum=0; for(j=0;j<3;j++) sum=sum+score[i][j]; StuAgv[i]=sum/3; } for(j=0;j<3;j++) { sum=0; for(i=0;i<2;i++) sum=sum+ score [i][j]; CouAgv[j]=sum/2; } Max=score[0][0]; for(i=0;i<2;i++) for(j=0;j<3;j++) if(Max<=score[i][j]) { Max=score[i][j]; } return ;



