运行不出结果??

LiuYi_7 2009-01-31 03:11:09
#include<stdio.h>
#include<string.h>
#define n 2
#define m 10
void sort(char a[n][m])
{
int i,j,k;
char t[m];
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;i<n;j++)
if(strcmp(a[k],a[j])>0)k=j;
t[m]=a[k][m];
a[k][m]=a[j][m];
a[j][m]=t[m];
}
}
int main()
{
char a[n][m];
int i;
printf("输入%d个字符串:\n",n);
for(i=0;i<n;i++)
{
gets(a[i]);
getchar();
}
printf("排序后:\n");
sort(a);
for(i=0;i<n;i++)
printf("%s\n",a[i]);
}

题目就是输入n个字符串,然后进行排序
...全文
90 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
LiuYi_7 2009-02-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ggxxkkll 的回复:]
有几个多问题:
1。 sort(a); 传过去的不是整个的字符串数组;因为比如a[1]是“abc”,a[2]是“efg”,传过去的是:abc fg,原因是在字符串在机器内以“\0”结束!!
2.排序是n个字符串一起排序,还是内部分别排序???
[/Quote]


是n个字符串一起的

你解释的第一点没搞清楚啊???
giant7 2009-02-01
  • 打赏
  • 举报
回复
有几个多问题:
1。 sort(a); 传过去的不是整个的字符串数组;因为比如a[1]是“abc”,a[2]是“efg”,传过去的是:abc fg,原因是在字符串在机器内以“\0”结束!!
2.排序是n个字符串一起排序,还是内部分别排序???
arong1234 2009-02-01
  • 打赏
  • 举报
回复
没有直接的数组赋值的算法,数组之间的拷贝只有用memcpy
arong1234 2009-02-01
  • 打赏
  • 举报
回复
下面这段啥意思?交换两个字符串?这可不支持哦
a[k][m]表示a数组k行第m个元素,你的数组尺寸是nxm, 则每列最大下标是m-1,你这种交换根本就是内存访问越界
t[m]=a[k][m];
a[k][m]=a[j][m];
a[j][m]=t[m];

69,381

社区成员

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

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