总是在输入负数的时候直接输出了该负数
#include<stdio.h>
int main()
{
int x,i;
int sum=0;
for(i=0;i<5;i++){
scanf("%d",&x);
if(x<0){
printf("%d\n",x);
sum+=x;
}
}
printf("所有负数之和为:%d",sum);
return 0;
}
输入数时用空格隔开,别用enter隔开就好了。点enter时会执行for循环代码,就直接输出了,然后执行下次循环scanf再停止等待输入。如果想用enter,可以把for循环里面的输出换成保存到一个数组中,最后再用一个for循环遍历输出数组。
到底是哪里错了,请大神们帮帮忙😭
当你输入负数的时候直接进入if条件,就执行printf("%d\n",x);你这不是就输出负数了吗
那你为什么要把printf写进scanf同一个循环里面啊
你应该先循环scanf,循环结束了再循环一次,开始输出啊
定义一个数组, 来储存负数; 如果不是负数, 就不储存:
#include <stdio.h>
#define NUM 5
int main(int argc, char** argv) {
int* ar = new int[NUM];
int n = 0;
int sum = 0;
int i = 0;
int j = -1;
printf("Input 5 integers divided by space:\n");
while (i < NUM) {
if (1 > scanf("%d", &n)) {
// Skip wrong input such as "3.2" or "arg";
scanf("%*s");
continue;
}
if (n < 0) {
ar[++j] = n;
sum += n;
}
++i;
}
printf("Negative number(s):\n");
if (0 == ++j) {
printf("None");
}
for (i = 0; i < j; ++i) {
printf("%d,", ar[i]);
}
delete[] ar;
printf("\nSum= %d\n", sum);
return scanf("%*s");
}