你的i++只有在i是奇数的时候才能执行,如果i是偶数就死循环了;所以把i++写在if外面或者for语句里;
该回答引用chatgpt:
#include <stdio.h>
int main() {
int sum = 0;
int count = 0;
for (int i = 1; i <= 100; i += 2) {
sum += i;
count++;
}
float average = (float) sum / count;
printf("1到100中的奇数的平均值为 %.2f", average);
return 0;
}
修改如下,供参考:
Markdown将文本转换为 HTML。
我建议先检查你计算平均值的代码是否正确,可以将代码部分贴出来供我参考。如果代码没有问题,可能是你的计算逻辑有误,需要重新审视一下代码并进行排查。
此外,参考资料中的代码片段提供了一个实现数组初始化和排序的方法,但并未提及如何计算平均值。如果需要计算奇数的平均值,可以在数组初始化时只生成奇数,然后求平均值即可。具体实现代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#define RANDSIZE 100
#define ARSIZE 50 // 只需要奇数,大小缩小一半
void Init_Ar(int* br, int n)
{
assert(br != NULL);
int i = 0;
while (i < n)
{
int tmp = rand() % RANDSIZE + 1;
if (tmp % 2 == 1 && i == 0){
br[i] = tmp;
++i;
}
else if (tmp % 2 == 1 && i > 0 && tmp != br[i - 1]) // 保证无重复
{
br[i] = tmp;
++i;
}
}
}
float GetMean(int* br, int n)
{
float sum = 0;
for(int i = 0; i < n; i++){
sum += br[i];
}
return sum / n;
}
int main()
{
const int n = ARSIZE;
int ar[n] = {};
Init_Ar(ar, n);
printf("数组:\n");
for(int i=0; i<n; i++){
printf("%d ", ar[i]);
}
printf("\n");
printf("奇数平均值: %.2f\n", GetMean(ar, n));
return 0;
}