C语言问题:输入一行字符串,然后按照ASCII码大小进行升序排序。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言问题:输入一行字符串,然后按照ASCII码大小进行升序排序。相关的知识,希望对你有一定的参考价值。

要求:字符数<=127;不能用gets函数;
我用getchar函数来一个个输入,然后用strlen函数统计长度,结下来用排序算法对其排序。不知道可不可直接用大于小于符号来对字符排序,反正程序总是不对。我是新手,大家帮帮忙,谢谢了。程序如下:
#include<stdio.h>
#include<string.h>
#define N 128

void main()

int str[N],ch;

int i , j , t,size;

size=0;

printf("plese input string :\n");

while (((ch = getchar()) != '\n') && (i < N))

str[i] = ch;
i++;

str[i] = '\0';

size=strlen(str);

for(j=0;j<size-1;j++)

for(i=0;i<size-1-j;i++)

if(str[i]>str[i+1])

t=str[i+1];

str[i+1]=str[i];

str[i]=t;



for(i=0;i<size;i++)

printf("result:%c",str[i]);


字符可以直接用大于小于比较,你那排序算法是你自己写的还是看的书上的,怎么没见过这种算法,排序用qsort
先定义排序的规则,这个是从小大
大到小,ab颠倒一下
int cmp(const void *a,const void *b)
return *(char *)a-*(char *)b;

qsort(str,size,sizeof(str[0]),cmp);
下面直接输出。。。。头文件stdlib.h
参考技术A

    把int str[N],ch;改成char str[N],ch;。

    把int i , j , t,size;改成int i=0 , j , t,size;。

    在for(i=0;i<size;i++)前加一句printf("result:");。

    把printf("result:%c",str[i]);改成printf("%c",str[i]);。

    在main的最后一个前加一句printf("\\n");。

参考技术B int str[N],ch;
你要的是字符,你定义整型干嘛追问

哦 这是我之前写的, 但是后来我改了之后 还是不对啊

ZZNUOJ_C语言1086:ASCII码排序(多实例测试)(完整代码)

题目描述

输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符。

输入

输入数据有多组,每组占一行,有三个字符组成,之间无空格。

输出

对于每组输入数据,输出一行,字符中间用一个空格分开。

样例输入

qwe
asd
zxc

样例输出

e q w
a d s
c x z

提示

注意:scanf(“%c”,&ch)格式读字符时,所有字符都是有效输入,如回车符、空格符等,如以下程序不能正常读入第二组>输入数据
 

while(scanf("%c%c%c",

以上是关于C语言问题:输入一行字符串,然后按照ASCII码大小进行升序排序。的主要内容,如果未能解决你的问题,请参考以下文章

C语言,将一个字符串中的元音字母复制到另一个字符串,然后按照ASCII码从小到大的顺序输出。

c语言ASCII码排序

ACM-ASCII码排序

ZZNUOJ_C语言1086:ASCII码排序(多实例测试)(完整代码)

C语言算法设计

c语言字符与ASCII码的转换