从键盘输入五个由字母组成的字符串,按字母顺序排序输出,不能用strcmp函数。

如题所述

第1个回答  2012-06-06
#include <algorithm>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
void main()
{
vector<string> v;
string s;

for(int i=0;i<5;++i)
{
cin>>s;
v.push_back(s);
}
sort(v.begin(),v.end());
vector<string>::iterator iter=v.begin();
for(;iter!=v.end();++iter)
{
cout<<*iter<<endl;
}

}
第一次写没看题意

C语言要求通过键盘输入5字符串,再调用函数sort给字符串从小到大排列,再...
你可以把strs直接改成字符串数组,char strs[5][N],但你后面的函数参数类型也要跟着改。如果你不想改动其他函数,还继续使用指针数组,也是可以的。你可以用动态内存来写输入部分:(头文件添加malloc.h)include <stdio.h>#include <malloc.h>#define N 100\/\/每个字符串最大长度int main(){ ...

输入五个名字按照字母首位顺序输出C语言
这是一个字符串排序问题。思路,定义五个char*的变量,然后使用getchars()函数获取这五个名字,排序算法有冒泡排序、插入排序等多种方式,你如果不熟可以使用冒泡排序的算法,把这五个字符串排序,然后再输出。比较字符串时,需要先比较首字符,如果首字符一样,则通过指针后移比较。for(char* p=?,c...

任意输入5个字符串,按升序排序后输出
排序算法有问题,应该是选择排序吧,k是最小字符串下标初始化为i,判断strcmp(str[k],str[j])>0,则说明str[j]更小,即k=j,每次执行5-i次,依次升序排序。include "stdafx.h"include <iostream> include <cstring> using namespace std;int main(){ char *str[5], p[100];int i, j,...

c语言书上的一道编程题,输入5个字符串,并按字母顺序排列后输出。程序如...
第一个for循环 for(i=0;j<5;i++),改成 for(i=0;i<5;i++)就没问题了 应该是书排版错误,如果是for(i=0;j<5;i++),下面的循环里面j已经等于5了,这个循环只执行了一次,相应的排序也只做了一次,设计肯定不是这样的,因此断定是排版错误,你自己分析分析 ...

c语言怎么不用strcmp按字典顺序对多个字符串排序?
strcmp子函数的功能是比较str1和str1字符串的每个字符 用一个for循环来实现这个功能的 功能实现,模拟着函数 void mystrcmp(char *str1,char *str2){ int i;for(i=0;str1[i]||str2[i];i++)if(str1[i]<str2[i])retrun -1;else if(str1[i]>str2[i])return 1;return 0;} strc...

...按由小到大(我想应该是strcmp函数比较)的顺序输出
C语言:输入5个字符串,按由小到大(我想应该是strcmp函数比较)的顺序输出 30 用string函数编写源程序,我看了几个知道里的回答,很多都是无法实现的,... 用string函数编写源程序,我看了几个知道里的回答,很多都是无法实现的, 展开 我来答 答题抽奖 首次认真答题后 即可获得3次抽奖机会,100%中奖。 更多问题...

输入五个字符串,要求按照字母顺序(即按ASCII码从小到大的顺序)输出这五...
printf("请输入%d个字符串:\\n",N);for(i=0;i<N;i++){ gets(str[i]);} for(i=0;i<N-1;i++)for(j=i+1;j<N;j++)if(strcmp(str[i],str[j])>0){ strcpy(temp,str[i]);strcpy(str[i],str[j]);strcpy(str[j],temp);} printf("按字母顺序输出这%d个字符串:\\n",N...

C语言,输入5个字符串,按由小到大的顺序输出。非常急,求指导!
if (strcmp(*q, *s) > 0){ t = *q;q = *s;s = t;} } } } int main(){ char *a[5], b[5][99], **p;int i;for (i = 0; i < 5; i++)a[i] = b[i];printf("请依次输入五个字符串:\\n");for (i = 0; i < 5; i++)scanf("%s", a[i]);p = a...

从键盘输入5个学生的姓名,把它们按字典顺序排序后输出
本程序的第一个for语句中,用gets函数输入五个名字符串。上面说过C语言允许把一个二维数组按多个一维数组处理,本程序说明cs[5][20]为二维字符数组,可分为五个一维数组cs[0],cs[1],cs[2],cs[3],cs[4]。因此在gets函数中使用cs[i]是合法的。 在第二个for语句中又嵌套了一个for语句组成...

...程序运行不了(用指针数组将五个字符串按大小排序)
sort函数这里加上括号就好了 if(strcmp(name[i],name[j])>0){ p=name[i];name[i]=name[j];name[j]=p;}

相似回答
大家正在搜