1.
在选秀节目中有 10
个评委为参赛选手打分,分数为 1
到 100
分,选手最后的得分为去掉一个最高分和去掉一个最低分后其余8
个分数的平均分,编写程序,输入 10
个分数,输出选手的最后得分(保留 2
位小数)。
实现思路
- 在for循环中使用if语句
- 使用输入输出语句
-
#include <stdio.h> int main() { float score, max, min, s = 0; int i; scanf("%f", &score); max = min = score;/*这儿就相当于先输入了一个评委的分数,将这个分数先定为最大数和最小数*/ s+=score; for (i = 2; i <= 10; i++) {/*for循环,依次输入分数*/ scanf("%f", &score); if (max < score)/*如果再次输入的这个数大于开头输入的那个数,这个数就被赋值给最大值*/ max = score; if (min > score)/*如果再次输入的这个数小于开头输入的那个数,这个数就被赋值给最小值*/ min = score; s = s + score;/*十个数之和*/ } s = (s - max - min) / 8; printf("%5.2f", s); }
2.求
(1 + 2 + ··· + k) + (1*1 + 2*2 + ··· + k*k) + (1/1 + 1/2 + ··· + 1/k)
的值。其中 k 由键盘输入。 -
#include <stdio.h> int main() { int a, i = 1, sum= 0,sum1=0; double sum2 = 0; scanf("%d", &a); for (i = 1;i <= a;i++) { sum = sum + i; } for (i = 1;i <= a;i++) { sum1 = sum1 + i * i; } for (i = 1;i <= a;i++) { sum2 = sum2 + 1 /(double)i; } printf("%f", sum + sum1 + sum2); }
3.输入两个正整数 m 和 n,求其最大公约数和最小公倍数。
-
#include <stdio.h> // 求最大公约数 int gcd(int m, int n) { int temp; while (n != 0) { temp = m % n; m = n; n = temp; } return m; } // 求最小公倍数 int lcm(int m, int n) { return m * n / gcd(m, n); } int main() { int m, n; printf("请输入两个正整数m和n:"); scanf("%d %d", &m, &n); printf("它们的最大公约数为:%d\n", gcd(m, n)); printf("它们的最小公倍数为:%d\n", lcm(m, n)); return 0; }
4.
本题给出的程序是用
π/4 ≈ 1 - 1/3 + 1/5 - 1/7 + ···
公式求 π 的近似值,直到发现某一项的绝对值小于 10-6 为止。请在本题给出程序的基础上,统计出当
fabs(t) >= pow(10, -6)
和fabs(t) >= pow(10, -8)
时,执行循环体的次数。输出说明
π 的近似值 统计 fabs(t) 大于等于 10 的 -6 次方执行循环的次数 统计 fabs(t) 大于等于 10 的 -8 次方执行循环的次数
输出示例
#include <stdio.h> #include <math.h> int main() { int sign = 1, i = 0, j = 0; double pi = 0.0, n = 1.0, term = 1.0,pi1 = 0.0, n1 = 1.0, term1 = 1.0; while (fabs(term) >= pow(10, -6)) { pi = pi + term; n = n + 2; sign = -sign; term = sign / n; i= i + 1; } pi = pi * 4; printf("pi = %10.8f\n", pi); printf("le-6:%d\n", i); while (fabs(term1) >= pow(10, -8)) { pi1 = pi1 + term1; n1 = n1 + 2; sign = -sign; term1 = sign / n1; j= j + 1; } printf("le-8:%d", j); return 0; }
5. 编写程序,从键盘输入一个一元二次方程 ax²+bx+c=0 的三个参数 a、b、c(均为整数),求此方程的实根。如果方程有实根,则输出实根(精确到小数点后 2 位,较大实根在前),如果没有实根,则输出方程没有实根
。
#include <math.h>
#include <stdio.h>
int main() {
float a, b, c, x1, x2, m;
scanf("%f %f %f", &a, &b, &c);
m = sqrt(b * b - 4 * a * c);
if ((b * b - 4 * a * c) > 0) {
x1 = (-b - m) / (2 * a);
x2 = (-b + m) / (2 * a);
printf("%.2f %.2f", x2, x1);
} else if ((b * b - 4 * a * c) == 0) {
x1 = x2 = (-b - m) / (2 * a);
printf("%.2f %.2f", x2, x1);
} else
printf("方程没有实根");
return 0;
}
6.
请输入一些整数(使用空格分隔数据),计算并输出其中所有偶数的和,并统计出累加的项数。
注:使用 do-while 语句完成本题;输入奇数时不累加个数;输入 0 时表示输入结束,且输入 0 时不累加偶数个数。
#include <stdio.h&g