输入三个字符串,按从小到大输出

weixin_45137110 2019-05-27 06:34:07
帮我看一下哪里错了。。输出来是乱码 //输入三个字符串,按字母从小到大的顺序输出 #include <iostream> #include <string.h> using namespace std; int main() { void fun(char *str[]); char *str[3]; char name1[50],name2[50],name3[50]; cin>>name1[50]>>name2[50]>>name3[50]; int i; str[0]=name1; str[1]=name2; str[2]=name3; fun(str); for(i=0;i<3;i++) cout<<str[i]; return 0; } void fun(char *str[]) { int i,j,k; char *temp; for(i=0;i<2;i++) { k=i; for(j=2;j<3;j++) { if (strcmp(str[i],str[j])>0) k=j; temp=str[i]; str[i]=str[k]; str[k]=temp; } } }
...全文
463 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
潋燏 2021-11-13
  • 打赏
  • 举报
回复
//提供一个别的思路
#include<iostream>
#include<string>
using namespace std;
int main()
{string string1,string2,string3,temp;
cout<<"please input three strings:"<<endl;
cin>>string1>>string2>>string3;
if(string2>string3)
{
    temp = string2;
    string2 = string3;
    string3 = temp;
//保证string2<=string3
}
if(string1<=string2)
    cout<<string1<<" "<<string2<<" "<<string3<<endl;
else if(string1<=string3)
    cout<<string2<<" "<<string1<<" "<<string3<<endl;
else
    cout<<string2<<" "<<string3<<" "<<string1<<endl;
return 0;}

```c++
weixin_45137110 2019-05-27
  • 打赏
  • 举报
回复
引用 1 楼 jsx_SEVEN的回复:
应该是输入一个字符串回车直接是乱码; main()也是一个函数,fun()的声明可以放在外面; name1[50]声明时50指的的长度,使用时只有0~49,cin>>name1[50]是越界的 直接使用数组名就行,cin>>name1>>name2>>name3;

#include <iostream>
#include <string.h>
using namespace std;
void fun(char *str[]);
int main()
{
	char *str[3];
	char name1[50], name2[50], name3[50];
	cin >> name1 >> name2 >> name3;
	int i;
	str[0] = name1;
	str[1] = name2;
	str[2] = name3;

	fun(str);
	for (i = 0; i < 3; i++)
		cout << str[i];
	return 0;
}
void fun(char *str[])
{
	int i, j, k;
	char *temp;
	for (i = 0; i < 2; i++)
	{
		k = i;
		for (j = 2; j < 3; j++)
		{
			if (strcmp(str[i], str[j]) > 0) k = j;
			temp = str[i];
			str[i] = str[k];
			str[k] = temp;
		}
	}
}
哦哦懂了,谢谢大佬!!
周末ZhouMo 2019-05-27
  • 打赏
  • 举报
回复
应该是输入一个字符串回车直接是乱码; main()也是一个函数,fun()的声明可以放在外面; name1[50]声明时50指的的长度,使用时只有0~49,cin>>name1[50]是越界的 直接使用数组名就行,cin>>name1>>name2>>name3;

#include <iostream>
#include <string.h>
using namespace std;
void fun(char *str[]);
int main()
{
	char *str[3];
	char name1[50], name2[50], name3[50];
	cin >> name1 >> name2 >> name3;
	int i;
	str[0] = name1;
	str[1] = name2;
	str[2] = name3;

	fun(str);
	for (i = 0; i < 3; i++)
		cout << str[i];
	return 0;
}
void fun(char *str[])
{
	int i, j, k;
	char *temp;
	for (i = 0; i < 2; i++)
	{
		k = i;
		for (j = 2; j < 3; j++)
		{
			if (strcmp(str[i], str[j]) > 0) k = j;
			temp = str[i];
			str[i] = str[k];
			str[k] = temp;
		}
	}
}

33,311

社区成员

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

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