本文由qwe3605552贡献
doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。
ty 编程练习及答案
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+3 +……+3 的值并输出,假定分别用 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); } 假定分别用 i 和 s 作为取偶数值和累 3. 求满足不等式 2 +4 +……+n <1000 的最大 n 值, 加值的变量,并限定使用 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); }
2 2 2 2 10
4. 已知 y = ?
? a2 + x2 ?3ax 2 + 4ax ? 1 ?
( x ≤ 0) ( x > 0)
,求出并显示当 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 "stdio.h" void main() { int c1=0,c2=0,c3=0; int x; scanf("\n%d",&x); for (;x>0;) { if (x<=12) c1++; else if (x<=15) c2++; else c3++; scanf("\n%d",&x); } printf("c1=%d,c2=%d,c3=%d\n",c1,c2,c3); } 8. 编写一个函数,分别求出由指针 a 所指向的字符串中包含的每种十进制数字出现的 次数,把统计结果保存在数组 b 的相应元素中。 #include "stdio.h" void total(char *a,int n,int *b) { int i; for (i=0;i<n;i++) switch (a[i]) { case '0':b[0]++;break; case '1':b[1]++;break; case '2':b[2]++;break; case '3':b[3]++;break; case '4':b[4]++;break; case '5':b[5]++;break; case '6':b[6]++;break; case '7':b[7]++;break; case '8':b[8]++;break; case '9':b[9]++;break; } }
void main() { char a[20]; static int b[10]; int i; scanf("\n%s",a); total(a,20,b); for (i=0;i<10;i++) printf("b[%d]=%d\n",i,b[i]); } 9. 按照下面函数原型语句编写一个函数,返回二维数组 a[m][n]中所有元素的平均值, 假定采用变量 v 存放平均值。 #include "stdio.h" float avg(int a[][4],int m,int n) { int i,j; float v=0.; for (i=0;i<m;i++) for (j=0;j<n;j++) v+=a[i][j]; return v/(m*n); } void main() { int a[3][4]; int i,j; for (i=0;i<3;i++) for (j=0;j<4;j++) scanf("\n%d",&a[i][j]); printf("sum=%f\n",avg(a,3,4)); } 10. 按照下面函数原型语句编写一个递归函数计算出数组 a 中 n 个元素的平方和并返 回。 int f(int a[],int n); 法 1:循环 #include "stdio.h" int f(int a[],int n)