资源描述
C语练习三 一、填空题 1.设有:int a[]={1,2,3,4,5,6},*p=a;则a[2]元素的地址可以表示为 、 、 。假设a数组的首地址为12A0(16进制),则a[1]的地址值为 ,a[4]的地址值为 。 2.设有:float b[5];假设b数组的首地址为A01F(16进制),则a[1]的地址值为 ,a[4]的地址值为 。 3.设有:int x[3][4],*p=x[0];则x[0][2]的地址可以表示为 , , 。x[2][3]的地址可以表示为 , , 。 4.设有int x[3][4],*p=x[1];则x[0][2]的地址可以表示为 , x[0]+2 , 。x[2][3]的地址可以表示为 , , 。 5.设有:int x[3][4],(*p)[4]=a;则x[0][2]的地址可以表示为 , (用p表示),x[2][3]的地址可以表示为 , (用p表示)。 6.设有:int x[3][4],(*p)[4]=a+1;则x[0][2]的地址可以表示为 , (用p表示),x[2][3]的地址可以表示为 , (用p表示)。 二、程序阅读题,写出程序的运行结果。 1.下面程序的运行结果是 #include "stdio. h" void fun(int *a,int *b) { int *t; t=a;a=b;b=t; } void main() { int x=1,y=2; fun(&x.,&y); printf("%d %d"x,y); } 2.下面程序的运行结果是 #include”stdio.h” int fun(int a, int b) { if(a>b) return (a+b); else return (a-b); } void main() { int x=3,y=4,z=5,r; r=fun(fun(x,y),3+z); printf(“%d”,r); } 3.下面程序的运行结果是 #include "stdio.h" int f(int x,int *y) { return (*y-x)*x; } void main() { int a=1,b=2,c=3,d; b=f(a,&b); d=f(c,&b); printf("%d",d); } 4.下面程序的运行结果是 #include "stdio.h" void func1(int i); void func2(int i); void func(char *p) { while(*p) { printf("%c",*p); p+=2; } } void main() { char st[]="friend"; func(st); } 5.下面程序的运行结果是 #include "stdio.h" void fun(int (*a)[4]) { printf("%d,%d\n",*(a[1]+2),*(*a+10));} void main() {int a[3][4]; int i,j; for(i=0;i<3;i++) for(j=0;j<4;j++) a[i][j]=i+j; fun(a); } 6.下面程序的运行结果是 #include "stdio.h" void fmin(int (*a)[4],int *p) { int i,j; *p=**a; for(i=0;i<3;i++) for(j=0;j<4;j++) if(*p>*(a[i]+j)) *p=*(a[i]+j); } void main() { int a[3][4]= {{12,23,15,25},{22,21,30,34},{30,31,28,27}}; int min; fmin(a,&min); printf("%d",min); } 7.下面程序的运行结果是 (递归调用) #include void fun(int a) { printf("%d",a%10); if(a/10) fun(a/10); } void main() { int a=1234; fun(a); } 8.下面程序的运行结果是 #include void main() { int a[10],a1[]={1,3,6,9,10},a2[]={2,4,7,8,15},i=0,j=0,k; for(k=0; k<6;k++) if(a1[i] #include void main() { char c='d',*p="you and me"; int n,k,j; n=strlen(p); for(k=0;k fun(int *a,int *n) { int i; *n=0; for(i=1;i<10;i++) if( ) *n=i; } void main() { int a[]={3,1,34,5,6,56,3,6,9,12},maxcol; ; printf("maxcol=%d\n",maxcol); } 2,以下程序的功能是:求100以内最大的一对孪生素数之和,孪生素数是指两个素数之差2。 #include "stdio.h" #include "math.h" int isPrime(int i) { int j,r =0,k=sqrt(i); for(j=2;j<=k;j++) if(i%j==0) break; if(j>k) ; else return 0; } void main() {int i,sum=0; for(i=100;i>=5;i--) { if( ) { sum=i+i-2; break; } } printf("%d",sum); } 3.下面程序打印杨辉三角形的前10行。输出结果如下图。 #include "stdio.h" void fum( ) { int i=2,j; p[0][0]=p[1][0]=p[1][1]=1; for(;i<10;i++) { p[i][0]=p[i][i]=1; for(j=1;ja[j+1]) {t=a[j];a[j]=a[j+1];a[j+1]=t;} } void main( ) { int a[7],i,j,t; for(i=1;i<7;i++) scanf("%d",a+i); sort(a); for(i=1;i<7;i++) printf("%d ",a[i]); } 5.求所有不超过200且大于10的数N的平方是有对称性的回文数。如N=11,11*11=121。 #include void main() { int m[16],n,i,t,count=0; long a,k; for(n=10;n<200;n++) { k=0; t=1; ; for(i=1;a!=0;i++) { m[i]=a%10; a=a/10; } for(;i>1;i--) { k+=m[i-1]*t; ; } if( ) printf("(%d)%4d,%4d\n",++count,n,n*n); } printf("\n"); } 10
点击显示更多内容>>
收藏
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号