1)从键盘输入一个正整数(不多于5位),计算该正整数与789之和(记为sum);
(2)将整数sum各个位拆分到数组a中;
(3)数组a从小到大排序;
(4)将排序后的数组a组成一个值为最小的整数(记为min);
(5)输出min及其位数(两数中间以空格分隔)。
麻烦列位大神看看哪里错了,输出不出值
#include
#include
int main(void){
int x,j,i,sum,t,d,count,index;
int a[10];
scanf("%d",&x);
sum=x+789;
i=0;
count=0;
while(sum>0){
d=sum%10;
a[i]=d;
i++;
sum=sum/10;
count++;}
for (i=0;i<count-1;i++){
index=i;
for(j=i+1;j<count;i++)
if(a[index]>a[j]) index=j;
t=a[index];
a[index]=a[i];
a[i]=t;
}
for(i=0;i<count;i++){
printf("%d",a[i]);}
printf(" %d",count);
return 0;
}
for(j=i+1;j if(a[index]>a[j]) index=j;
这里的 i++ 应该是 j++
// Q186004.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int arr[10];
int cmp(const void* a, const void* b)
{
return *(int *)a - *(int *)b;
}
int main(int argc, char* argv[])
{
int input = 0, sum = 0;
scanf("%d", &input);
sum = 789 + input;
printf("sum=%d\nbefore sort", sum);
int arrlen = (int)log10(sum) + 1;
for (int sum1 = sum, int i = arrlen - 1; i >=0; i--)
{
arr[i] = sum1 % 10;
sum1 /= 10;
}
for (i = 0; i < arrlen; i++)
printf("arr[%d]=%d\t", i, arr[i]);
printf("\naftersort");
qsort(arr, arrlen, sizeof(int), cmp);
for (i = 0; i < arrlen; i++)
printf("arr[%d]=%d\t", i, arr[i]);
printf("\n");
if (arr[0] == 0)
{
int j = 1;
while (arr[j] == 0 && j < arrlen - 1) j++;
arr[0] = arr[j];
arr[j] = 0;
}
int min = 0;
for (i = 0; i < arrlen; i++)
{
min *= 10;
min += arr[i];
}
printf("min=%d %d\n", min, arrlen);
return 0;
}
1234
sum=2023
before sortarr[0]=2 arr[1]=0 arr[2]=2 arr[3]=3
aftersortarr[0]=0 arr[1]=2 arr[2]=2 arr[3]=3
min=2023 4
Press any key to continue
4511
sum=5300
before sortarr[0]=5 arr[1]=3 arr[2]=0 arr[3]=0
aftersortarr[0]=0 arr[1]=0 arr[2]=3 arr[3]=5
min=3005 4
Press any key to continue
155
sum=944
before sortarr[0]=9 arr[1]=4 arr[2]=4
aftersortarr[0]=4 arr[1]=4 arr[2]=9
min=449 3
Press any key to continue
55555
sum=56344
before sortarr[0]=5 arr[1]=6 arr[2]=3 arr[3]=4 arr[4]=4
aftersortarr[0]=3 arr[1]=4 arr[2]=4 arr[3]=5 arr[4]=6
min=34456 5
Press any key to continue