本人使用codeblocks进行C语言编程,程序运行没有编译错误,但是中间的赋值出现了意料之外的情况。
对于zj[c].bq明明只进行了赋值运算,且只有赋值1和-1两种情况,然而测试用例中 zj[7].bq=10。(其他的都是正常的)
以下是部分代码(错误发生在其中)
#include<stdio.h>
struct node{
int n;
int bq;
};
signed main(){
int t;
scanf("%d",&t);
while(t--){
int n,m,k;
scanf("%d %d %d",&n,&m,&k);
int a[n];int b[m];
struct node zj[k];int c=0;
for(int i=0;i<n;++i){
scanf("%d",&a[i]);
if(a[i]<=k){
zj[c].n=a[i];zj[c].bq=-1;c++;
}
}
for(int i=0;i<m;i++){
scanf("%d",&b[i]);
if(b[i]<=k){
zj[c].n=b[i];
zj[c].bq=1;
printf("zj[%d].n=%d,zj[%d].bq=%d\n",c,zj[c].n,c,zj[c].bq);
c++;
}
}
for(int i=0;i<c;i++){
printf("zj[%d].n=%d,zj[%d].bq=%d\n",i,zj[i].n,i,zj[i].bq);
}
以下是测试用例:
1
6 5 6
2 3 8 5 6 5
1 3 4 10 5
以下是输出结果:
zj[5].n=1,zj[5].bq=1
zj[6].n=3,zj[6].bq=1
zj[7].n=4,zj[7].bq=1
zj[8].n=5,zj[8].bq=1
zj[0].n=2,zj[0].bq=-1
zj[1].n=3,zj[1].bq=-1
zj[2].n=5,zj[2].bq=-1
zj[3].n=6,zj[3].bq=-1
zj[4].n=5,zj[4].bq=-1
zj[5].n=1,zj[5].bq=1
zj[6].n=3,zj[6].bq=1
zj[7].n=4,zj[7].bq=10
zj[8].n=5,zj[8].bq=1
```(只能用代码块展示,实际上是输出数据)
代码中两个printf之间明明没有其他运算,然而第一个循环的输出中zj[7].bq=1,第二个循环的输出中zj[7].bq=10