求大神帮助找出下面C程序的错误!
【问题描述】按程序功能要求编写程序。(1)从键盘输入一个正整数(不多于5位),计算该正整数与789之和(记为sum);(2)将整数sum各个位拆分到数组a中;(3)数组a...
【问题描述】按程序功能要求编写程序。
(1)从键盘输入一个正整数(不多于5位),计算该正整数与789之和(记为sum);
(2)将整数sum各个位拆分到数组a中;
(3)数组a从小到大排序;
(4)将排序后的数组a组成一个值为最小的整数(记为min);
(5)输出min及其位数(两数中间以空格分隔)。
【样例输入】52387
【样例输出】13567 5
【样例说明】52387+789=53176,重排后得到的最小数为13567,其位数为5位。
#include<stdio.h>
int main()
{
int sum,n=0,i=0,k,x,index,temp,min=0;
int a[5];
scanf("%d",&x);
sum=x+789;
while(sum!=0)
{
a[i]=sum%10;
sum=sum/10;
i++;
n++;
}
for(k=0;k<n-1;k++)
{
index=k;
for(i=k+1;i<n;i++)
if(a[i]<a[index]) index=i;
temp=a[i];
a[i]=a[index];
a[index]=temp;
}
for(i=0;i<n;i++)
min=min*10+a[i];
printf("%d %d",min,n);
return 0;
} 展开
(1)从键盘输入一个正整数(不多于5位),计算该正整数与789之和(记为sum);
(2)将整数sum各个位拆分到数组a中;
(3)数组a从小到大排序;
(4)将排序后的数组a组成一个值为最小的整数(记为min);
(5)输出min及其位数(两数中间以空格分隔)。
【样例输入】52387
【样例输出】13567 5
【样例说明】52387+789=53176,重排后得到的最小数为13567,其位数为5位。
#include<stdio.h>
int main()
{
int sum,n=0,i=0,k,x,index,temp,min=0;
int a[5];
scanf("%d",&x);
sum=x+789;
while(sum!=0)
{
a[i]=sum%10;
sum=sum/10;
i++;
n++;
}
for(k=0;k<n-1;k++)
{
index=k;
for(i=k+1;i<n;i++)
if(a[i]<a[index]) index=i;
temp=a[i];
a[i]=a[index];
a[index]=temp;
}
for(i=0;i<n;i++)
min=min*10+a[i];
printf("%d %d",min,n);
return 0;
} 展开
3个回答
展开全部
三个错误:
for(k=0;k<n-1;k++) 应该为 for(k=0;k<n;k++) 【n为数字位数,所以需要循环n次】
if(a[i]<a[index]) 如果满足条件,则后面四句都需要执行,所以需要加{}
这四句话中,index=i; 需要放到最后执行,否则下标值已经相同了,交换没有意义
修改后代码段:
for(k=0;k<n;k++)
{
index=k;
for(i=k+1;i<n;i++)
if(a[i]<a[index])
{
temp=a[i];
a[i]=a[index];
a[index]=temp;
index=i;
}
}
结果:
52387
13567 5
Press any key to continue
展开全部
if(a[i]<a[index])
{
index=i;
temp=a[i];
a[i]=a[index];
a[index]=temp;
}
还有啊,注意程序的书写格式,你写的有点乱
{
index=i;
temp=a[i];
a[i]=a[index];
a[index]=temp;
}
还有啊,注意程序的书写格式,你写的有点乱
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-05-29
展开全部
for(i=k+1;i<n;i++)
if(a[i]<a[index]) index=i;////////错在此行
temp=a[i];
a[i]=a[index];
a[index]=temp
另外,后三行是否应该括起来!?
if(a[i]<a[index]) index=i;////////错在此行
temp=a[i];
a[i]=a[index];
a[index]=temp
另外,后三行是否应该括起来!?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询