Lily上课时使用字母数字图片教小朋友们学习英语单词,每次都需要把这些图片按照大小(ASCII码值从小到大)排列收好。请大家给Lily帮忙,通过代码解决。
Lily使用的图片使用字符"A"到"Z"、"a"到"z"、"0"到"9"表示。
数据范围:每组输入的字符串长度满足
数据范围:每组输入的字符串长度满足
一行,一个字符串,字符串中的每个字符表示一张Lily使用的图片。
Lily的所有图片按照从小到大的顺序输出
Ihave1nose2hands10fingers
0112Iaadeeefghhinnnorsssv
#include <stdio.h> int main() { char s[1000]; unsigned int x[75] = {0}, L; gets(s); L = strlen(s); for (int i = 0; i < L; i++) { x[s[i] - 48]++; } for (int i = 0; i < 75; i++) { while (x[i]--) { printf("%c", i + 48); } } return 0; }
#include <stdio.h> #include <stdlib.h> #include <string.h> int comper(const void * a,const void * b) { return (* (char*)a-*(char*)b); } int main() { char arr[1001]; fgets(arr,sizeof(arr),stdin); int len=strlen(arr); int cn=sizeof(arr[0]); qsort(arr,len,cn,comper); for(int i=0;i<len;i++) if(arr[i]!='\n') printf("%c",arr[i]); return 0; }
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <string.h> #include <stdlib.h> //该函数的参数类型使用了const void *,这是一种通用的指针类型,可以指向任何类型的数据。 int compare(const void* a, const void* b) { return (*(char*)a) - (*(char*)b); } //先将a和b强制转换成char类型的指针,然后通过外面的*获取指针指向的值,然后比较 int main() { char arr[1000];//输入的字符 int i = 0; scanf("%[^\n]", &arr); int sz = strlen(arr); qsort(arr, sz, sizeof(char), compare);//qsort用法其中arr表示排序数组,sz表示数组的长度,sizeof(char)表示数据类型,compare表示比较函数。 //通常使用qsort函数时,后面的compare写法是固定的,恒为上面的写法 for (i = 0; i < sz; i++) { printf("%c", arr[i]); } return 0; }
#include <stdio.h> #include <string.h> int main() { char sts[1001] = { 0 }, mid; int i, j, len; scanf("%s",sts); len = strlen(sts); for(i = 0 ; i <= len - 2 ; i++){ for(j = i + 1 ; j <= len -1 ; j++){ if(sts[i] > sts[j]){ mid = sts[i]; sts[i] = sts[j]; sts[j] = mid; } } } printf("%s",sts); return 0; } //经典选择排序法
//字符串排序,快排(ASCII码值从小到大) //1.return不要忘 2.=在下边。若在上边出现12输出21的情况。 #include <stdio.h> #include <string.h> //1 2 // ij pivot=1 void Qsort(char *str, int L, int R) { if (L >= R) return; int i, j; i = L; j = R; char pivot; pivot = str[L]; while (i < j) { while (str[j] > pivot && i < j) //last:i=j j--; while (str[i] <= pivot && i < j) i++; if (i < j) { char temp = str[j]; str[j] = str[i]; str[i] = temp; } } char temp = str[i]; str[i] = str[L]; str[L] = temp; //这里无限循环了 Qsort(str, L, i - 1); Qsort(str, i + 1, R); } int main() { char str[1000] = {0}; scanf("%s", str); int len = strlen(str); int R = len - 1; //R为右边界,L为左边界 int L = 0; Qsort(str, L, R); printf("%s", str); return 0; }
#include <stdio.h> #include<stdlib.h> #include<string.h> int comp(const void *a, const void *b) { return *(char *)a - *(char *)b; } int main() { char arr[1000]={0}; while(scanf("%s", arr) != -1) { int n=strlen(arr); qsort(arr, n, sizeof(char), comp); printf("%s\n", arr); } return 0; }
#include <stdio.h> #include <string.h> #define N 1000 int main() { char str[N],temp; int len,i,j; scanf("%s",str); len=strlen(str); for(i=0;i<len-1;i++) { for(j=0;j<len-1-i;j++) { if(str[j]>str[j+1]) { temp=str[j]; str[j]=str[j+1]; str[j+1]=temp; } } } printf("%s\n",str); return 0; }
#include<stdio.h> #include<string.h> int main(){ int mark[128]={0}; char str[1001]={'\0'}; while(~scanf("%s",&str)){ int len=strlen(str); for(int i=0;i<len;i++){ mark[(int)str[i]]++; //利用顺序标志位计数 } for(int j=0;j<128;j++){ if(mark[j]!=0){ for(int k=mark[j];k>0;k--) printf("%c",j); } }printf("\n"); } }
#include<stdio.h> #include<string.h> void Printch(char* ch,int size) { for (int i = 0; i < size - 1; i++) { for (int j = 0; j < size - 1 - i; j++) { if (*(ch + j) > *(ch+j + 1)) { *(ch + j) ^= *(ch + j + 1); *(ch + j + 1) ^= *(ch + j); *(ch + j) ^= *(ch + j + 1); } } } puts(ch); } int main() { char ch[1000]; while(gets(ch)) { int size = strlen(ch); Printch(ch,size); } return 0; }