使用C语言编写程序输入n和k两个正整数,将从 1 到 n 之间的所有正整数可以分为两类:A 类数可以被 k 整除(也就是说是 k的倍数),而 B 类数不能。请分别输出这两类数的平均数,精确到小数点后3位。写出代码并给出注释并对代码作出解释
时间: 2023-03-01 12:27:37 浏览: 198
以下是使用C语言编写的代码:
```
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n, k;
float sumA = 0, sumB = 0; // 用于存储A类数和B类数的总和
int countA = 0, countB = 0; // 用于存储A类数和B类数的数量
float avgA, avgB; // 用于存储A类数和B类数的平均数
// 输入n和k
printf("请输入两个正整数n和k:\n");
scanf("%d%d", &n, &k);
// 计算A类数和B类数的平均数
for (int i = 1; i <= n; i++)
{
if (i % k == 0) // 如果是k的倍数,属于A类数
{
sumA += i;
countA++;
}
else // 不是k的倍数,属于B类数
{
sumB += i;
countB++;
}
}
avgA = sumA / countA;
avgB = sumB / countB;
// 输出A类数和B类数的平均数,保留三位小数
printf("A类数的平均数为:%.3f\n", avgA);
printf("B类数的平均数为:%.3f\n", avgB);
return 0;
}
```
代码解释:
- 先定义了两个变量n和k,分别表示需要处理的数字范围和整除的数字。
- 然后定义了四个变量sumA、sumB、countA、countB,分别表示A类数的总和、B类数的总和、A类数的数量、B类数的数量。
- 再定义两个变量avgA、avgB,分别表示A类
阅读全文