反向显示输出的程序流程

时间:2014-01-20 02:34:35

标签: c string loops

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

  1. 当我尝试使用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;
    

    }

1 个答案:

答案 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] = 2i等于0)然后i增加到1. 然后它会生成c = i - 1c = 1 - 1c = 0 因为in >= 0(2)而没有退出。

当您输入-4;
我使input[i] = -4i等于1,c等于0)然后i增加到2 然后它会生成c = i - 1c = 2 - 1c = 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)