C++输入问题!
小白求助:用于排序的order_2函数总是少传入一个字符串,请各位大神帮忙看看是哪里有问题(鞠躬)题目要求:实现一个C++程序,能够对用户输入的若干个字符串,将每个字符串的首字母按照英文字典排序,由小到大顺序输出。
输入输出如图:
#include <iostream>
#include <string.h>
using std::string;
using std::cout;
using std::cin;
using std::endl;
void Order_2(char *t)//五个字符串排序
{
char *p;
int min,i=0,j;
for(i = 0;i<4;i++)
{
min = i;
for(j = i+1;j<=4;j++)
{
if(*t>*t)
min = j;
}
p = t;
t = t;
t = p;
}
for(i=0;i<5;i++)//输出字符串
cout<<t<<endl;
}
int main()
{
char *t;//用于记录五个字符串的位置
cout<<"请输入五个字符串:"<<endl;
string s0,s1,s2,s3,s4;
t = &s0;
t = &s1;
t = &s2;
t = &s3;
t = &s4;
cin>>s0>>s1>>s2>>s3>>s4;//输入字符串
cout<<endl;
Order_2(t);
return 0;
}
void Order_2(char *t)//五个字符串排序
{
char *p;
int min,i=0,j;
for(i = 0;i<4;i++)
{
min = i;
for(j = i+1;j<=4;j++)
{
if(*t>*t)
min = j;
}
p = t;
t = t;
t = p;
}
for(i=0;i<5;i++)//输出字符串
cout<<t<<endl;
}
int main()
{
char *t;//用于记录五个字符串的位置
cout<<"请输入五个字符串:"<<endl;
string s0,s1,s2,s3,s4;
cin>>s0>>s1>>s2>>s3>>s4;//输入字符串
cout<<endl;
//把对 string 的取址放在输入字符串之后就可以了
//因为输入之前,string 对象并没有为字符串分配内存空间,取址操作取来的不知道是什么东西
//输入之后,string 对象已经为字符串分配了内存,就可以正确取址了。
//不过,不建议这么操作啊,要么都用char [],要么都用string对象
t = &s0;
t = &s1;
t = &s2;
t = &s3;
t = &s4;
Order_2(t);
return 0;
}
我选择用string类来替换char *
比如:
#include <iostream>
#include <string>
int main() {
std::string t = { "abc", "def","ghijk","lmn","opq" };
std::cout << t << std::endl;
std::cout << t << std::endl;
//string类允许使用下标来访问字符串中字符
//t表示t这个string类的数组的第一个
//t表示string类的数组的第一个的第二个字符
return 0;
} 谢谢大佬!
页:
[1]