2001年06月安徽省C语言试题及答案
一、语言基础填空(共20分,每题2分)
字符串”a\x44\\\nbcd\102a”的长度是__9___________。9
设变量定义
int x=4,y=5;
则表达式(++x<=y--)? ++x:y--的值为__6__________。6
设int a=8,b=7,c=6,x=1;执行语句
if(a>6)if(b>7)if(c>8) x=2;else x=3;
后x的值是______________。1
设x,y为int变量,则执行下列语句
x=0;y=1;
do{y+=x;
x--;
} while (y++>0);
后y的值是________________。1
(五)设 char str1[10]=”ABCDE”,str2[10]=”xyz”;
则执行下列语句
printf(“%d”,strlen(strcpy(str1,str2)));
后输出结果是________________。3
(六)设int x[]={1,2,3,4},y,*p=&x[1];
则执行下列语句
y=(*--p)++;
后y的值是________________。1
(七) 函数调用时,若形参和实参均为数组,其传递方式是_____。地址传递
(八)若有如下说明
int a[]={1,2,3,4,5,6,7,8,9,0},i;
且0=
(九)某C编译系统规定,int型数组占2个字节,则定义
struct {long num;
char name[20];
union {float x;
short y;
}xy;
}aa;
后,sizeof(aa)=______。28
(十)设FILE *fp;关闭fp对应文件的操作语句是_______。fclose(fp)
二、阅读下列程序,写出运行结果(共20分,每题4分)
#include “stdio,h"
main()
{int x=1,y=0,a=0,b=0;
switch(x)
{case 1: switch(y)
{case 0:a++;break;
case 1:b++;break;
}
case 2:a++;b++;break;
}
printf(“a=%d,b=%d\n”,a,b);
}
a=2,b=1
#include “stdio.h”
main()
{int x,y;
for(x=1,y=1;x<=100;x++)
{if(y>=15) break;
if(y%3= =1) {y+=3;continue;}
y-=5;
}
printf(“x=%d,y=%d\n”,x,y);
}
x=6,y=16
#include “stdio.h”
main()
{static int a[][3]={1,3,5,7,9,2,4,6,8};
int i,j,s1=0,s2=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{ if(i= =j) s1=s1+a[i][j];
if(i+j= =2)s2=s2+a[i][j];
}
printf(“%d\n%d\n”,s1,s2);
}
18
18
#include “stdio.h”
void s(n)
int n;
{static int i=1;
int j=1;
if(n>0)
{++i;j++;printf(“%d,%d\n”,i,j);
s(n-1);
}
}
main()
{int k=4;
s(k);
}
2,2
3,2
4,2
5,2
#include “stdio.h”
main()
{int a[5],I,*pa,*pb;
pa=pb=a;
for(i=0;i<5;i++)
{*pb=i;pb++;}
for (i=0;pa
{printf(“a[%d]=%d\n”,I,*pa);
pa++;
}
}
a[0]=0
a[1]=1
a[2]=2
a[3]=3
a[4]=4
三、阅读下列程序,在____处填上适当的语句使程序(或函数完整)(共18分,每空2分)
求两个正整数的最大公约数的函数fun( )
int fun(m,n)
int m,n