用户输入后程序结束

时间:2014-02-15 23:10:25

标签: c input user-input

我写的程序在用户输入后停止,我不知道为什么会这样。用户应该给出6个整数,并且在该程序之后应该对它进行一些数学计算,而现在情况并非如此,因为在插入整数后它会结束,没有错误。

 #include <stdlib.h>
 #include <stdio.h>


 int main(int argc, char *argv[]) {

    int T,i;
    int x[5];

     scanf("%d", &T);
     while(T > 0) {
         for(i = 0; i <= 4; i++) {
             scanf("%d", &x[i]);
          }
          int size_tax = x[0] + x[1] + x[2];
          int tax[size_tax];

          for(i = 0; i <= size_tax; i++) {
              if(i == 0) {
                   tax[i] = x[0];
                   if(x[4] == 1) {
                       printf("%d", tax[0]);
                       break;
                    } 
              } else if(i > 0 && i <= x[1] - 1) {
                  tax[i] = tax[i-1] + 1;
                  if(x[4] == i + 1) {
                      printf("%d", tax[i]);
                      break;
                   }
              } else if(i > x[1] - 1 && i <= x[2] - 1) {
                  tax[i] = tax[i-1] * 2;
                      if(x[4] == i + 1) {
                      printf("%d", tax[i]);
                      break;
                    }
              }
          }

         if(x[4] > x[0] + x[1] + x[2]) {
              int result = x[3] - 1;
              for(i = x[3]; i <= x[4] - 1; i++) {
                  result = result * x[i];

              }

              printf("%d", result);
        }

         T--;
      }
 } 

2 个答案:

答案 0 :(得分:1)

问题在于:

int tax[size_tax];

for(i = 0; i <= size_tax; i++) {
     ...
}

tax的声明大小为size_tax,因此循环必须达到size_tax-1,因此它应该是

for(i = 0; i < size_tax; i++) { // Less than, not less than or equal to
     ...
}

答案 1 :(得分:0)

如果输入您的测试是1 2 3 4 5 6那么这是完全正常的。只需在最后一个if之后插入else。 看来这个输入不会验证任何其他条件。