请教用指针数组将字符串排序输出的问题

gogou 2006-12-26 12:28:44
请问下面这个题目的程序怎么写,我写的不知道对否,谢谢!

题目:输入10个字符串,利用指针数组将其排序输出,其中排序在子函数中完成,输入输出在主函数中完成.

我的程序:
#include<stdio.h>
#include<string>

void sort(char * name[],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(name[k],name[j]>0)) k=j;
if(k!i)
{
temp=name[i];
name[i]=name[k];
name[k]=temp;
}
}
}

main()
{
int i,n=10;
char *name[10];
char str[10][20];
for(i=0;i<n;i++)
{
gets(str[i]);
name[i]=str[i];
}
for(i=0;i<n;i++)
printf("%s\n",name[i]);
}

由于我没有c的编译环境,不能测试,请各位指点一下,我是初次接触语言,请勿见笑!!
...全文
203 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
gogou 2007-01-29
  • 打赏
  • 举报
回复
多谢楼上几位回帖!!!
DonaldKnuth 2006-12-26
  • 打赏
  • 举报
回复
你这相当于选择排序,有些小地方修改一下就可以执行了
如下:
#include<stdio.h>
#include<string>

void sort(char * name[],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(name[k], name[j]) > 0 )
k = j;
if(k != i)
{
temp = name[i];
name[i] = name[k];
name[k] = temp;
}
}
}

void main()
{
int i,n=10;
char *name[10];
char str[10][20];
for(i = 0; i < n; i++)
{
gets(str[i]);
name[i] = str[i];
}

sort(name, 10);
for(i=0; i<n; i++)
printf("%s\n",name[i]);
}

jixingzhong 2006-12-26
  • 打赏
  • 举报
回复
有一点小问题, 已修正:

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

void sort(char * name[],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(name[k],name[j])>0) k=j;
if(k!=i)
{
temp=name[i];
name[i]=name[k];
name[k]=temp;
}
}
}

int main()
{
int i;
int const n=10;
char *name[10];
char str[10][20];
for(i=0;i<n;i++)
{
gets(str[i]);
name[i]=str[i];
}
printf("The result is:\n");
sort(name, n);
for(i=0;i<n;i++)
printf("%s\n",name[i]);
system("PAUSE");
return 0;
}
Michael_555 2006-12-26
  • 打赏
  • 举报
回复
逻辑正确,但C语法有问题,而且在main()没有调用sort()进行排序就输出了。
#include<stdio.h>
#include<string.h> //c语言include头文件与C++是有差别的

void sort(char * name[],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(name[k],name[j])>0) k=j;//括号匹配错了
if(k!=i)//漏掉“=”了
{
temp=name[i];
name[i]=name[k];
name[k]=temp;
}
}
}

main()
{
int i,n=10;
char *name[10];
char str[10][20];
for(i=0;i<n;i++)
{
gets(str[i]);
name[i]=str[i];
}

sort(name, 10);//调用sort()来排序

for(i=0;i<n;i++)
printf("%s\n",name[i]);
}

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧