C语言02 - 08年春夏学期考试试卷及答案汇总 下载本文

pintf(“3.x=%d\\n”,x);

}

4. 写出当运行程序输入5时,程序输出结果。(5分) void main() {int i,j,n;

scanf(\for(i=0;i<=n-1;i++){

for(j=0;j<=n-1;j++)

if(i+j>=n/2&&i+j=-n/2&&i-j<=n/2)) printf(\ else printf(\ printf(\ } }

4. 写出程序输出结果。(3分)

void main() { int y;

fac(2,&y);

printf(\} fac(int n,int *t)

{int s;

if(n==1||n==0)*t=1; else {

fac(n-1,&s);*t=n*s;} }

5. 阅读下列程序,写出运行结果。(5分) #include

void main() { int i,j;

static int a[10]={1,1,1,1,1,1,1,1,1,1}; for(i=0;i<10;i++) for(j=0;j

6.. 阅读下列程序,写出运行结果。(4分) #include #include fun(char *w,int n)

{char t,*s1,*s2; s1=w;

s2=w+n-1; while(s1

void main()

{ char a[]=\ fun(p,strlen(p)); puts(p);

}

7. 写出程序运行结果,并说明该程序的功能。(3分) int fun(int x) { int countx=0; while(x){ countx++; x=x&(x-1);} return countx; }

void main() { int x=0xEF;

printf(\

}

8. 假设输入字符串为\,写出程序运行结果。(3分) #include

#include void main()

{int i=0,k,r;char str[5][20],astr[20]; while(i<5) { gets(astr);

if(!i)

strcpy(str[i],astr); else {

k=0;

while(strcmp(astr,str[k])>0&&kk;r--)

strcpy(str[r],str[r-1]); strcpy(str[k],astr); }

i++; }

for(i=0;i<5;i++)

printf(\

}

四、程序填空题(每空2分,共40分)

2. 下列程序读入无符号十六进制数(0,1,…..,9,a,b,….,f),将其转换为十进制数输出,请将程

序空缺部分补全。 # include

int f(char *s) { int n=0,i;

for(i=0;s[i]!='\\0'){

if(s[i]>='0'&&s[i]<='9') s[i]=s[i]-'0'; else

(1) ; n=n*16+ (2) ; } return n; }

void main() { char s[10];;

scanf(“%s”,s); printf(\ }

有10个大小不等的自然数,请将它们有小到大排序,注意:输入的数据为1~10的正整数,且输入的每个数个不相同。 void sort(int e[],int n) { int i,t;

for(i=1;i

{ t= (3) ; (4) ; e[i]=t; } }

# include void main() { int i,a[11];

printf(“Input the number from 1 to %d\\n\”); for(i=1;i<11;i++) scanf(\

sort(a,10);

printf(“\\n====sort over=====\\n”); for(i=1;i<11;i++) printf(\printf(\}

3. 输入一个正整数n,判断它是否为一个对称数。例:12321是对称数,而1234则不是。 # include

int IsSymmetry(unsigned long n) { unsigned long i=n,j=0; int flag=0;

while(i){j=j*10+i; i/=10;} if( (5) ) flag=1; return flag; }

void main() { unsigned long n; scanf(\

if( (6) )

printf(\ else

printf(\}

4. 计算字符串str2在母串str1中子串出现的次数。 # include void main()

{ char str[80],substr[80];; int n;

gtes(str);gets(substr);

printf(“%d\\n”,count(str,substr)); }

int count(char *p1,char *p) { char *p2=p;int sum=0;

while( (7) ){ if(*p1==*p2&&*p2!='\\0') { p1++;p2++;} else p1++;

if( (8) ) sum++; p2=p; }

return sum;

}

5. 设一歌唱评奖会上有n(n>20)个评委为歌手A评分,依次输入n个评委为歌手A打的分,再去掉1个最高分和1个最低分,计算余下的分数平均值为歌手A的得分。 #include

#define N 100

int findmax(int a[],int n,int *max1,int *max2)/*求最高分和次高分*/ {int i,m1,m2;