1樓:Guoy
把數字以字元的形式讀入,記錄每一位出現的次數,再依次輸出即可。
需要去重,將出現次數置1即可。
#include
int isDigit(char c)
void print(int count, int digit)int main() ;
while (1)
//從小到大依次輸出每一位出現的次數
for (int i = 0; i < 10; i++)print(out[i], i);
return 0;}
2樓:Miss包紙
存乙個10位的array然後數每個數字有幾個比如3256就是:
0:0,1:0,2:1,3:1,4:0,5:1,6:1…然後根據這個array列印,就是
0:不列印,1:不列印,2:列印1次…
3樓:cver
建立乙個陣列用於接收輸入數值0-9的個數hist[10] = ,再按序輸出.
scanf -> val
hist[val]++
foreach hist[i]
if hist[i]> 0 : printf i, hist[i]--
4樓:嵌入式Linux
後面有提到的桶排序,我覺得可能他說錯了。
使用計數排序應該非常不錯,因為一共也就 10個數字。並不消耗什麼記憶體。
#include
#include
/*二進位制 |十進位制 |十六進製制 | 字元0011 0000 48 30 0
0011 0001 49 31 1
0011 0010 50 32 2
0011 0011 51 33 3
0011 0100 52 34 4
0011 0101 53 35 5
0011 0110 54 36 6
0011 0111 55 37 7
0011 1000 56 38 8
0011 1001 57 39 9
*/void
jishu
(char
*nums
,unsigned
char
*output
,size_t
len);
intmain
(int
argc
,char
const
*argv);
/*0~9*/
inti=0
;gets
(nums
);jishu
(nums
,output
,strlen
(nums
));//printf("\n");
for(i=
0;i<10;
i++)getchar
();return0;
}void
jishu
(char
*nums
,unsigned
char
*output
,size_t
len)}輸出
5樓:快叫我吃飯
#include
#include
int main(int argc, char* argv)unsigned char chrs[255];
char *pBuffer = (char*)malloc(4096);
//按順序儲存所有ascii字元,0也存,無所謂了for (size_t i = 0; i < 255; i++)chrs[i] = (unsigned char)i;
printf("輸入:\n");
scanf("%s", pBuffer);
getchar();//獲取輸入快取的回車鍵//獲取輸入字串長度
size_t len = strlen(pBuffer);
printf("\n排序後:\n");
for (size_t i=0; i<255; i++)for (size_t n = 0; n < len; n++)if (pBuffer[n] == chrs[i])printf("%c", pBuffer[n]);
free(pBuffer);
getchar();
6樓:醉生夢死
因為乙個數里只會出現0-9這幾個數字所以直接開乙個大小為10的陣列用來儲存,陣列元素大小為每個數出現的次數
將這個數字按字串讀取,然後遍歷一遍這個字串遇到 /0 就停下,每遇到乙個字元字元數量+1
a[str[i]-『0』]+=1;
最後再兩重for迴圈每個陣列下標輸出相應的次數就可以了陣列元素大小為0的不輸出
時間複雜度O(n) 空間O(1)
手機打字寫的比較隨意
7樓:慕城
把輸入的數,列印到字元陣列,然後再用for迴圈進行排序,最後輸出字元陣列就可以了。
#include
#define N 10
int x, i, tap;
char a[N], t ;
void pai_xu(char a)
}main()
printf("請輸入乙個整數");
scanf("%d",&x);
fprintf(a,"%d",x)
pai_xu(a);
printf("%s",a);
//大概就是這麼個思路
8樓:碧海風
C語言都快忘光了……湊合寫寫吧~
分兩步。第一步,輸入之數反覆除以10取餘,以獲取各位值;第二步,對各位值排序後輸出。
#include
#include
#define ARR_LEN 255
/*陣列長度上限*/
/* 數字按位剝離 */
intnumToDigit
(int
num,
intarr
)while(--
i)/*逆序儲存*/
arr[j++
]=temp[i
];return
count;}
/* 氣泡排序 */
void
bubbleSort
(int
arr,
intlen)}
}/*列印陣列*/
void
printArray
(int
arr,
intlen
)int
main
(void
)執行結果
9樓:
先說下思想吧,因為要取得輸入數的每一位來比較,使用模運算費時費力,還不如用乙個字元陣列來存這個數。然後對這個陣列排序再輸出就可以了。這裡因為不知道你的數要求要多大的,所以陣列長度設為100,排序用的是最基礎的氣泡排序
#include
#include
#define MAX 100
void
sort
(char*,
size_t
);int
main
(int
argc
,char
const
*argv
)void
sort
(char
*nums
,size_t
len)}}
return;}
如何用c語言判斷乙個數為小數?
魔某人 include include const char result 2 int main intNumType char Str bool dot false 小數點 char p Str charCh p if Ch Ch for Ch p p dot true elseif 9 Ch 0...
python怎麼輸入乙個數然後把它的每個數倒過來輸出
寫乙個不用轉換成str的版本 from math import log10 ceil defreturn inverse num list x return x 10 i 10fori inrange 0 ceil log10 x 只要直接呼叫即可In 1 return inverse num li...
c語言為什麼輸入 乙個實數123 123輸出的結果會變?
林凱 簡單點說,十進位制數如何表示1 3呢,0.333333 再乘以幾個10也抹不掉小數點!二進位制數如何表示0.3呢?再乘以幾個2也抹不掉小數點!3.14159269不能用八位十進位制 表示 123.123同樣不能用二十三位的float表示 打比方和原理的分割線 浮點數由1位符號位 若干位指數字 ...