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]);
先定义排序的规则,这个是从小大
大到小,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");。
你要的是字符,你定义整型干嘛追问
哦 这是我之前写的, 但是后来我改了之后 还是不对啊
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码从小到大的顺序输出。