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中编译,但是当我尝试执行它时显示segmentation fault (core dumped)
。
#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;
}
答案 0 :(得分:0)
I'm wondering how does that happen because when I try to map it the value of c is negative
当我尝试使用2
&amp;来映射时,我认为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
&amp;不是in >= 0
。
do{ scanf("%f", &in);
input[i] = in;
i=i+1;
if(i>10)
break;
c=i-1;
} while (in >=0)