请c语言高手来帮我看看这道题的问题!

来源:百度知道 编辑:UC知道 时间:2024/06/18 16:58:56
题目要求是按字符从小到大排序,我编写的程序如下:
#include "stdio.h"
#include "string.h"
#define N 10
void sort();
void main()
{
int i;
char b[N][81];
for(i=0;i<N;i++)
{
printf("Enter the char of number %d:",i);
scanf("%s",b[i]);
}
sort(b,N);
printf("The new array is:\n");
for(i=0;i<N;i++)
printf("%s\n",b[i]);
}
void sort(char a[],int n)
{
int i;
int flag;
char t;
do
{
flag=0;
for(i=0;i<n-2;i++)
if(strcmp(a[i],a[i+1])>0)
{
strcpy(t,a[i]);
strcpy(a[i],a[i+1]);
strcpy(a[i+1],t);
flag=1;
}
}
while(flag);
}
尽管编译通过了,但运行出了问题,当输完10组字符串后,再按回车就运行不下了,我估计是我使用的冒泡排序函数出了问题,但还是检查不出。请哪位高手帮我指点一下,谢谢了!
不好意思啊,我的原意就是要比较字符串的,而不是比较字符。

if(strcmp(a[i],a[i+1])>0) => if(a[i]>a[i+1])
{
strcpy(t,a[i]); =>t=a[i]
strcpy(a[i],a[i+1]); =>a[i]=a[i+1]
strcpy(a[i+1],t); =>a[i+1]=t
flag=1;
}
strcpy,strcmp是比较字符串的,比较单个字符用<,>,==就可以了
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
我错了,没看清
char *t;就可以了

是的.你那里用trcmp()这是比较两个字符串的.
对了.你那个变量 t定义有问题.应该定义为指针才是.改下吧.
char *t;