| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 454 人关注过本帖
标题:ASCII 码排序问题
只看楼主 加入收藏
封尘之魂
Rank: 2
等 级:论坛游民
帖 子:12
专家分:27
注 册:2014-4-17
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
ASCII 码排序问题
描述
输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符。
输入
第一行输入一个数N,表示有N组测试数据。后面的N行输入多组数据,每组输入数据都是占一行,有三个字符组成,之间无空格。
输出
对于每组输入数据,输出一行,字符中间用一个空格分开。
样例输入
3
qwe
asd
zxc
程序代码:

 #include<stdio.h>

 int main()

 {

 int i,j,t,k,N;

 char a[100][3];

 printf("请输入字符行数N");

 scanf("%d",&N);

 printf("请输入每行的三个字符");

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

 {

 for(j=0;j<3;j++)

 scanf("%c",&a[i][j]);

 printf("\n");

 }

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

 {

 for(j=0;j<3;j++)

 for(k=0;k<2-j;k++)

 if(a[i][k]>a[i][k+1])

 {

 t=a[i][k];

 a[i][k]=a[i][k+1];

 a[i][k+1]=t;

 }

 }

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

 for(i=0;i<3;i++);
  printf("%c",a[i][j]);
  printf("\n");


 }
例输出
e q w
a d s
c x z
来源

[ 本帖最后由 封尘之魂 于 2014-4-26 17:32 编辑 ]
2014-04-26 16:34
vvvcuu
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:353
专家分:1253
注 册:2014-4-22
收藏
得分:20 
你的问题是什么?

测试了下你的代码, 运行结果很不理想. 基本上一点都不符合你的初中.

建议:1,  使用二维数组来存储输入的数据.
     2,  既然是根据ASCII码排序,就没必要限制用户输入的字符是什么.
     3,  对输入格式化.
     4,  给用户的提示人性化一些.  当程序运行时,黑色的屏幕上显示"请输入组数i及其整型数据"恐怕只有编写程序的人自己明白.

请修改你的代码, 调试运行后把代码和问题贴上来.

[ 本帖最后由 vvvcuu 于 2014-4-26 17:18 编辑 ]

代码测试环境:  WinXP+C-Free5.0.
2014-04-26 17:01
封尘之魂
Rank: 2
等 级:论坛游民
帖 子:12
专家分:27
注 册:2014-4-17
收藏
得分:0 
回复 2 楼 vvvcuu
没有输出结果
2014-04-26 17:13
vvvcuu
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:353
专家分:1253
注 册:2014-4-22
收藏
得分:0 
回复 3 楼 封尘之魂
怎么叫没有输出结果.  输出结果是由的,只是不符合你的意思而已.


我输入了一些数据, 结果CPU一直在那计算, 要不是我强行拉住它,不知道得计算到什么时候呢.

代码测试环境:  WinXP+C-Free5.0.
2014-04-26 17:21
封尘之魂
Rank: 2
等 级:论坛游民
帖 子:12
专家分:27
注 册:2014-4-17
收藏
得分:0 
回复 4 楼 vvvcuu
我用的gcc输入之后真的就是没输出
2014-04-26 17:24
封尘之魂
Rank: 2
等 级:论坛游民
帖 子:12
专家分:27
注 册:2014-4-17
收藏
得分:0 
回复 2 楼 vvvcuu
我用的那个gcc编译器我不定义数组个数编译器报错
2014-04-26 17:26
封尘之魂
Rank: 2
等 级:论坛游民
帖 子:12
专家分:27
注 册:2014-4-17
收藏
得分:0 
回复 4 楼 vvvcuu
抱歉刚才贴错代码了
程序代码:

 #include<stdio.h>

 int main()

 {

 int i,j,t,k,N;

 char a[100][3];

 printf("请输入字符行数N");

 scanf("%d",&N);

 printf("请输入每行的三个字符");

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

 {

 for(j=0;j<3;j++)

 scanf("%c",&a[i][j]);

 printf("\n");

 }

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

 {

 for(j=0;j<3;j++)

 for(k=0;k<2-j;k++)

 if(a[i][k]>a[i][k+1])

 {

 t=a[i][k];

 a[i][k]=a[i][k+1];

 a[i][k+1]=t;

 }

 }

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

 for(i=0;i<3;i++);
  printf("%c",a[i][j]);
  printf("\n");


 }
2014-04-26 17:28
vvvcuu
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:353
专家分:1253
注 册:2014-4-22
收藏
得分:0 
C99才支持可变长数组, C89不支持.  主流的编译器默认都不支持可变长数组. 所以才建议你用二维数组.

没输出是你的输入不够, 你进行多次输入试试,  重复按几个字符就按enter,你试试.  能累死你那CPU.

代码测试环境:  WinXP+C-Free5.0.
2014-04-26 17:29
快速回复:ASCII 码排序问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013538 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved