C 程序在用户输入后结束

C 程序在用户输入后结束,c,input,user-input,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)

我编写的程序在用户输入后停止,我不知道为什么会发生这种情况。用户应该给出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--;
      }
 } 
#包括
#包括
int main(int argc,char*argv[]){
int T,i;
int x[5];
scanf(“%d”、&T);
而(T>0){
对于(i=0;i而言,问题在于:

int tax[size_tax];

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

如果您测试的输入是123456,那么这是完全正常的。只需在最后一个else If之后插入一个else。
此输入似乎无法验证任何其他条件。

哪个用户输入?在while循环之前?您有两个scanf()调用。是哪一个导致了问题?
int-tax[size\u-tax]
无效。您不能像那样初始化数组。size\u-tax在运行时动态确定,在编译时不可用。您需要malloc()首先是一些内存…@MarcB:C具有可变长度数组。如果使用调试器,程序工作正常。您的输入是否与其中一个print语句匹配?如果您全部执行6次,它将打印出1。
for(i = 0; i < size_tax; i++) { // Less than, not less than or equal to
     ...
}