c语言编个小程序

定义一个二维的字符串数组,输入若干个字符串,按升序排序(看首字母)后输出。要求设计通用的排序函数,输入参数为字符串数组和要排序的字符串的个数。谢谢!#include<io... 定义一个二维的字符串数组,输入若干个字符串,按升序排序(看首字母) 后输出。要求设计通用的排序函数,输入参数为字符串数组和要排序的字符串的个数。谢谢!
#include<iostream.h>
#include<string.h>
void f(char *x[],int n)
{
int i,j;
char *p;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
{
if(strcmp(x[i],x[j])>0)
{
p=x[i];x[i]=x[j];x[j]=p;
}
}
for(i=0;i<n;i++)
cout<<x[i]<<'\t';
}

void main(void)
{
cout<<"输入若干个字符串"<<endl;
int i,n;
我就搞到这边,但不知道主函数怎么编个通用的,就是根据输入的个数来确定数组大小,并且不知道怎样把一行一行的字符串送到数组里面?
高手们帮忙弄一下
昏,c++就c++嘛,教俺写撒!
展开
 我来答
冒险岛乐乐
推荐于2016-01-05 · TA获得超过1969个赞
知道小有建树答主
回答量:621
采纳率:0%
帮助的人:0
展开全部
本题的一个完整c程序如下,win-tc和Dev-c++下已调试通过。其中通用排序函数为void sort()
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
#include "string.h"
#define ROW 100
#define COL 80

void sort();

int main()
{
int n,i;
char s[ROW][COL+1];
printf("Please input the number of the string you want to sort(not more than %d):\n",ROW);
scanf("%d",&n);
getchar(); /*开始没加这句只能输入n-1个字符串,排错花了几十分钟,教训深刻,看来是上一句的回车键在作怪,这说明gets()函数也是从缓冲区而非控制台取出字符的*/
printf("Please input the strings one by one (not more than %d characters each):\n",COL);
for(i=0;i<n;i++)
gets(s[i]);
sort(s,n);
printf("\nNow,the sequence after sort is:\n");
for(i=0;i<n;i++)
printf("%s\n",s[i]);
getch();
return 0;
}

void sort(char str[][COL+1],int n) /* 冒泡排序 */
{
int i,j;
char temp[COL+1];

for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(strcmp(str[j],str[j+1])>0)
{
strcpy(temp,str[j]);
strcpy(str[j],str[j+1]);
strcpy(str[j+1],temp);
}
}

本题利用指针数组得出的另一种解法如下:

#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
#include "string.h"
#define ROW 100
#define COL 80

void sort();
void print();

int main()
{
int n,i;
char s[ROW][COL+1],*p[ROW];
printf("Please input the number of the string you want to sort(not more than %d):\n",ROW);
scanf("%d",&n);
getchar();
printf("Please input the strings one by one (not more than %d characters each):\n",COL);
for(i=0;i<n;i++)
{
gets(s[i]);
p[i]=s[i];
}
sort(p,n);
printf("\nNow,the sequence after sort is:\n");
print(p,n);
getch();
return 0;
}

void sort(char *str[],int n) /* 选择排序 */
{
char *temp;
int i,j,k;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(strcmp(*(str+k),*(str+j))>0)
k=j;
if(k!=i)
{
temp=*(str+i);
*(str+i)=*(str+k);
*(str+k)=temp;
}
}
}

void print(char *str[],int n)
{
int i;
for(i=0;i<n;i++)
printf("%s\n",*(str+i));
}
casiope
2008-11-20 · TA获得超过100个赞
知道答主
回答量:58
采纳率:0%
帮助的人:43.8万
展开全部
这个明显是C++写的 用到了C++的输入输出流的写法 还有那个iostream.h的头文件 hoho ~~~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ryw12403
2008-11-20 · TA获得超过1899个赞
知道大有可为答主
回答量:2501
采纳率:0%
帮助的人:2080万
展开全部
这个到底是C还是C++?

cout<<"输入若干个字符串"<<endl;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qxy5168
2008-11-20 · TA获得超过175个赞
知道答主
回答量:147
采纳率:0%
帮助的人:75万
展开全部
地方官
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式