C语言练习题3
C语练习三一、填空题1.设有:int a=1,2,3,4,5,6,*p=a;则a2元素的地址可以表示为 、 、 。假设a数组的首地址为12A0(16进制),则a1的地址值为 ,a4的地址值为 。2设有:float b5;假设b数组的首地址为A01F(16进制),则a1的地址值为 ,a4的地址值为 。3.设有:int x34,*p=x0;则x02的地址可以表示为 , , 。x23的地址可以表示为 , , 。4.设有int x34,*p=x1;则x02的地址可以表示为 , x0+2 , 。x23的地址可以表示为 , , 。5.设有:int x34,(*p)4=a;则x02的地址可以表示为 , (用p表示),x23的地址可以表示为 , (用p表示)。6.设有:int x34,(*p)4=a+1;则x02的地址可以表示为 , (用p表示),x23的地址可以表示为 , (用p表示)。二、程序阅读题,写出程序的运行结果。1.下面程序的运行结果是 #include stdio. hvoid 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 %dx,y);2.下面程序的运行结果是 #include”stdio.h” int fun(int a, int b) if(ab) 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.hvoid 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.hvoid fun(int (*a)4) printf(%d,%dn,*(a1+2),*(*a+10);void main()int a34; int i,j;for(i=0;i3;i+)for(j=0;j4;j+) aij=i+j;fun(a);6.下面程序的运行结果是 #include stdio.hvoid fmin(int (*a)4,int *p) int i,j; *p=*a; for(i=0;i3;i+) for(j=0;j*(ai+j) *p=*(ai+j);void main() int a34= 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 a10,a1=1,3,6,9,10,a2=2,4,7,8,15,i=0,j=0,k; for(k=0; k6;k+) if(a1ia2j) ak=a1i+; else ak=a2j+; for(k=0;k6;k+) printf(%d,ak);9.下面程序的运行结果是 #include #include void main() char c=d,*p=you and me;int n,k,j;n=strlen(p);for(k=0;kn;k+)if(*(p+k)=c) j=k;break;else j=-1;printf(%d,j);三、程序填空1.以下程序查找a数组中最大值所在的下标.#include fun(int *a,int *n) int i; *n=0; for(i=1;i10;i+) if( ) *n=i; void main() int a=3,1,34,5,6,56,3,6,9,12,maxcol; ; printf(maxcol=%dn,maxcol);2,以下程序的功能是:求100以内最大的一对孪生素数之和,孪生素数是指两个素数之差2。#include stdio.h#include math.hint isPrime(int i) int j,r =0,k=sqrt(i); for(j=2;jk) ; 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; p00=p10=p11=1; for(;i10;i+) pi0=pii=1; for(j=1;ji;j+) ; void main()int i,j,a1010=0; ; for(i=0;i10;i+) for(j=0;j=i;j+) printf(%d ,aij); printf(n); 4.下面程序的功能是对数组中的6个数按升序排列。#include stdio.hvoid sort( ) int i,j,t; for(i=1;iaj+1) t=aj;aj=aj+1;aj+1=t;void main( ) int a7,i,j,t; for(i=1;i7;i+) scanf(%d,a+i); sort(a); for(i=1;i7;i+) printf(%d ,ai);5.求所有不超过200且大于10的数N的平方是有对称性的回文数。如N=11,11*11=121。#include void main() int m16,n,i,t,count=0; long a,k; for(n=10;n1;i-) k+=mi-1*t; ;if( ) printf(%d)%4d,%4dn,+count,n,n*n); printf(n);10
收藏