求大神帮助找出下面C程序的错误!问题描述按程序功能要求编写程序.(1)从键盘输入一个正整数(不多于5位),计算该正整数与789之和(记为sum);(2)将整数sum各个位拆分到数组a中;(
【问题描述】按程序功能要求编写程序.
(1)从键盘输入一个正整数(不多于5位),计算该正整数与789之和(记为sum);
(2)将整数sum各个位拆分到数组a中;
(3)数组a从小到大排序;
(4)将排序后的数组a组成一个值为最小的整数(记为min);
(5)输出min及其位数(两数中间以空格分隔).
【样例输入】52387
【样例输出】13567 5
【样例说明】52387+789=53176,重排后得到的最小数为13567,其位数为5位.
#include
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
三个错误:
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
已知m是正整数,如果6分之m+2是最简真分数,m的值是?m分之6是小于且大于2分之1的最简真分数, 2020-04-12 …
1.约分后M的平方加2M减3的差分之M的平方减3M加2的和等于()2.已知M=M分之1,求代数式M 2020-05-13 …
设集合M={a|a=x^2-y^2,x,y∈z}求两个属于M的数之积还属于M错了是设集合M={a| 2020-05-13 …
这题哪里出错了?本题:输出11-999之间的数m,要求m,m*m,m*m*m都为回文数.如11,1 2020-05-17 …
比M的4分之一多百分之20的数问是M的4分之一+百分之20还是M的四分之一+(M的比M的4分之一多 2020-05-24 …
已知实数m=根号3+1/2,n=根号3-1/2求出下列各式的值1:m的平方-mn+n的平方2:m分 2020-06-12 …
m分之n是假分数(m大于0),那么它的倒数n分之m一定是真分数.对的还是错的? 2020-07-31 …
点M在数轴上对应的点是m点M在数轴上对应的数为m,点N对应的数为n,且M、N、满足|m+3|+(n- 2020-11-18 …
1.若m,n互为相反数,则下面结论错误的是()A2m+2n=0Bmn=-㎡m的绝对值=n的绝对值n分 2020-12-01 …
已知m、n互为相反数,且满足(m+n)^2-(n+4)^2=16,求m^2+n^2-n分之m的值应该 2020-12-01 …