首页 > 试题广场 >

图片整理

[编程题]图片整理
  • 热度指数:186063 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
\hspace{15pt}对于给定的由大小写字母和数字组成的字符串,请按照 \sf{ASCII} 码值将其从小到大排序。
\hspace{15pt}如果您需要了解更多关于 \sf{ASCII} 码的知识,请参考下表。


输入描述:
\hspace{15pt}在一行上输入一个长度为 1 \leqq {\rm length}(s) \leqq 10^3 ,仅由大小写字母和数字构成的字符串 s ,代表输入的字符串。


输出描述:
\hspace{15pt}在一行上输出一个字符串 s ,代表排序后的答案。
示例1

输入

Ihave1nose2hands10fingers

输出

0112Iaadeeefghhinnnorsssv
qsort函数解决
#include <stdio.h>
#include <stdlib.h>
int cmp(const void* p1,const void* p2)
{
    return *(char*)p1 - *(char*)p2;    //升序,降序则是*(char*)p2 - *(char*)p1;
}
int main()
{
    char arr[1001];
    gets(arr);
    qsort(arr,strlen(arr),sizeof(arr[0]),cmp);
    //qsort(数组第一个元素,数组元素的个数,单个元素的字节大小,比较函数int *compare(const void* p1,const void* p2)
    printf("%s\n",arr);
    return 0;
}


发表于 2025-02-15 14:10:16 回复(0)
懒得排序……再苦一苦电脑吧
#include <stdio.h>
#include <string.h>

#define MAXSTRLEN 1000

int main()
{
    char str[MAXSTRLEN + 1] = {0};
    char i;
    int len, j;

    scanf("%[^\n]", str);
    len = strlen(str);
    for (i = '0'; i <= '9'; i++)
    {
        j = 0;
        while (j < len)
        {
            if (str[j] == i)
            {
                printf("%c", i);
            }
            j++;
        }
    }
    for (i = 'A'; i <= 'Z'; i++)
    {
        j = 0;
        while (j < len)
        {
            if (str[j] == i)
            {
                printf("%c", i);
            }
            j++;
        }
    }
    for (i = 'a'; i <= 'z'; i++)
    {
        j = 0;
        while (j < len)
        {
            if (str[j] == i)
            {
                printf("%c", i);
            }
            j++;
        }
    }
    return 0;
}


发表于 2025-01-07 13:42:49 回复(0)
# 排序算法
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
void swap(char* a, char* b);
void sort_pic(char pic[], int len_pic);
int main() {
    int len_pic = 0, b;
    char pic[1001];
    fgets(pic, 1001, stdin);
    pic[strcspn(pic, "\n")] = '\0';
    len_pic = strlen(pic);
    if (len_pic < 1 || len_pic > 1000) {
        return 0;
    }
    sort_pic(pic, len_pic);
    printf("%s", pic);
    return 0;
}
void swap(char* a, char* b) {
    char temp = *a;
    *a = *b;
    *b = temp;
}
void sort_pic(char pic[], int len_pic) {
    int i = 0, j = 0;
    for (i = 0; i < len_pic; i++) {
        for (j = 0; j < len_pic - 1 - i; j++) {
            if ((int)pic[j] > (int)pic[j + 1]) {
                swap(&pic[j], &pic[j + 1]);
            }
        }
    }
}


发表于 2024-11-05 11:04:24 回复(0)
#include <stdio.h>
int main() {
    char input[1000],a[1];
    gets(input);
    int len=strlen(input);
    for(int i=0;i<len-1;i++){
        for(int j=i+1;j<len;j++){
            if (input[i]>input[j]){
                a[0]=input[i];
                input[i]=input[j];
                input[j]=a[0];
            }
        }
    }
    printf("%s",input);
}

发表于 2024-08-07 05:24:28 回复(0)
#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 回复(1)
快速排序:

#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)