|
10鱼币
小白求助:用于排序的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[5])//五个字符串排序
- {
- char *p;
- int min,i=0,j;
- for(i = 0;i<4;i++)
- {
- min = i;
- for(j = i+1;j<=4;j++)
- {
- if(*t[min]>*t[j])
- min = j;
- }
- p = t[i];
- t[i] = t[min];
- t[min] = p;
- }
-
-
- for(i=0;i<5;i++)//输出字符串
- cout<<t[i]<<endl;
- }
- int main()
- {
- char *t[5];//用于记录五个字符串的位置
-
- cout<<"请输入五个字符串:"<<endl;
- string s0,s1,s2,s3,s4;
- t[0] = &s0[0];
- t[1] = &s1[0];
- t[2] = &s2[0];
- t[3] = &s3[0];
- t[4] = &s4[0];
- cin>>s0>>s1>>s2>>s3>>s4;//输入字符串
-
- cout<<endl;
- Order_2(t);
- return 0;
-
- }
复制代码
- void Order_2(char *t[5])//五个字符串排序
- {
- char *p;
-
- int min,i=0,j;
- for(i = 0;i<4;i++)
- {
- min = i;
- for(j = i+1;j<=4;j++)
- {
- if(*t[min]>*t[j])
- min = j;
- }
- p = t[i];
- t[i] = t[min];
- t[min] = p;
- }
-
-
- for(i=0;i<5;i++)//输出字符串
- cout<<t[i]<<endl;
-
- }
- int main()
- {
- char *t[5];//用于记录五个字符串的位置
-
- cout<<"请输入五个字符串:"<<endl;
- string s0,s1,s2,s3,s4;
- cin>>s0>>s1>>s2>>s3>>s4;//输入字符串
-
- cout<<endl;
- //把对 string 的取址放在输入字符串之后就可以了
- //因为输入之前,string 对象并没有为字符串分配内存空间,取址操作取来的不知道是什么东西
- //输入之后,string 对象已经为字符串分配了内存,就可以正确取址了。
- //不过,不建议这么操作啊,要么都用char [],要么都用string对象
- t[0] = &s0[0];
- t[1] = &s1[0];
- t[2] = &s2[0];
- t[3] = &s3[0];
- t[4] = &s4[0];
- Order_2(t);
- return 0;
-
- }
-
复制代码
|
|