用devc++写的,c语言出了两个bug,输入的数字莫名其妙变成其他的数字了。

问题1:c语言定义了a[] c[]两个数组,一个个赋值,到c的第4个数c[3]的时候不知道为什么变成了一长串很奇怪的数字了。

问题2:我输入的是0 20,这里不知道为什么就变成了20 20了,再输入一次0 20就正常了

 

问题一:你每次循环都重新声明了一次数组,理论上来说,每次数组的起始地址都可能会变化,对应的值也会变化,如果不变,应该只是复用了上次循环中的数组变量的内存。所以你重新执行一次,效果应该又不一样。

问题二:还真没看出什么问题。。。。

 

 
i=0;
for(;i<100;i++){
	
		if (a[i]<a[i+1]){
			t=a[i];
			a[i]=a[i+1];
			a[i+1]=t;
			m=c[i];
			c[i]=c[i+1];
			c[i+1]=m;
			}
			
		
}
i=0;
printf("%dx%d",c[i],a[i]);

for(i=1;i<5;i++)
{

	if(c[i]==0)
	{
	   
	
    }
	else
	{
		if(c[i]>0){
			printf("+%d",c[i]);
		}else{
		
			printf("%d",c[i]);}
		if(a[i!=0]){
			printf("x%d",a[i]);
		}else{
		break;
		}
		 

	}
	}
	
/*
/*for(i=0;i<99;i++){
	 

printf("%dx%d+",b[i],a[i]);

}*/


return 0;
}

 


#include<stdio.h>
int main()
{
int a[100],c[100];
int num1,num2,t,m,i=0;

for(;i<100;i++)
{a[i]=0;
 c[i]=0; 
}

do
{

scanf("%d %d",&num1,&num2);
a[i]=num1;
c[i]=num2;

i++;
printf("num1=%d,num2=%d\n",num1,num2);
}
while(num1!=0);
 
i=0;
for(;i<100;i++){
    
        if (a[i]<a[i+1]){
            t=a[i];
            a[i]=a[i+1];
            a[i+1]=t;
            m=c[i];
            c[i]=c[i+1];
            c[i+1]=m;
            }
            
        
}
i=0;
printf("%dx%d",c[i],a[i]);

for(i=1;i<5;i++)
{

    if(c[i]==0)
    {
       
    
    }
    else
    {
        if(c[i]>0){
            printf("+%d",c[i]);
        }else{
        
            printf("%d",c[i]);}
        if(a[i!=0]){
            printf("x%d",a[i]);
        }else{
        break;
        }
         

    }
    }
    
/*
/*for(i=0;i<99;i++){
     

printf("%dx%d+",b[i],a[i]);

}*/


return 0;
}