| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1918 人关注过本帖, 2 人收藏
标题:字符串排序问题,求助.
只看楼主 加入收藏
当当
Rank: 1
等 级:新手上路
帖 子:235
专家分:0
注 册:2004-4-30
收藏(2)
 问题点数:0 回复次数:8 
字符串排序问题,求助.

编写一个程序,将下列名称按第一个字母排序. George Albert Tina Xavier Roger Tim William 我开了个头,就不知道再从哪里下手了,晕死了.希望能够用ACSII码来进行比较,这样我容易懂点。 #include <stdio.h> void main() { char ch[7][8],temp[8]; int i,j,k; i=j=k=0; printf("请输入单词:"); for(i=0,j=0;i<7,j<8;i++,j++) //不明白为什么要输入8个单词才会跳出循环,i<7应该只循环6次啊,改成i<6就OK了!郁闷中…… { scanf("%s",ch); } printf("\n"); for(i=0;i<6;i++) { for(k=i+1;k<7;k++) if('ch[i][0]'>'ch[k][0]')//第一个单词首字母ACSII码与第二个单词首字母ACSII码进行比较; { temp[8]=ch[k][0];//这里我就不知道怎么搞了,我的意思是将首字母ACSII码小的单词整个放进临时字符串temp[8]中,但是这样,只是将第一个字母放进去了,我现在需要将整个单词放进去,不知道思路是否正确,现在被卡住了,郁闷中…… ch[][] } } }

[此贴子已经被作者于2004-05-30 17:55:02编辑过]

搜索更多相关主题的帖子: 字符 printf 单词 
2004-05-30 17:15
空前
Rank: 1
等 级:新手上路
帖 子:1146
专家分:0
注 册:2004-5-11
收藏
得分:0 

for(i=0,j=o;i<7,j<8;i++,j++)

应该是循环八次,因为中间是一个逗号表达式,结果为最后一个表达式的值,即j<8,

j是从0开始的,到7结束,是八次

后面的应该用 "字符串复制"这个函数,对字符串赋值.不能用"="进行赋值


2004-05-30 18:27
当当
Rank: 1
等 级:新手上路
帖 子:235
专家分:0
注 册:2004-4-30
收藏
得分:0 

那上面的这段程序应该怎么样编写呢。我写成这样了,但是有问题,请指教,并写出正确程序,谢谢!

#include <stdio.h> #include <string.h> void main() { char ch[7][8]; char temp[8]; int i,j;i=j=0; printf("请输入单词:\n"); for(i=0;i<7;i++) { scanf("%s",ch); } printf("\n"); for(i=0;i<6;i++) for(j=i+1;j<7;j++) { if(strcmp(ch[i],ch[j])) { strcpy(temp,ch[j]); strcpy(ch[j],ch[i]); strcpy(ch[i],temp); } } for(i=0;i<6;i++) printf("%s\n",ch[i]); }

[此贴子已经被作者于2004-05-30 21:25:41编辑过]


学好编程就能编出自己的未来! 加油!自信!努力!奋斗!
2004-05-30 20:56
jiely
Rank: 1
等 级:新手上路
帖 子:106
专家分:0
注 册:2004-5-15
收藏
得分:0 

#include <stdio.h> #include <string.h> main() { char str2[20]; char str[8][20]; int i,j; printf("Please input:"); for (i=1;i<8;i++) {gets(str[i]);} for( i=1;i<7;i++) for (j=1;j<=7-i;j++) if(strcmp(str[j],str[j+1])>0) { strcpy(str2,str[j]); strcpy(str[j],'\0'); strcpy(str[j],str[j+1]); strcpy(str[j+1],'\0'); strcpy(str[j+1],str2); } printf("The sorted Letter is\n"); for(i=0;i<7;i++) printf("%s ",str[i]); getch(); }


我的爱好:C和数据库!正在学VC++ 我的QQ:345895839,有共同爱好的加我!期待着与你共同进步!
2004-05-31 10:58
jiely
Rank: 1
等 级:新手上路
帖 子:106
专家分:0
注 册:2004-5-15
收藏
得分:0 

输入一个单词按回车一次,程序可以运行~~,用的是简单的冒泡排序~


我的爱好:C和数据库!正在学VC++ 我的QQ:345895839,有共同爱好的加我!期待着与你共同进步!
2004-05-31 11:00
jiely
Rank: 1
等 级:新手上路
帖 子:106
专家分:0
注 册:2004-5-15
收藏
得分:0 

楼主的程序参看一下我写的程序就可以看出自己出错在哪儿了.

1.冒泡的循环条件有点错误

2. 执行strcpy(temp,ch[j]);后,应使ch[j]为0,为什么??应该知道吧....


我的爱好:C和数据库!正在学VC++ 我的QQ:345895839,有共同爱好的加我!期待着与你共同进步!
2004-05-31 11:08
当当
Rank: 1
等 级:新手上路
帖 子:235
专家分:0
注 册:2004-4-30
收藏
得分:0 

版主的程序执行起来有错误啊,不信你可以执行一下!


学好编程就能编出自己的未来! 加油!自信!努力!奋斗!
2004-06-01 10:20
当当
Rank: 1
等 级:新手上路
帖 子:235
专家分:0
注 册:2004-4-30
收藏
得分:0 

终于搞出来了,正确的程序是这样的: #include <stdio.h> #include <string.h> void main() { /*定义变量部分*/ int i=0,j; char x[7][8]; char temp[8]; /*输入单词部分*/ printf("请输入单词:\n"); for(i=0;i<7;i++) gets(x[i]); /*排序部分*/ for(i=0;i<7-1;i++) { for(j=i+1;j<7;j++) { if(strcmp(x[i],x[j])>0) { strcpy(temp,x[i]); strcpy(x[i],x[j]); strcpy(x[j],temp); } } } /*排序后结果*/ printf("排序后结果:\n"); for(i=0;i<7;i++) printf("%s\n",x[i]); }

版主这里排序的过程怎么这么复杂啊,给我讲讲行吗? if(strcmp(str[j],str[j+1])>0) { strcpy(str2,str[j]); strcpy(str[j],'\0'); strcpy(str[j],str[j+1]); strcpy(str[j+1],'\0'); strcpy(str[j+1],str2); }

[此贴子已经被作者于2004-06-01 10:51:13编辑过]


学好编程就能编出自己的未来! 加油!自信!努力!奋斗!
2004-06-01 10:50
w857191509
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2015-8-25
收藏
得分:0 
PD
没想到也能留下我的痕迹,感觉战纪穿越了
2015-08-30 19:52
快速回复:字符串排序问题,求助.
数据加载中...
 
   



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

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