模拟试卷一
试题一(28分,4分/小题)
1、读程序:
#include
main( )
{ int a; float b,c;
scanf(“%2d%3f%4f”,&a,&b,&c);
printf(“a=%d,b=%f,c=%f”,a,b,c);
}
当输入9876543210回车时,则程序的输出为:
2、若使下面程序段使指针变量p指向一个存储整型变量的动态存储单元,应填入:int *p;
p= malloc(sizeof(int));
3、下面程序的输出结果是:
main( )
{ int i=5,j=9,x;
x=(i= =j?i:(j=7));
printf(“%d,%d”,i,j); }
4、int a,b,c; a=3;b=4;c=5; 求表达式!((a
5、写出下面程序的输出结果。
main( )
{ int x=3,y=6,a=0;
while(x++!=(y-=1))
{ a+=1;
if(y } printf(“x=%d,y=%d,a=%d”,x,y,a); } 6、struct aa { int r1; double r2; float r3; union uu { char u1[5]; long u2[2] } ua; } 则sizeof(struct aa)=? 7、int a[]={1,2,3,4,5,6,7,8,9},*p=a;则执行p+=2; printf(“%d”,*p++);后的输出是: 答案:1、a=98,b=765.000000,c=4321.000000 2、(int *) 3、5,7 4、0 5、x=5,y=4,a=1 6、24 7、3 试题二(12分,6分/小题) 阅读下列程序,把程序的输出结果写在答题纸上。 1、fun(int a,int b) { static int c=0; c+=a+b; return c; } main( ) { int x=5, y=3,z=7,r; r=fun((y,x+y),z); r=fun(x,y); printf(“%d”,r); } 2、写出程序的运行结果 void swap1(int c0[],int c1[]) {int t; t=c0[0]; c0[0]=c1[0]; c1[0]=t; } void swap2(int *c0,int *c1) {int t; t=*c0; *c0=*c1; *c1=t; } main( ) { int a[2]={3,5}, b[2]={3,5}; swap1(a,a+1); swap2(&b[0],&b[1]); printf(“%d %d %d %d”,a[0],a[1],b[0],b[1]); } 答案:1、23 2、5 3 5 3 试题三(12分,6分/小题)阅读下列程序,按要求改正错误 1、输出100以内(不含100)能被3整除且个位数为6的所有整数(3个错) #1 main( ) #2 { int i,j; #3 for(i=0;i<100;i++) #4 { i=10*j+6; #5 if(j/3 !=0) continue; #6 printf(“%d”,j); #7 } #8 } 2、以下程序以二进制“写”方式打开一个文件d1.dat,写入1—100这100个整数后关闭文件。再以二进制“读”方式打开,并将这100个数读入到另一个整数数组B中。(3个错)#1 #include #2 main( ) #3 { FILE *fp; #4 int i,a[100],b[100]; #5 fp=fopen(“d1.dat”,”w”); #6 for(i=0;i<99;i++) a[i]=i; #7 fwrite(a,sizeof(int),100,fp); #8 fcloase(fp); #9 fp=fopen(“d1.dat”,”rb”); #10 fread(b,sizeof(b),100,fp); #11 fclose(fp); #12 } 答案:1、#3 for(i=0;i<10;i++) #4 {j=10*i+6; #5 if(j%3 !=0) continue; 2、#5 fp=fopen(“d1.dat”,”wb”); #6 for(i=0;i<99;i++) a[i]=i+1; #10 fread(b,sizeof(int),100,fp); 试题四(18分,9分/小题)编写程序,写在答题纸上。 1、编写程序,从键盘输入一个整数,判断是否为素数并输出结果(yes 或者no)。 2、设有一个二维整数数组int a[10][10],请找出值最大的元素和它的下标并输出。 试题五(15分,3分/空格)补填程序语句,写在答题纸上。 1、下列函数用于统计一行字符中的单词个数,单词之间用空格分开。 word_num( char str[]) { int i, num=0,word=0; for(i=0;str[i]!= 1 ;i++) if( 2 = =’ ’) word=0; else if(word= =0) { word=1; 3 ; } return num; } 2、以下程序输出如下方阵:13 14 15 16 9 10 11 12 5 6 7 8 1 2 3 4 请填空 main( ) { int i,j,x; for(j=4; 4 ;j- -) { for(i=1;i<=4;i++) { x=(j-1)*4+ 5 ; printf(“%4d”,x); } printf(“\n”); } } 答案:1、1:’\0’2: str[i] 3:num++ 2、4: j>0 5: i =========================== 模拟试卷二 试题一(28分,4分/小题) 1、以下程序的输出结果是: main( ) { char a=’a’,b; printf(“%c,”,++a); printf(“%c”,b=a++); } b b 2、运行以下程序的输出结果是: #include main( ) { char *p,*q;; p=(char *)malloc(sizeof(char)*20); q=p; scanf(“%s%s”,p,q); printf(“%s %s”,p,q); } 若从键盘上输入abc def,则结果为:def def 3、运行以下程序的输出结果是: main( ) { char m=12,n=34; printf(“%d%d”,m++,++n); printf(“%d%d\n”,n++,++m); } 12353514 4、若int x,i,j,k; 则计算表达式x=(i=4,j=16,k=32)后,x的值为()。32 5、运行以下程序的输出结果是: main( ) { int a=0256,b=256; printf(“%o %o\n”,a,b); } 256 400 6、运行以下程序的输出结果是: main( ) { int a=666,b=888; printf(“%d\n”,a,b); } 666 7、运行以下程序的输出结果是: main( ) { int i,n[]={0,0,0,0,0}; for(i=1;i<=4;i++) { n[i]=n[i-1]*2+1; printf(“%d ”,n[i]); } 1 3 7 15 试题二(12分,4分/小题) 阅读下列程序,把程序的输出结果写在答题纸上。 1、有程序: main( ) { int n1,n2; scanf(“%d”,&n2); while(n2!=0) { n1=n2%10; n2=n2/10; printf(“%d”,n1); } 若输入1298;则输出为:8921 2、写出下列程序的输出结果: struct stu { char name[10]; int num; int score; }; main( ) { struct stu s[5]={{“yangsan”,20041,703},{“lisiguo”,20042,580},{“wangyin”,20043,680}, {“sundan”,20044,550},{“penghua”,20045,537}},*p[5],*t; int i,j; for(i=0;i<5;i++) p[i]=&s[i]; for(i=0;i<4;i++) for(j=i+1;j<5;j++) if(p[i]->score>p[j]->score) { t=p[i]; p[i]=p[j]; p[j]=t; } printf(“%d %d”,s[1].score,p[1]->score); } 580 550 3、写出下列程序的输出结果: void sort(int a[ ], int n) { int i,j,t;