1.我有一个用 C 语言编写的示例程序,它接受用户的正数输入,并在用户输入负数时停止。它最多接受十个输入。然后以相反的顺序显示结果。我想知道这是如何发生的,因为当我尝试映射它时 c 的值为负数,第二个循环仅在满足条件 (c>=0) 时才起作用。
例如,如果我只输入一个正数,接下来我将输入一个负数。
input[0]=2
i=0+1
c=1-2
input[1]=-4
i=1+1
c=2-2
num=2*input[-1]?
<小时/>
#include<stdio.h>
int main()
{
float in;
float input[10];
int i=0;
int c;
printf("Please input a number:");
do{ scanf("%f", &in);
input[i] = in;
i=i+1;
if(i>10)
break;
c=i-1;
}while(in>=0);
do{ float num;
num= 2*input[c];
printf("Input = %.2f. Num= %.2f.\n", input[c], num);
c=c-1;
}while(c>=0);
return 0;
}
使用 do-while 代码的输入:
2
3
-4
输出:
输入:3.00 输出:6.00
输入:2.00 输出:4.00
当我尝试使用 for 循环实现它时,它在 gcc 中编译,但当我尝试执行时,它显示
段错误(核心转储)
。#include<stdio.h>
int main() { 漂浮; 浮点输入[10]; int i,c;
printf("Please input a number:"); for(i=0; in>=0; ){ scanf("%f", &in); input[i] = in; i=i+1; if(i==10) break; c=i-2; } for(; c>=0;){ float num; num= 2*input[c]; printf("Input = %.2f. Num= %.2f.\n", input[c], num); c=c-1; } return 0;
}
最佳答案
I'm wondering how does that happen because when I try to map it the value of c is negative
当我尝试用 2
映射它时,我不认为 c 会变成负值。 & -4
作为输入我得到..
当您输入2
时;
它使input[i] = 2
( i
等于 0)然后 i
增加到 1。
然后它使 c = i - 1
或c = 1 - 1
或c = 0
.
不会退出,因为 in >= 0
(2).
当您输入 -4
;
我做input[i] = -4
( i
等于 1,c 等于 0) 然后在 i 增加到 2 后
然后它使 c = i - 1
或c = 2 - 1
或c = 1
.
这次退出是因为in < 0
& 不是 in >= 0
.
do{ scanf("%f", &in);
input[i] = in;
i=i+1;
if(i>10)
break;
c=i-1;
} while (in >=0)
关于c - 反向显示输出的程序流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21225391/