问题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;
}