用C语言编程,将字符串s中的所有字符按ASCII值从小到大重新排序后,将排序后的字符串输出

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C语言编程,将字符串s中的所有字符按ASCII值从小到大重新排序后,将排序后的字符串输出相关的知识,希望对你有一定的参考价值。

编写 程序···
我只是个初学者,只要简单点的就好,
越简单越好懂,谢谢!

代码如下:

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

int main()

char str[] = "Hello World!", ch;
int i, j, len;

len = strlen(str);

for (i = 0; i < len - 1; i++) 
for (j = i + 1; j < len; j++) 
if (str[i] > str[j]) 
ch = str[i];
str[i] = str[j];
str[j] = ch;




printf("%s\\n", str);

return 0;

运行结果:

参考技术A #include "stdio.h"
#include "string.h"
int main()
char s[100],t;
int i,j,sum;
printf("Input:\n");
gets(s);
sum=strlen(s);
for(i=0;i<sum-1;i++)
for(j=0;j<sum-i-1;j++)
if(s[j+1]<=s[j])t=s[j];s[j]=s[j+1];s[j+1]=t;
printf("Output:\n");
puts(s);
return 0;
追问

我只是个初学者,你这个 对我来说有点复杂了,有木有简单点的啊!
越简单越好懂,谢谢!

追答

#include "stdio.h"
#include "string.h"
int main()
char s[100],t;
int i,j,sum;
printf("Input:\n");
gets(s);//输入字符串,以回车结束读取
sum=strlen(s);//求输入的字符串的长度
for(i=0;i<sum-1;i++)
for(j=0;j<sum-i-1;j++)
if(s[j+1]<=s[j])t=s[j];s[j]=s[j+1];s[j+1]=t;//检查相邻两个字符串的AIISC码,从小到大排序
printf("Output:\n");
puts(s);//输出排序好的字符串
return 0;

排序方法用的是起泡法,已经比较简单了

追问

能解释下这几个是什么意思吗?我们没有接触过
#include "string.h"
char s[100]
return 0

追答

#include "string.h" //包含头文件,使用strlen标准函数时要包含的头文件,就好比你用printf就要包含#include,加双引号和加括号的区别是双引号是从当前目录开始查找头文件,括号是从标准路径开始查找头文件,就是你安装编译器时的路径,一般区别不大
char s[100] //定义一个字符型数组,大小是100,你最多能输入100个字符
return 0//main函数的返回值,返回0代表程序正常结束

追问

哦,谢谢,给你满意!
下面还有个,能写下吗?对这个东西深深感到头疼···

题目:输入一串字符,将字符串中的字符反序输出

追答

#include
#include

void main()

void string(char fp[]);//声明函数
char ap[80];//定义字符数组
printf("please input string..\n");
gets(ap);//输入字符串,回车结束
string(ap);//调用函数,将字符串反序
printf("%s\n",ap);//输出反序后的字符串


void string(char fp[])

char l,x,t;
l=strlen(fp);//求要反序的字符串的长度

for(x=0; x<l/2; x++)//字符串交换的次数

t = fp[x];
fp[x] = fp[l-x-1];//第一个字符串和最后一个字符串交换,第二个和倒数第二个,依此类推
fp[l-x-1] = t;//交换完成

本回答被提问者采纳
参考技术B #include <stdio.h>
#include <string.h>
void sort(char *str,int len)

int i,j;
char ch;
for(i=0;i<len;i++)

for(j=0;j<len;j++)
if(str[i]<str[j])

ch = str[i];
str[i] = str[j];
str[j] = ch;




int main(void)

char str[120];
int len;
printf("请输入字符串:");
scanf("%s",str);
len = strlen(str);
sort(str,len);
printf("%s \n",str);
return 0;

谢谢!满意请采纳!

C语言,ASCII码怎么转换为字符?

我知道字符加‘’就是ASCII码,
但ASCII码怎么转换为字符,比如将 ASCII码48 转换为 数字0?

    直接(int)强制转换就是可以;

    printf("%x", 要转换的字符);

    字符就是一个对应的ASCII码,无需再转换了,得到它的ASCII码那直接printf ("%d" , a);就可以了,不存在转换这一说的,参考如下:

    #include <stdio.h>。

    int main(void)。

    char x。

    x = 's'。

    printf ("%d\\n", x)。

    return 0。

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

【名称由来】:

    是因为 C语言源自Ken Thompson发明的B语言,而 B语言则源自BCPL语言。

    1967年,剑桥大学的Martin Richards对CPL语言进行了简化,于是产生了BCPL(Basic Combined Programming Language)语言。

【基本特性】:

    高级语言:它是把高级语言的基本结构和语句与低级语言的实用性结合起来的工作单元。

    结构式语言:结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。

    代码级别的跨平台:由于标准的存在,使得几乎同样的C代码可用于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。

    使用指针:可以直接进行靠近硬件的操作,但是C的指针操作不做保护,也给它带来了很多不安全的因素。C++在这方面做了改进,在保留了指针操作的同时又增强了安全性,受到了一些用户的支持,但是,由于这些改进增加语言的复杂度,也为另一部分所诟病。

字符:是指计算机中使用的字母、数字、字和符号,包括:1、2、3、A、B、C、~!·#¥%……—*()——+等等。在 ASCII 编码中,一个英文字母字符存储需要1个字节。在 GB 2312 编码或 GBK 编码中,一个汉字字符存储需要2个字节。

【作用】:

    针对微软公共语言运行库的应用程序使用编码将字符表示形式从本机字符方案映射至其他方案。应用程序使用解码将字符从非本机方案映射至本机方案。

    电脑和通讯设备会使用字符编码的方式来表达字符。

参考技术A

#include<stdio.h>

voidmain()

unsignedchara;

printf("enterchar:");

scanf("%C",&a);

printf("ascii=%d",a);//强制转化为ascii码

扩展资料

C语言ASCII编码的来源

ASCII码

一个二进制位(Bit)有0、1两种状态,一个字节(Byte)有8个二进制位,有256种状态,每种状态对应一个符号,就是256个符号,从00000000到11111111。美国制定了一套英文字符与二进制位的对应关系,称为ASCII码,沿用至今。

ASCII码规定了128个英文字符与二进制的对应关系,占用一个字节(实际上只占用了一个字节的后面7位,最前面1位统一规定为0)。例如,字母a的的ASCII码为01100001,那么你暂时可以理解为字母a存储到内存之前会被转换为01100001,读取时遇到01100001也会转换为a。

参考技术B 回答

亲,你好,1、首先,定义两个整数变量a和A,并保存相应字母的ASCII码,如下图所示,然后进入下一步。  2、其次,定义一个字符变量ch以保存要转换的字符。,如下图所示,然后进入下一步。  3、接着,为字符变量ch分配一个初始值,并返回给小写的母亲a,如下图所示,然后进入下一步。  4、然后,将字符变量中的值分配给a以实现ASCII码的转换,如下图所示,然后进入下一步。  5、随后,在输出窗口中输出a的ASCII码,如下图所示,然后进入下一步。  6、接着,字符变量中的字符更改为大写A,如下图所示,然后进入下一步。  7、然后,大写字母A分配给整数变量A,A转换为ASCII码,如下图所示,然后进入下一步。  8、随后,在输出窗口中,输出大写字母A的ASCII码,如下图所示,然后进入下一步。  9、最后,在窗口中成功输出小写字母a和大写字母A的ASCII码,如下图所示。这样,问题就解决了。

提问

你好,没有看见如图所示[捂脸][捂脸]

回答

不能一起发图片

提问

可以发下吗,我看不来

回答

图片无法发出去,非常抱歉

参考技术C //函 数 名:CharToHex()
//功能描述:把ASCII字符转换为16进制
//函数说明:
//调用函数:
//全局变量:
//输 入:ASCII字符
//返 回:16进制
/////////////////////////////////////////////////////////////////////
unsigned char CharToHex(unsigned char bHex)
if((bHex>=0)&&(bHex<=9))
bHex += 0x30;
else if((bHex>=10)&&(bHex<=15))//大写字母
bHex += 0x37;
else bHex = 0xff;
return bHex;

/////////////////////////////////////////////////////////////////////
//函 数 名:HexToChar()
//功能描述:把16进制转换为ASCII字符
//函数说明:
//调用函数:
//全局变量:
//输 入:16进制
//返 回:ASCII字符
/////////////////////////////////////////////////////////////////////
unsigned char HexToChar(unsigned char bChar)
if((bChar>=0x30)&&(bChar<=0x39))
bChar -= 0x30;
else if((bChar>=0x41)&&(bChar<=0x46))//大写字母
bChar -= 0x37;
else if((bChar>=0x61)&&(bChar<=0x66))//小写字母
bChar -= 0x57;
else bChar = 0xff;
return bChar;
参考技术D #include <stdio.h>
#include <stdlib.h>

int main()

int i=48;
char a;
a = (char)i;//这一步是把ascii码转换成字符,48对应字符‘0’
int c;
c = (int)a;//这一步是把字符再转换成ascii码
printf("%c\n",a);//
printf("%d\n",c);
return 0;

以上是关于用C语言编程,将字符串s中的所有字符按ASCII值从小到大重新排序后,将排序后的字符串输出的主要内容,如果未能解决你的问题,请参考以下文章

如何用C语言编程将字符串s中的所有字符按ASCII值从小到大重新排序后输出字符串?

c语言ASCII码排序

c语言中如何将一个字符ascii码转换为整型数

c中如何输出一个字符的ASCII码

在C语言中怎样判断一个字符串中是不是包含另一个字符串

在C语言中怎样判断一个字符串中是不是包含另一个字符串