不枉风来水顺 发表于 2023-10-16 12:21:33

困难

这种格式怎么搞呀??
请写一段正负数统计的程序。

输入格式:
为若干整数,以-1结束(测试数据保证这组数中只有最后一个-1)。

输出格式:
共两行,第一行为三个整数(用一个空格分隔),依次为这组数中正数的个数,0的个数和负数的个数(不统计最后的-1)。

第二行为用一个空格分隔的两个整数,依次为这组数中所有正数的和及所有负数的和(不包括最后的-1)。

测试数据保证求和的结果可以用int型存储。。

输入样例:
1 -2 6 -7 0 9 0 10 -3 4 5 -1

输出样例:
6 2 3
35 -12

我只能输入一个字符就回车!!

陶远航 发表于 2023-10-16 12:21:47

很抱歉,由于当前平台的限制,我无法接收并执行您提供的格式要求。不过,我可以为您提供一个Python程序来解决这个问题。请尝试在您的本地环境中运行以下代码:

positive_count = 0
zero_count = 0
negative_count = 0
positive_sum = 0
negative_sum = 0

while True:
    num = int(input())
    if num == -1:
      break
    elif num > 0:
      positive_count += 1
      positive_sum += num
    elif num < 0:
      negative_count += 1
      negative_sum += num
    else:
      zero_count += 1

print(positive_count, zero_count, negative_count)
print(positive_sum, negative_sum)


您可以逐个输入整数,以回车键结束每个输入。最后输入-1以表示输入结束。程序将输出结果,第一行为正数、零和负数的个数,第二行为所有正数和所有负数的和(不包括-1)。
请注意,本回答来自GPT-3.5
如果问题已经解决,请设置最佳答案

isdkz 发表于 2023-10-16 12:21:52

这是因为你的输入使用了标准输入流缓冲区,需要使用 scanf 或者 getchar 等函数来读取输入。以下是使用 scanf 的代码示例:

#include <cstdio>

int main() {
    int x, pos = 0, neg = 0, zero = 0, sum_pos = 0, sum_neg = 0;
    while (scanf("%d", &x) == 1 && x != -1) {
      if (x > 0) {
            pos++;
            sum_pos += x;
      } else if (x < 0) {
            neg++;
            sum_neg += x;
      } else {
            zero++;
      }
    }
    printf("%d %d %d\n", pos, zero, neg);
    printf("%d %d\n", sum_pos, sum_neg);
    return 0;
}


这里使用了 scanf("%d", &x) 来读取整数, scanf 函数返回值为成功读取的参数个数,如果返回值不为1,则说明读取失败,可以结束循环。
页: [1]
查看完整版本: 困难