我正在尝试编写一个程序来计算给定字符串中整数的平均值,并将它们相加直到遇到 -1
,示例输入为 1 2 3 4 5 -1
.
如何从数组中删除空格,以便我的求和计算有效?
#include <stdio.h>
#include <stdlib.h>
#include "source.h"
#include <string.h>
#include <ctype.h>
#define MAX_LEN 1000
void calculate_average() {
int test, size, sum, i, j, k, temp;
int grade;
char input[MAX_LEN];
char formattedInput[MAX_LEN];
double avg;
size = 0;
avg = 0.0;
test = 1;
k = 0;
sum = 0;
fgets(input, 10, stdin);
for (j = 0; j < strlen(input); ++j) {
if (input[j] = ' ') {
;
} else {
temp = input[j];
formattedInput[k] = temp;
++k;
}
}
for (i = 0; atoi(input[i]) != -1; ++i) {
if (atoi(formattedInput[i]) == -1) {
test = -1;
avg = sum / size;
} else {
++size;
sum = sum + atoi(formattedInput[i]);
}
}
printf("%f\n", avg);
}
最佳答案
我会推荐使用 strtod
这样你就可以处理你的输入字符串而不需要预处理,
作为原始代码中的旁注 sum/size
将转换为 int
并且您将失去精度,因此您需要先进行转换
我按如下方式更改您的功能
#define MAX_LEN 1000
void calculate_average(){
int sum = 0;
int count = 0;
char input[MAX_LEN];
fgets(input, 10, stdin);
char *start, *end;
start = input;
while(1){
int temp = strtod(start, &end);
if(temp == -1)
break;
if(*end == 0)
break;
start = end;
sum += temp;
count++;
}
double avg = (double)sum / count;
printf("%f\n", avg);
}
关于c - 从 fgets 字符数组中删除空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54280073/