西岚小包裹怎么搞到:c语言提问,特急!!!!!!!

来源:百度文库 编辑:高校问答 时间:2024/05/01 22:08:58
#include<stdio.h>
void main()
{
long a,b,c,i,j,k;
int d[10];
scanf("%ld%ld",&a,&b);
i=0;
while(b>1)
{
c=b%10;
b=(b-c)/10;
d[i]=c;
i++;
}
while(a>1)
{
c=a%10;
a=(a-c)/10;
d[i]=c;
i++;
}
for(k=i;k=0;k--)
{printf("%ld",d[k]);}
}
这段代码哪里出了问题?求大鸟高手指点

参考程序:
#include<stdio.h>
#define MAX 100000 //定义一个大的数组来存放数据
void main()
{
long a,b,c,i,k,t;
int d[MAX];
scanf("%ld,%ld",&a,&b); //注意scanf的用法
i=0;
while(b>1)
{
c=b%10;
b=(b-c)/10;
d[i]=c;
i++;
}
for(k=0;k<=i-1;k++)
printf("%ld ",d[k]);
printf("\n");

t=k; //记录当前数组下标
while(a>1)
{
c=a%10;
a=(a-c)/10;
d[i]=c;
i++;
}

for(k=t;k<=i-1;k++)
printf("%ld ",d[k]);

}

#include<stdio.h>
void main()
{
long a,b,c,i,j,k;
int d[10];
scanf("%ld%ld",&a,&b);
i=0;
while(b>=1)
{
c=b%10;
b=(b-c)/10;
d[i]=c;
i++;
}
while(a>=1)
{
c=a%10;
a=(a-c)/10;
d[i]=c;
i++;
}
for(k=i-1;k>=0;k--)
{printf("%d",d[k]);}
}
有逻辑错误!

for(k=i;k=0;k--)
应该是for(k=i;k>0;k--)

1. while(b > 1) ----> while(b > 0)
2. while(a >1 ) ----> while(a > 0)
3. for(k=i; k=0; k--) --> for(k=i-1; k>=0; k--)

错误一:while(b>1)
当你输入一个数最高位为1的时候,此时最高位将会丢失!例如:输入b=123则执行语句:
while(b>1)
{
c=b%10;
b=b/10; /*这里不用b=(b-c)/10,b=b/10也可以得到同样的结果*/
d[i]=c;
c++;
}
执行后:d[0]=3;d[1]=2;此时b=1,循环将结束,因此最高位丢失。所以应为b>0或b>=1.

错误2:while(a>1) 同错误一。

错误3:for(k=i;k=0;k--)
前面k应等于k-1;因为上面一个循环执行后i多加了一个1;后面不知是不是输入错误?该语句被写成了赋值语句,在此程序中应为k>=0;

错误4:printf("%ld",d[k]);
该语句中的格式修饰符应为%d,因为前面定义的是整形数组。

错误一:while(b>1)
当你输入一个数最高位为1的时候,此时最高位将会丢失!例如:输入b=123则执行语句:
while(b>1)
{
c=b%10;
b=b/10; /*这里不用b=(b-c)/10,b=b/10也可以得到同样的结果*/
d[i]=c;
c++;
}
执行后:d[0]=3;d[1]=2;此时b=1,循环将结束,因此最高位丢失。所以应为b>0或b>=1.

错误2:while(a>1) 同错误一。

错误3:for(k=i;k=0;k--)
前面k应等于k-1;因为上面一个循环执行后i多加了一个1;后面不知是不是输入错误?该语句被写成了赋值语句,在此程序中应为k>=0;

错误4:printf("%ld",d[k]);
该语句中的格式修饰符应为%d,因为前面定义的是整形数组。。。