用c语言写读一组实数,遇零终止,打印其中正、负数的个数及各自的总和。输入一行,若干个实数,实数个数不超过9000个,实数范围为-32768~32767;遇到0表示输入数据结束,后面即使有数也忽略。输出包含两行; 第一行输出正数个数和所有正数的和(保留2位小数); 第二行输出负数个数和所有负数的和(保留2位小数)
时间: 2024-02-25 12:58:50 浏览: 34
好的,以下是用 C 语言编写的程序:
```c
#include <stdio.h>
int main() {
int positive_count = 0;
int negative_count = 0;
float positive_sum = 0;
float negative_sum = 0;
while (1) {
float num;
if (scanf("%f", &num) != 1 || num == 0) {
break;
}
if (num > 0) {
positive_count++;
positive_sum += num;
} else {
negative_count++;
negative_sum += num;
}
}
printf("%d %.2f\n", positive_count, positive_sum);
printf("%d %.2f\n", negative_count, negative_sum);
return 0;
}
```
你可以将此代码保存为一个 .c 文件,然后在命令行中使用 C 编译器编译并运行。程序会等待你输入一行实数,以 0 结束。输入结束后,程序会输出正数个数和所有正数的和,以及负数个数和所有负数的和。
相关问题
读一组实数,遇零终止,打印其中正、负数的个数及各自的总和。用c语言编程
可以使用一个循环来读取实数,当读取到0时跳出循环,同时统计正数和负数的个数以及它们的总和。
下面是一个可能的代码实现:
```c
#include <stdio.h>
int main() {
double num;
int pos_count = 0, neg_count = 0;
double pos_sum = 0, neg_sum = 0;
while (1) {
printf("请输入一个实数:");
scanf("%lf", &num);
if (num == 0) {
break;
}
if (num > 0) {
pos_count++;
pos_sum += num;
} else {
neg_count++;
neg_sum += num;
}
}
printf("正数个数:%d,总和:%g\n", pos_count, pos_sum);
printf("负数个数:%d,总和:%g\n", neg_count, neg_sum);
return 0;
}
```
在上面的代码中,我们使用了一个 `while` 循环来读取实数,当读取到0时跳出循环。在每次读取实数时,我们判断它是正数还是负数,并分别统计它们的个数和总和。最后输出正数和负数的个数以及它们的总和。注意,在输出总和时,我们使用了 `%g` 格式化符号,它可以根据数值的大小决定输出的格式,这样可以避免在输出较大的数时出现科学计数法的问题。
用c语言实现读一组实数,遇到零终止,打印其中正负数的个数级各自的总和
好的,下面是使用 C 语言实现该功能的示例代码:
```c
#include <stdio.h>
int main() {
int positiveCount = 0, negativeCount = 0;
double positiveSum = 0, negativeSum = 0;
double num;
printf("请输入一组实数,以 0 结束:\n");
scanf("%lf", &num);
while (num != 0) {
if (num > 0) {
positiveCount++;
positiveSum += num;
}
else {
negativeCount++;
negativeSum += num;
}
scanf("%lf", &num);
}
printf("正数个数:%d,总和:%lf\n", positiveCount, positiveSum);
printf("负数个数:%d,总和:%lf\n", negativeCount, negativeSum);
return 0;
}
```
以上代码中,我们同样使用了两对变量来分别保存正数和负数的个数和总和。在读取实数时,如果该数为正,则将正数个数加一并将该数加到正数总和中;否则将负数个数加一并将该数加到负数总和中。最后使用 `printf` 输出正负数的个数和总和即可。
需要注意的是,在 C 语言中,读取实数需要使用 `%lf` 格式化字符,而不是 `%f`。