一道C语言问题
输入正整数 n 和 n 个字符串,请将它们按从小到大的顺序排列后输出。(字符串个数不大于10,字符串长度不大于20)。
输入: 正整数 n 和 n 个字符串
输出: 按从小到大的顺序输出 n 个字符串
#include <stdio.h>
#include <string.h>
#define N 100
#define M 20
main()
{ int n,i,j;
static char s[N];
char str[M][N];
scanf("%d\n",&n);
for(i=0;i<n;i++)
gets(str[i]);
for(j=0;j<n-1;j++)
for(i=0;i<n-1-j;i++)
if(strcmp(str[i],str[i+1])>0)
{strcpy(s,str[i+1]);
strcpy(str[i-1],str[i]);
strcpy(str[i],s);
}
for(i=0;i<n;i++)
puts(str[i]);
}
帮忙看看哪里出错了
答案:if(strcmp(str[i],str[i+1])>0)
{strcpy(s,str[i+1]);
strcpy(str[i],s);
这里边中间有一句符号错了, strcpy(str[i+1],str[i]);注意是加1,不是减号
其他:你软件有错 #include <stdio.h>
#include <string.h>
#define N 100
#define M 20
main()
{ int n,i,j;
static char s[N];
char str[M][N];
scanf("%d\n",&n);
for(i=0;i<n;i++)
gets(str[i]);
for(j=0;j<n-1;j++)
for(i=0;i<n-1-j;i++)
if(strcmp(str[i],str[i+1])>0)
{strcpy(s,str[i+1]);
strcpy(str[i-1],str[i]); // i你初始=0,i-1=-1,这里数组越界了
strcpy(str[i],s);
}
for(i=0;i<n;i++)
puts(str[i]);
}
上一个:在C语言程序中,被调用的函数必须在main( )函数中定义 这句话对吗、、、
下一个:C语言高手帮忙,求输出结果和解题思路