| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 742 人关注过本帖
标题:[求助]为什么我的只冒一次泡??
只看楼主 加入收藏
kyan54
Rank: 1
等 级:新手上路
帖 子:100
专家分:0
注 册:2006-4-7
收藏
 问题点数:0 回复次数:10 
[求助]为什么我的只冒一次泡??

题目:输入多个城市的名字,按冒泡法排列好输出
我自己写了,但是只能排列一次。。高手指教

#include<stdio.h>
#include<string.h>
#define CITYNUM 5
void main()
{
int i,j,k,num;
char city[CITYNUM][20];
char str[80];

num=0;
for (i=0;i<CITYNUM;i++)
{
printf("input the name of the %dth city:",i+1);
gets(str);
if (str[0]==0)
break;
if (strlen(str)>19)
{
i--;
continue;
}
strcpy(city[i],str);
num++;
}

for (i=1;i<num;i++)
{
for (j=0;j<num-i;j++)
if ( stricmp ( city[j],city[j+1] )>0 )
{
strcpy(str,city[i]);
strcpy(city[i],city[k]);
strcpy(city[k],str);
}
for (i=0;i<CITYNUM;i++)
printf("%s\n",city[i]);
}
}


我试了好多次。。米办法了。。高手指教下。。谢谢

搜索更多相关主题的帖子: include 
2006-05-10 18:35
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 


日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-10 18:41
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 

#include <stdio.h>
#include <conio.h>
#include <string.h>
#define N 5

static void BubbleSort(char str[][30]);

int main(void)
{
char str[N][30];
int i;

printf("Enter five city name: ");
for (i = 0; i < N; i++)
{
gets(str[i]);
}

BubbleSort(str);

for (i = 0; i < N; i++)
{
puts(str[i]);
}

getch();
return 0;
}/* main */

static void BubbleSort(char str[][30])
{
char temp[30];
int i, j;

for (i = 1; i < N; i++)
{
for (j = 0; j < N - 1; j++)
{
if (strcmp(str[j], str[j + 1]) > 0)
{
strcpy(temp, str[j]);
strcpy(str[j], str[j + 1]);
strcpy(str[j + 1], temp);
}
}
}
}/* BubbleSort */




日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-10 18:51
zhangjuan
Rank: 1
等 级:新手上路
帖 子:992
专家分:0
注 册:2006-1-19
收藏
得分:0 
楼主你的程序挺乱的,我建议改用指针

2006-05-10 19:08
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
我倒,指针有数组清晰吗,美女

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-10 19:21
zhangjuan
Rank: 1
等 级:新手上路
帖 子:992
专家分:0
注 册:2006-1-19
收藏
得分:0 

指针优势很多,只不过没有数组那么好用而已,而且不用限定每个字符串的位数,增加了灵活度,而且数组比较浪费空间


2006-05-10 19:24
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
我更倒,你从那里能看出数组浪费空间啊

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-10 19:25
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
指针也就是动态分配,你怎么不限定字符个数啊

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-10 19:26
zhangjuan
Rank: 1
等 级:新手上路
帖 子:992
专家分:0
注 册:2006-1-19
收藏
得分:0 
以下是引用论坛在2006-5-10 19:26:00的发言:
指针也就是动态分配,你怎么不限定字符个数啊

指针并不一定是动态分配,你看定义的二维数组都有下限的,最大是为20不是吗,如果没有20位,那不就浪费了吗,你看看指针那一章吧,自然会明白


2006-05-10 19:30
kyan54
Rank: 1
等 级:新手上路
帖 子:100
专家分:0
注 册:2006-4-7
收藏
得分:0 

我还没学到指针。。
不过问题解决了。。谢谢大家
我把正确的贴出来
#include<stdio.h>
#include<string.h>
#define CITYNUM 5
void main()
{
int i,j,num;
char city[CITYNUM][20];
char str[80];

num=0;
for (i=0;i<CITYNUM;i++)
{
printf("input the name of the %dth city:",i+1);
gets(str);
if (str[0]==0)
break;
if (strlen(str)>19)
{
i--;
continue;
}
strcpy(city[i],str);
num++;
}

for (i=0;i<num;i++)
{
for (j=i+1;j<num;j++)
if ( stricmp ( city[i],city[j] )>0 )
{
strcpy(str,city[i]);
strcpy(city[i],city[j]);
strcpy(city[j],str);
}
}
for (i=0;i<CITYNUM;i++)
printf("%s\n",city[i]);
}


if (只要你感兴趣,有毅力) printf(\"就什么都不是问题~!\");
2006-05-10 20:03
快速回复:[求助]为什么我的只冒一次泡??
数据加载中...
 
   



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

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