编程练习及答案 1. 编一程序求出满足不等式1+1/2+1/3+...+1/n≥5的最小 n值。 #include "stdio.h" void main() { int n=1; float s=0; for (;s<5;n++) s+=(float) 1/n; printf("\nn=%d,s=%f",n,s); } 2. 计算 1+3+32+...+310的值并输出,假定分别用 i,p,s作为循环变量、累乘变量和累加变量的标识符。 #include "stdio.h" void main() { int i=1,p=1,s=1; for (;i<=10;i++) { p=p*3; s+=p; } printf("\n1+3+3*3+ =%d",s); } 3. 求满足不等式22+42+...+n2<1000的最大 n值,假定分别用 i和 s作为取偶数值和累加值的变量,并限定使用 do循环编程。 #include "stdio.h" void main() { int i=2,s=0; do { s+=i*i; i+=2; } while(s<10); i-=2; s-=i*i; printf("\n2*2+4*4+6*6+„„+%d*%d=%d",i,i,s); } 4. 已知 )0( 143)0( 222xaxaxxxay,求出并显示当x分别取-3.8, 6.4, 2.3, -4.2,8.9, 3.5, -5.0, 4.5时所对应的y值,要求把a定义为常量,其值设定为10.2,x的每个值由键盘输入,并假定用-100作为终止标志,求平方根函数为sqrt(x)。 #include "stdio.h" #include "math.h" #define a 10.2 void main() { float x,y; scanf("%f",&x); while((int) x!=-100) { if (x>0) y=3*a*x*x+4*a*x-1; else y=sqrt(a*a+x*x); printf("x=%f,y=%f\n",x,y); scanf("%f",&x); } } 5. 求出从键盘上输入的10个整数中的最大值,要求输入变量用x表示,存储最大值的变量用max表示。 #include "stdio.h" void main() { int i,x,max; scanf("\n%d",&x); max=x; for (i=1;i<10;i++) { scanf("\n%d",&x); if (x>max) max=x; } printf("max=%d\n",max); } 6. 已知6≤a≤30,15≤b≤36,求满足不定方程 2a+5b=126的全部整数组解。如(13, 20)就是一个整数组解,并以所给的样式输出每个解。 #include "stdio.h" void main() { int a,b; for (a=6;a<31;a++) for (b=15;b<37;b++) if (2*a+5*b==126) printf("a=%d,b=%d\n",a,b); } 7. 某班级学生进行百米跑测试,规定成绩在12秒以内(含12秒)为优秀,在12秒以上至15秒为达标,在15秒以上为不达标,编一程序,从键盘上输入每个人的成绩,以x作为输入变量,并以小于0的任何数作为终止标志,分别用变量c1,c2和c3统计出成绩为优秀、达标和不达标的人数。 #include "stdi...