我写的程序在用户输入后停止,我不知道为什么会这样。用户应该给出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--;
}
}
答案 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。 看来这个输入不会验证任何其他条件。