首页 > 试题广场 >

图片整理

[编程题]图片整理
  • 热度指数:171869 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
Lily上课时使用字母数字图片教小朋友们学习英语单词,每次都需要把这些图片按照大小(ASCII码值从小到大)排列收好。请大家给Lily帮忙,通过代码解决。
Lily使用的图片使用字符"A"到"Z"、"a"到"z"、"0"到"9"表示。

数据范围:每组输入的字符串长度满足


输入描述:

一行,一个字符串,字符串中的每个字符表示一张Lily使用的图片。



输出描述:

Lily的所有图片按照从小到大的顺序输出

示例1

输入

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;
}


编辑于 2024-03-30 15:16:13 回复(0)
快速排序:

#include <stdio.h>
#include <string.h>
int partion(char str[],int low,int high)
{
    char pivot=str[low];
    while(low<high)
    {
        while(str[high]>=pivot&&low<high)
            high--;
        str[low]=str[high];
        while(str[low]<=pivot&&low<high)
            low++;
        str[high]=str[low];
    }
    str[low]=pivot;
    return low;
}
int quicksort(char str[],int low,int high)
{   if(low<high)
    {
    int middle=partion(str,low,high);
    quicksort(str,low,middle-1);
    quicksort(str,middle+1,high);
    return 0;
    }
    else return 0;
}

int main() {
    char str[1001];
    scanf("%s",str);
    int len=strlen(str);
    int low=0,high=len-1;
    quicksort(str,low,high);
    puts(str);
    return 0;
}

发表于 2024-03-13 23:44:54 回复(0)
#include <stdio.h>
#include <string.h>
int main()
{
    char str1[1000];
    char str2[1000] = { 0 };
    char* j;
    int k = 0;
    //printf("请输入字符串:");
    scanf("%s", str1);
    int len = strlen(str1);
    //遍历字符数组每个元素
    for (char i = 0; i < 123; i++)//遍历ACSII码表,从小到大依次寻找字符串中对应的字符
    {
        for (j = str1; j <= (str1+(len-1)); j++)//遍历输入的字符串
        {
            if (*j == i)
            {
                str2[k] = (*j);//只要找到就放到字符数组str2里面
                k++;
            }
        }
    }
    printf("%s", str2);
    return 0;
}
 
发表于 2024-02-24 15:41:02 回复(0)
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
    int arr[2000] = { 0 };
    long long a = 0;
    for (long long i = 0; i < 2000; i++)
    {
        scanf("%c", &arr[i]);
        if (arr[i] == '\n')
        {
            a = i;
            break;
        }
    }
    for (long long i = 0; i < a; i++)
    {
        long long j = 0;
        for (j = 0; j < a - i; j++)
        {
            if (arr[j] > arr[j + 1])
            {
                int tmp = arr[j + 1];
                arr[j + 1] = arr[j];
                arr[j] = tmp;
            }
        }
    }
    for (long long i = 0; i <= a; i++)
    {
        if (arr[i] != '\n')
        {
            printf("%c", arr[i]);
        }
    }
    return 0;
}
编辑于 2024-01-11 10:58:35 回复(1)
#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;
}
qsort函数
发表于 2023-12-12 19:59:02 回复(0)
#include <stdio.h>
# include<string.h>
# include<stdlib.h>
int comp(const void* a, const void* b){return *(char*)a - *(char*)b;}
int main() {
    char s[1001] = {'\0'},t;
    gets(s);
    qsort(s, strlen(s), sizeof(char), comp);
    puts(s);
    return 0;
} 

发表于 2023-12-02 20:31:08 回复(0)
//一个冒泡排序解决确实简单

#include <stdio.h>
#include <string.h>

int main() {
    char str[1001] = {'\0'};
    while (scanf("%s", str) != EOF) {
        int len = strlen(str);
        for(int i = 0;i<len-1;i++)
        {
            for(int j = 0;j<len - 1 -i;j++)
            {
                if(str[j]-str[j+1]>0)
                {
                    char tmp = str[j];
                    str[j] = str[j+1];
                    str[j+1] = tmp;
                }
            }
        }
        printf("%s\n",str);
    }
    return 0;
}

发表于 2023-10-10 19:01:39 回复(0)
#include <stdio.h>
#include <string.h>

int main() {
    char str[1001]={0};
    char temp;
    gets(str);
    int len=strlen(str);
    //冒泡排序
    for(int i=0;i<len-1;i++)
        for(int j=i+1;j<len;j++)
        {
            if(str[i]>str[j])
            {
                temp=str[j];
                str[j]=str[i];
                str[i]=temp;
            }
        }
    puts(str);
    return 0;
}
发表于 2023-09-03 20:54:45 回复(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;
}

发表于 2023-08-11 21:25:37 回复(0)
//排序算法
#include <stdio.h>
#include<string.h>
int main() {
    char s[1001];
    int len,i,j,k,tp;
    scanf("%s",s);
    len=strlen(s);
    for(i=0;i<len-1;i++)
        for(j=0;j<len-i-1;j++)
        {
            if(s[j+1]<s[j])
            {
                tp=s[j];
                s[j]=s[j+1];
                s[j+1]=tp;
            }
        }
    printf("%s\n",s);
    return 0;
}
发表于 2023-08-01 23:29:18 回复(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;
}
//经典选择排序法

发表于 2023-04-03 19:49:05 回复(0)
冒泡排序
#include <stdio.h>

int main() {
    char a[1000];
        int m=0;
    int len;
    scanf("%s\n",a);
    len=strlen(a);
    for(int i=0;i<len-1;i++){
        for(int j=0;j<len-i-1;j++){
            if(a[j]>a[j+1]){
                m=a[j];
                a[j]=a[j+1];
                a[j+1]=m;
            }
        }
    }
    printf("%s\n",a);
    return 0;
}


发表于 2023-03-31 17:31:10 回复(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;
}

发表于 2023-01-08 23:25:42 回复(0)
C 语言 sqort快速排序真香 快速解答,代码量小
#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;
}


发表于 2023-01-08 21:32:48 回复(0)
#include <stdio.h>
#include <string.h>

int main()
{
    char m[1000];
    int a[80] = { 0 };
    int i = 0;
    scanf("%[^\n]", &m);

    while (m[i] != '\0')
    {
        a[m[i] - '0']++;
        i++;
    }
    for (int j = 0; j < 80;)
    {
        if (a[j] != 0)
        {
            printf("%c", j + 48);
            a[j]--;
        }
        else
        {
            j++;
        }
    }

    return 0;
}
发表于 2023-01-01 20:56:11 回复(0)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int compchar(void *a, void *b)
{
    char *c1 = (char *)a;
    char *c2 = (char *)b;
    return (*c1 - *c2);
}
int main(void)
{
    char str[1001] ={'\0'};
    scanf("%s",str);
    
    int len = strlen(str);
    qsort(str, len, sizeof(char), (__compar_fn_t) compchar);
    
    printf("%s\n",str);
    return 0;
}
发表于 2022-06-16 21:45:21 回复(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;
}

发表于 2022-04-18 18:49:41 回复(0)
c/c++,用哈希思想实现
int main(){
    char str[1001];
    int hash[123] = {0};
    gets(str);
    int len = strlen(str);
    for(int i = 0; i < len; i++){
        hash[str[i]]++;
    }
    for(int j = 0; j < 123; j++){
        if(hash[j] != 0){
            for(int n = 0; n < hash[j]; n++){
                printf("%c",j);
            }
        }
    }
    return 0;
}

发表于 2022-04-17 16:29:20 回复(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");
    }
}


发表于 2022-03-30 17:23:24 回复(0)
直接使用冒泡法比较,字符比较大小就是ASCII的大小
#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;
}


发表于 2022-02-19 15:48:57 回复(0)

问题信息

难度:
28条回答 31140浏览

热门推荐

通过挑战的用户

查看代码