以下程序的功能是计算十个数据的平均值。找出其中的错误并改正之。 #include <stdio.h> void main(void) { int i, sum; float avg; int sc[10], *p = sc; for (i=0, i<10, i++) { scanf("%d", p); p++; sum += *p; } avg = sum / 10; printf("avg=%f\n", avg); }
时间: 2024-02-14 22:10:20 浏览: 230
以下是改正后的程序:
```
#include <stdio.h>
void main(void) {
int i, sum = 0;
float avg;
int sc[10], *p = sc;
for (i = 0; i < 10; i++) {
scanf("%d", p);
sum += *p;
p++;
}
avg = (float) sum / 10;
printf("avg=%f\n", avg);
}
```
主要的错误是:
1. `sum` 没有初始化,导致计算平均值时会出现错误。
2. 在循环条件中使用了逗号运算符,应该使用分号。
3. 在计算平均值时,整数除法会导致结果被截断,应该将其中一个操作数强制转换为浮点数。
相关问题
完善下面求平均值的程序 #include <stdio.h>#include <math.h>#include <string.h> void input(Census data[]) { int i; for ( i = 0; i < SIZE; i++) { printf("请输入第 %d 次普查年份: ", i+1); scanf("%d", &data[i].year); printf("请输入第 %d 次普查全国人口数目: ", i+1); scanf("%f", &data[i].population); }} float average(Census data[]) { float sum = 0; int i; for ( i = 0; i < SIZE; i++) { sum += data[i].population; } return sum / SIZE;}
这段程序中,我们需要自己定义一个Census结构体,其中包含年份和人口数目两个成员变量,并且假设程序中已经定义了SIZE常量表示普查的次数。完整的程序如下:
#include <stdio.h>
#include <math.h>
#include <string.h>
#define SIZE 3
typedef struct {
int year;
float population;
} Census;
void input(Census data[]) {
int i;
for (i = 0; i < SIZE; i++) {
printf("请输入第 %d 次普查年份: ", i+1);
scanf("%d", &data[i].year);
printf("请输入第 %d 次普查全国人口数目: ", i+1);
scanf("%f", &data[i].population);
}
}
float average(Census data[]) {
float sum = 0;
int i;
for (i = 0; i < SIZE; i++) {
sum += data[i].population;
}
return sum / SIZE;
}
int main() {
Census data[SIZE];
input(data);
printf("全国人口平均数目为: %.2f\n", average(data));
return 0;
}
1.编一个程序,把一批非零整数中的偶数、奇数的平均值分别计算出来。用零作为终止标记。 2.读程序写结果:键盘输入 abcdef<CR> , #include <stdio.h> void fun( ) { char c ; if((c=getchar( ))!='\n') fun( ) ; putchar(c); } void main( ) { fun( ); }
1.以下是一个简单的实现,使用了两个计数器和两个累加器来计算偶数和奇数的平均值。程序使用了一个无限循环,只有当输入的数字为0时才会退出循环。
```c
#include <stdio.h>
int main() {
int num, even_count = 0, odd_count = 0;
float even_sum = 0, odd_sum = 0;
while (1) {
scanf("%d", &num);
if (num == 0) {
break;
}
if (num % 2 == 0) {
even_count++;
even_sum += num;
} else {
odd_count++;
odd_sum += num;
}
}
printf("Even average: %.2f\n", even_sum / even_count);
printf("Odd average: %.2f\n", odd_sum / odd_count);
return 0;
}
```
2.程序的作用是从键盘输入字符并将其输出,直到遇到换行符“\n”为止。由于函数fun()是递归调用,因此输入的字符会被依次压入栈中,直到遇到换行符后才开始逐个弹出栈中的字符并输出。
因此,当输入 abcdef 后,程序会先将字符“a”压入栈中,再将字符“b”压入栈中,以此类推,直到将字符“\n”(即换行符)压入栈中。此时,程序开始逐个弹出栈中的字符并输出,因此输出结果为:
```
fedcba
```
阅读全文