24.四舍五入:编程实现将浮点数“123.456789”分别四舍五入保留 1 位小数、
2 位小数和 3 位小数。
include <stdio.h>
void main() {
float a = 123.456789;
float f1 = (int) ((a * 10) + 0.5) / 10.0; //保留 1 位小数
float f2 = (int) ((a * 100) + 0.5) / 100.0; //保留 2 位小数
float f3 = (int) ((a * 1000) + 0.5) / 1000.0;//保留 3 位小数
printf("f1 = %0.1f\n", f1);
printf("f2 = %0.2f\n", f2);
printf("f3 = %0.3f\n", f3);
}
25.节目调查:调查电视节目受欢迎程度。某电视台要调查观众对该台 8 个栏目
(设相应栏目编号为 1-8)的受欢迎程度,共调查了 1000 位观众。现要求编写
程序,输入每一位观众的投票情况(每位观众只能选择一个最喜欢的栏目投票),
统计输出各栏目的得票情况。
include <stdio.h>
void main() {
int i, n, a[9] = {0};
for (i = 1; i <= 1000; i++) {
scanf("%d", &n);
a[n]++;
}
for (i = 1; i <= 8; i++) {
printf("栏目%d 得票=%d\n", i, a[i]);
}
}
26.由用户输入一个正整数 n,分析出该正整数的每一位,然后将各位数字从大
到小重新排序后得到正整数 m,输出 m 和 n 的平均值。
(1)编写输出正整数 n 和 m 的程序。
(2)给出调试过的输出 m 和 n 的平均值的源程序。
include <stdio.h>
include <stdlib.h>
/**
- 选择排序法
- @param a 排序数组
- @param len 元素个数
*/
void selction_sort(int a[], int len) {
int i, j, t;
for (i = 0; i < len - 1; i++) {
for (j = i + 1; j < len; j++) {
if (a[i] < a[j]) {
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
}
void main() {
int m, n, t, i, c, *p;
/输入数字 n/
scanf("%d", &n);
/分析位数 c/
t = n;
c = 0;
while (t > 0) {
c++;
t /= 10;
}
/分解数字 n/
p = (int ) malloc(sizeof(int) c);
for (t = n, i = 0; i < c; i++) {
p[i] = t % 10;
t /= 10;
}
/排序数组 p/
selction_sort(p, c);
/数组还原 m/
for (m = 0, i = 0; i < c; i++) {
m = m * 10 + p[i];
}
/输出结果/
printf("n = %d\n", n);
printf("m = %d\n", m);
printf("(m + n) / 2 = %.2lf", ((m + n) / 2.0));
}