题目:输入多个城市的名字,按冒泡法排列好输出
我自己写了,但是只能排列一次。。高手指教
#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 <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 */
----------------解决方案--------------------------------------------------------
楼主你的程序挺乱的,我建议改用指针
----------------解决方案--------------------------------------------------------
我倒,指针有数组清晰吗,美女
----------------解决方案--------------------------------------------------------
指针优势很多,只不过没有数组那么好用而已,而且不用限定每个字符串的位数,增加了灵活度,而且数组比较浪费空间
----------------解决方案--------------------------------------------------------
我更倒,你从那里能看出数组浪费空间啊
----------------解决方案--------------------------------------------------------
指针也就是动态分配,你怎么不限定字符个数啊
----------------解决方案--------------------------------------------------------
指针也就是动态分配,你怎么不限定字符个数啊
指针并不一定是动态分配,你看定义的二维数组都有下限的,最大是为20不是吗,如果没有20位,那不就浪费了吗,你看看指针那一章吧,自然会明白
----------------解决方案--------------------------------------------------------
我还没学到指针。。
不过问题解决了。。谢谢大家
我把正确的贴出来
#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]);
}
----------------解决方案--------------------------------------------------------