当前位置:编程学习 > C/C++ >>

一道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语言高手帮忙,求输出结果和解题思路

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,