五个字符串用选择排序法排序

qq_36871330 2016-11-29 11:58:55
#include <string.h>


int main(int argc, char *argv[])
{ char str[5][50],temp[50],k[50];
int i,j;
printf("Please input 5 strings.\n");
for(i=0;i<5;i++)
gets(str[i]);
for(i=0;i<5;i++)
{
strcpy(k[50],str[i]);
for(j=i+1;j<5;j++)
if(strcmp (str[i],str[i+1])>0)strcpy(k[50],str[j]);

if(strcmp (k[50],str[i])!=0)
{
strcpy(temp[50],str[j]);
strcpy(str[j],str[i]);
strcpy(str[i],temp[50]);
}
}
for(i=0;i<5;i++)
printf("%s\n",str[i]);



return 0;
}
...全文
448 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_36871330 2016-12-01
  • 打赏
  • 举报
回复
thank you so much ~~
小灸舞 2016-12-01
  • 打赏
  • 举报
回复
只有定义的时候:char k[50];才代表定义一个长度是50的字符数组
使用的时候: k[50]代表第51个字符
小灸舞 2016-11-30
  • 打赏
  • 举报
回复
k[50]表示的是字符串的第51个字符,改成k才对 而且你的排序算法逻辑也有问题,自己单步调试再改下 单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。

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


int main(int argc, char *argv[])
{
	char str[5][50], temp[50], k[50];
	int i, j;
	printf("Please input 5 strings.\n");
	for (i = 0; i<5; i++)
		gets(str[i]);
	for (i = 0; i<5; i++)
	{
		strcpy(k, str[i]);
		for (j = i + 1; j<5; j++)
		if (strcmp(str[i], str[i + 1])>0)strcpy(k, str[j]);

		if (strcmp(k, str[i]) != 0)
		{
			strcpy(temp, str[j]);
			strcpy(str[j], str[i]);
			strcpy(str[i], temp);
		}
	}
	for (i = 0; i<5; i++)
		printf("%s\n", str[i]);



	return 0;
}
qq_36871330 2016-11-30
  • 打赏
  • 举报
回复
谢谢,可是为什么k【50】不是定义一个长度为50的字符数组而是第51个字符呢,不太能理解
qq_36871330 2016-11-30
  • 打赏
  • 举报
回复
谢谢~~还有我是新手嘛,不太知道.k[50]不是定义一个长度为50的字符数组吗?为什么是第51个字符啊?
paschen 2016-11-30
  • 打赏
  • 举报
回复
1、调用函数时不是写成 k[50],而是直接用k,同理其他 2、if(strcmp (str[i],str[i+1])>0)后面要加上大括号,否则只对他下面的一条语句有效
int main(int argc, char *argv[])
{	
	char str[5][50],temp[50],k[50];
	int i,j;
	printf("Please input 5 strings.\n");
	for(i=0;i<5;i++)
		gets(str[i]);
	for(i=0;i<5;i++)
	{
		strcpy(k,str[i]);
		for(j=i+1;j<5;j++)
			if(strcmp (str[i],str[i+1])>0)
			{
				strcpy(k,str[j]);

				if(strcmp (k,str[i])!=0)
				{   
					strcpy(temp,str[j]);
					strcpy(str[j],str[i]);
					strcpy(str[i],temp);
				}
			}
	}
	for(i=0;i<5;i++)
		printf("%s\n",str[i]);

	return 0;
}

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧