C语言自测练习 下载本文

内容发布更新时间 : 2024/5/18 10:20:01星期一 下面是文章的全部内容请认真阅读。

x*=n;

return (x); }

13.源程序: 运行结果:a=2,b=1

#include void 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; case 3: a++;b++; }

printf(“a=%d,b=%d\\n”,a,b); }

14.源程序: 运行结果: 1 3 5

#include 7 9 11 void main() 13 15 17 { int a[10],b[10]={0,1,2,3,4,5,6,7,8,9},i; for(i=1;i<10;i++) a[i]=b[i]+b[i-1]; for(i=1;i<10;i++) {

printf(“=”,a[i]); if(i%3==0)

printf(“\\n”); } }

15.源程序: 运行结果:abc

#include void main()

{ char s[]=“abcdef”; s[3]=‘\\0’;

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

16.源程序: 运行结果:12

#include #define MUL(z) (z)*(z) void main()

{ printf(“%d\\n”,MUL(1+2)+3); }

17.源程序: 运行结果:9

#include int fun(int n) { int t;

if((n==0)||(n==1))

t=1; else

t=n*fun(n-1); return (t); } void main() { int i,s=0; for(i=1;i<=3;i++) s=s+fun(i);

printf(“%d\\n”,s); }

18.源程序: 运行结果:235

#include void main() { int k=5,n=0; do{ switch(k) { case 1:

case 3: n+=1;k--;break; default : n=0;k--;

case 2:

case 4: n+=2;k--;break; }

printf(“%d”,n); }while(k>0 && n<5); }

19.源程序: 运行结果:*#*#*

#include *#* #include * void main() *#* { int i,j; for(i=-2;i<=2;i++) *#*#* { for(j=1;j<=2-abs(i);j++)

printf(“ ”);

for(j=1;j<=2*fabs(i)+1;j++) if(j%2)

printf(“*”); else

printf(“#”);

printf(“\\n”); } }

20.源程序: 运行结果:55

以下程序执行时,从键盘输入10 #include int fun(int n) { if(n==1) return 1; else

return(n+fun(n-1)); } void main() { int x,s;

scanf(“%d”,&x);

s=fun(x); printf(“%d\\n”,s); }

21.源程序: 运行结果:29

#include int a=2; int fun(int n)

{ static int a=3; int t=0;

if(n%2) { static int a=4; t+=a++; } else { static int a=5; t+=a++; } return t+a++; } void main() { int s=a,i; for(i=0;i<3;i++) s+=fun(i); printf(“%d\\n”,s); } 22.源程序: 运行结果:5 5 3

#include void main()

{ int x,y=1; if(y!=0) x=5; printf(“%d ”,x); if(y==0) x=4; else x=5; printf(“%d ”,x); x=1; if(y>0) x=3; else x=5; printf(“%d ”,x); }

源程序: 运行结果:* #include # void main()

{ int i; for(i=1;i<=5;i++)

switch(i%2) { case 0: i++; printf(“#”); break;

case 1: i+=2;printf(“*”); default : printf(“\\n”); } }

24.源程序: 运行结果:min=-2,row=2,col=1

#include void main()

{ int i,j,row,col,min,a[3][4]={{1,2,3,4},{9,8,7,6},{-1,-2,0,5}}; min=a[0][0];

for(i=0;i<3;i++) for(j=0;j<4;j++) if(a[i][j]

25.源程序: 运行结果:max is 2

#include

max(int x,int y) { int z; z=(x>y) ? x : y; return (z); }

void main() { int a=1,b=2,c; c=max(a,b); printf(“max is %d\\n”,c); } 26.源程序: 运行结果:-1 3 6 8 9

#include void sort(int a[]) { int i,j,t,p;

for(j=0;j<4;j++){ p=j; for(i=j;i<=4;i++) if(a[i]

{ int a[5]={9,6,8,3,-1},i; sort(a); for(i=0; i<=4; i++) printf(“ %d”,a[i]); } 27.源程序: 运行结果:*#*#*

#include

void main(){ int i; for(i=1;i<=5;i++) if(i%2!=0) printf(“*”);else printf(“#”); } 28.源程序: 运行结果:84

若运行时从键盘输入:48,32<回车>

#include #include

int gy(int m,int n) { int r; r=m%n; while(r!=0) { m=n;n=r;r=m%n; } return (n); } void main()

{ int a[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},i,j,s; i=j=s=0;

while(i++<4) { if(i==2 || i==4) continue; j=0; do{s+=a[i][j];j++;}while(j<4);}

printf(“%d\\n”,s); }

29.源程序: 运行结果:6,13

#include

fun(int x,int y){static int m=1,i=2; i+=m+1; m=i+x+y; return m; } void main()

{ int j=1,m=1,k; k=fun(j,m); printf(“%d,”,k); k=fun(j,m); printf(“%d\\n”,k); } 30.源程序: 运行结果:6

设程序经编译后生成的文件为exam.exe,在命令提示符下运行时输入:exam 123<回车> #include

int fun() { static int s=0; s+=1; return s; } void main(int argc,char *argv[])

{ int n,i=0; while(argv[1][i]!=‘\\0’) { n=fun(); i++; } printf(“%d\\n”,n*argc); }

四.程序填空题

1.函数swap用来交换两个变量的值。

#include

void swap(int *x,int *y) { int temp; temp=*x; *x=*y; ;}

void main() { int x=20,y=10; swap( ); printf(“ %d, %d\\n”,x,y);} 2.下列程序可以求100之内的奇数之和。

#include void main()

{ int i=1,s; s=0 ; while(i<100) { s=s+I; i=i+2 ;} printf(“s=%d\\n”,s); } 3.下列程序的功能是求数组中主对角线元素之和。

#include void main()

{ int a[3][3],s=0,i,j;

for(i=0;i<3;i++) for(j=0;j<3;j++) scanf(“%d”,&a[i][j]);

for(i=0;i<3;i++) for(j=0;j<3;j++) if( i==j ) s+= a[i][j] ; printf(“s=%d\\n”,s); }

4.将a矩阵行和列互换,形成b矩阵。

#include void main()

{ int a[2][3]={1,2,3,4,5,6},b[3][2],i,j;

for(i=0;i<=1;i++) for(j=0;j<=2;j++) a[i][j]=b[j][i] ;

for(i=0;i<=2;i++) { for(j=0;j<=1;j++) printf(“]”,b[i][j]); printf(“\\n”); } } 5.下列程序的功能是将字符串大写字母转换为小写字母,并输出字符串。

#include

void main() { char *p,q; =“I love Beijing”; for(; !=’\\0’; )

{ if(*p>=’A’ && *p<=’Z’) q=*p+32; else q=*p;printf(“%c”,q);} } 6.以下程序的功能是用选择法对数组a中的整数由小到大进行排序。

#include

void sort(int b[],int n) { int i,j,t; for(i=0;i

for( ;j

sort( ,8); for(i=0;i<8;i++) printf(“]”,a[i]); printf(“\\n”); } 7.以下程序实现的功能是找出数组中的最大值和此元素的下标,数组元素的值由键盘输入。

#include

void main() { int a[10],i,max,j;

for(i=0;i<10;i++) scanf(“%d”, ); max=a[0];j= ; for(i=1;i<10;i++) if(a[i]>max){ max=a;j= ;} printf(“max=%d,index=%d\\n”,max,j); }

8.写两个函数,分别求两个正整数的最大公约数和最小公倍数。用主函数调用这两个函数并输出结果,两个正整数由键盘输入。

#include

void main() { int a,b,x,y;

scanf(“%d%d”,&a,&b); x=f1(a,b); y=f2( );printf(“%d,%d\\n”,x,y);} f1(int a,int b)

{ int i; for(i=a;i>0;i--) if(a%i==0 && b%i==0) break; return i; } f2(int a,int b,int x) { int j; j= ; return j; }

9.以下程序的功能是用递归方法计算学生的年龄,已知第一位学生年龄最小,为10岁,其余学生一个比一个大2岁,求第5位学生的年龄。

#include

age(int n){ int c; if(n==1) c= ; else c= ; return c; } void main(){ int n=5; printf(“age: %d\\n”,age(n)); } 10.分别计算出矩阵a的两条对角线的元素之和。

#include

void main() { int a[3][3]=1,3,6,7,9,11,14,15,17},sum1=0,sum2=0,k,j; for(k=0;k<3;k++) for(j=0;j<3;j++) if( k==j ) sum1+=a[k][j]; for(k=0;k<3;k++) for(j=2;j>0;j--) if( k+j=2 ) sum2+=a[k][j]; printf(“sum1=%d,sum2=%d\\n”,sum1,sum2); }

11.设有两个字符串a、b,下面程序的功能是将a、b的对应字符中的较大者存放在数组c的对应位置上,请填空。

#include

void main() { int k=0; char a[80],b[80],c[80]={‘\\0’},*p,*q; p=a; q=b; gets(a); gets(b);

while( ) { if( ) c[k]=*q; else c[k]= ; p++;q++; k++; } if(*p!=‘\\0’) strcat(c,p); else strcat( , ); puts(c); } 12.以下程序中函数sort的功能是对n个字符串用选择排序法,按字符串值从小到大排序。

#include #include #include

void sort(char p[][20],int n) { char t[20]; int i,j,k;

for(i=0;i

{ char p[5][20]={“Italy”,“Germany”,“America”,“Russa”,“China”}; int i; clrscr(); sort(p[1],3); for(i=0;i<5;i++) puts(p[i]); }

13.以下程序的功能是判断输入的年份是否闰年。闰年的条件是能被4整除但不能被100整除或能被400整除的年份是闰年。