求个C++程序设计.....谢谢
题目:输入一批字符串(不超过30条),以字符串“end”作为输入结束标志,请按要求编程完成下述功能:
1)字符串输入;
2)输出最大、最小的字符串及其位置;
3)对字符串进行升序排列;
4)插入一条字符串,结果仍按升序排列;
5)查找指定字符串的位置;
6)删除指定的字符串。
要求:
1)上述各功能请分别用函数实现;
2)输入输出要有必要的提示说明。
答案:#include<iostream>
#include<string>
using namespace std;
string str[30];
int i;
void Input()
{
cout<<"输入字符串:"<<endl;
for(i=0;i<30;i++)
{
cin>>str[i];
if(str[i]=="end")
break;
}
cout<<"输入的字符串是:"<<endl;
for(int j=0;j<i;j++)
cout<<str[j]<<" ";
cout<<endl;
}
void Maxmin()
{
string max,min;
int pos1=0;
int pos2=0;
max=min=str[0];
for(int j=1;j<i;j++)
{
if(str[j]>max)
{
max=str[j];
pos1=j;
}
if(str[j]<min)
{
min=str[j];
pos2=j;
}
}
cout<<"最大的字符串:"<<max<<"位置在:"<<pos1+1<<endl;
cout<<"最小的字符串:"<<min<<"位置在:"<<pos2+1<<endl;
}
void Sortup()
{
string temp;
for(int j=0;j<i;j++)
{ for(int k=j;k<i;k++)
if(str[j]>str[k])
{
temp=str[j];
str[j]=str[k];
str[k]=temp;
}
}
cout<<"升序排列:"<<endl;
for(int j=0;j<i;j++)
cout<<str[j]<<" ";
cout<<endl;
}
void Insert()
{
string str1;
cout<<"输入插入的字符串:"<<endl;
cin>>str1;
Sortup;
int n;
for(n=0;n<i;n++)
{
if(str[n]>str1)
break;
}
i=i+1;
for(int m=i;m>n;m--)
str[m]=str[m-1];
str[n]=str1;
cout<<"插入字符串"<<str1<<"后:"<<endl;
for(int m=0;m<i;m++)
cout<<str[m]<<" ";
cout<<endl;
}
void Find()
{
string str2;
int j;
cout<<"输入查找的字符串:"<<endl;
cin>>str2;
for( j=0;j<i;j++)
if(str[j]==str2) break;
if(j!=i)
{
cout<<"查找成功。该字符串在"<<j+1<<"位置上"<<endl;
}
else
cout<<"删除不成功"<<endl;
}
void Delete()
{
string str3;
int j;
cout<<"输入删除的字符串:"<<endl;
cin>>str3;
for( j=0;j<i;j++)
if(str[j]==str3) break;
if(j!=i)
{
cout<<"删除成功;"<<endl;
i=i-1;
for(int p=j;p<i;p++)
str[p]=str[p+1];
for(int p=0;p<i;p++)
cout<<str[p]<<" ";
}
else
cout<<"没有该字符串,删除失败"<<endl;
}
int main()
{
while(1)
{cout<<"
选择功能:(按0退出)"<<endl;
cout<<"
1-----输入字符串,(以"end"结束输入)"<<endl;
cout<<"
2-----查大小"<<endl;
cout<<"
3-----升序排列"<<endl;
cout<<"
4-----插入字符串"<<endl;
cout<<"
5-----删除字符串"<<endl;
cout<<"
6-----查找字符串"<<endl;
char c;
cin>>c;
switch(c)
{
case '1': Input();break;
case '2': Maxmin();break;
case '3': Sortup();break;
case '4': Insert();break;
case '5': Delete();break;
case '6': Find();break;
default: break;
}
if(c=='0')
break;
}
return 0;
}
上一个:C++的简单的入门级问题
下一个:基于VS2005的C++详细语法?