使用C语言编写程序输入n和k两个正整数,将从 1 到 n 之间的所有正整数可以分为两类:A 类数可以被 k 整除(也就是说是 k的倍数),而 B 类数不能。请分别输出这两类数的平均数,精确到小数点后3位。写出代码并给出注释并对代码作出解释
时间: 2023-03-01 14:36:13 浏览: 86
c代码-10.功能:用while语句计算1到n的倒数之和。
以下是C语言编写的程序:
```
#include <stdio.h>
int main() {
int n, k;
int countA = 0, countB = 0;
float sumA = 0, sumB = 0;
printf("请输入n和k:");
scanf("%d%d", &n, &k);
for (int i = 1; i <= n; i++) {
if (i % k == 0) {
countA++;
sumA += i;
} else {
countB++;
sumB += i;
}
}
printf("A类数的平均数为:%.3f\n", sumA / countA);
printf("B类数的平均数为:%.3f\n", sumB / countB);
return 0;
}
```
注释:
1. `#include <stdio.h>`:头文件,包含了输入输出函数的声明。
2. `int main()`:主函数。
3. `int n, k`:输入的两个正整数。
4. `int countA = 0, countB = 0`:记录A类数和B类数的个数。
5. `float sumA = 0, sumB = 0`:记录A类数和B类数的总和。
6. `printf("请输入n和k:");`:提示用户输入n和k。
7. `scanf("%d%d", &n, &k);`:读入n和k的值。
8. `for (int i = 1; i <= n; i++)`:循环,从1到n遍历所有正整数。
9. `if (i % k == 0)`:判断当前数是否是k的倍数,是则属于A类数。
10. `countA++`:A类数的个数加1。
11. `sumA += i`:A类数的总和加上当前数。
12. `else`:不是k的倍数,属于B类数。
13. `countB++`:B类数的个数加1。
14. `sumB += i`
阅读全文