发布时间 : 星期一 文章浙工大C语言复习题与参考答案更新完毕开始阅读b1eca04b76eeaeaad1f330ac
12 C程序设计习题集
20. #include \
int binary(int x,int a[],int n) 输出结果: { int low=0,high=n-1,mid; while(low<=high) { mid=(low+high)/2;
if(x>a[mid]) high=mid-1; else if(x return -1; } void main( ) { static int a[]={4,0,2,3,1}; int i,t,j; for(i=1;i<5;i++) { t=a[i]; j=i-1; while(j>=0 && t>a[j]) { a[j+1]=a[j]; j--; } a[j+1]=t; } printf (\ } 21. #include #include { double f(double,int); printf(\ } double f(double x,int n) { double t; if(n==1) t=x; else { if(n/2*2==n)t=x*f(x,n/2); else t=x*pow(f(x,n/2),2.0); } return t; } 22. #include double x,u,v 输出结果: double t(double a,double(*f)(double)) { return(*f)(a*a); } double f(double x) { return 2.0*x; } double g(double x) { return 2.0+x; } void main() C程序设计习题集 13 { x=4.0;u=t(x,f);v=t(x,g); printf(\ } 23. #include { static struct s1{ char c[4],*s; }; s1={\ static struct s2{char *cp; struct s1 ss1;} s2={\ printf(\输出结果: printf(\ printf(\ printf (\ } 24. #include struct s1{ char *s; int i; struct s1 *s1p; }; void main() { static s1 a[]={{\ int i; for(i=0;i<2;i++) { 输出结果: printf(\ printf(\ } } 14 C程序设计习题集 4 程序填空题 1. 输入2个整数,输出它们的最小公倍数和最大公约数。 #include { int m,n,gbs,gys; scanf( ⑴ ); for(gbs=m; ⑵ ; gbs=gbs+m); gys= ⑶ ⑷ } 2. 输入N个实数,输出其中的最大值、最小值。 #include { float no1,nmax,nmin; ⑴ scanf(\ nmax=no1; ⑵ for(i=2;i<=n;i++) { scanf(\⑶ ); if(nox>nmax) nmax=nox; ⑷ } printf(\ } 3. 输入20个数,输出它们的平均值,输出与平均值之差的绝对值为最小的数组元素。 #include { float a[20],pjz=0,s,t; int i,k; ⑵ for(i=0;i<20;i++) pjz+=a[i]; ⑶ s=fabs(a[0]-pjz); for(i=1;i<20;i++) if(fabs(a[i]-pjz) 4. 输入若干字符,分别统计数字字符个数、英文字母个数,输入换行符时输出统计结果。 #include C程序设计习题集 15 { char ch; ⑴ while(( ⑵ )!='\\n') { if(ch>='0'&&ch<='9') s1++; if(ch>='a'&&ch<='z' ⑶ ) s2++; } ⑷ } 5. 输入m,求n使 n!<=m<=(n+1)!,例如输入726,应输出n=6。 ⑴ void main() { int ⑵ ; scanf( ⑶ ); for(n=2;jc<=m;n++) jc=jc*n; printf(\⑷ ); } 6. 下列程序计算并输出方程 X+Y+Z=1989 的所有整数解。 #include { ⑴ for(i1=-45;i1<=45;i1++) for( ⑵ ) for(i3=-45;i3<=45;i3++) if( ⑶ ) printf( ⑷ ,i1,i2,i3); } 7. 下列程序求n(n的值由运行时确定)个正整数的最小公倍数。 #include { int *p,i,n,gbs; ⑴ p= ⑵ ; for(i=0;i l1: for(i=1;i 8. 调用find函数求实参数组中最大值,再调用find函数求实参数组中最小值。 #include { float s,a[7]={2,6,3,8,3,12,9},find(float*,int,int); s=find(a,7,1); ⑴ 2 2 2