当前位置: 代码迷 >> C语言 >> 我的这个程序有点问题,请高手指教一下。感激~
  详细解决方案

我的这个程序有点问题,请高手指教一下。感激~

热度:303   发布时间:2008-06-19 12:42:02.0
我的这个程序有点问题,请高手指教一下。感激~
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 100

void sorted(char *line,int n)
{
    int i,j;
    char *temp,*p[N];
    for(i=0;i<n;i++)
    {
        scanf("%s",line);
        p[i]=(char*)calloc(strlen(line),1);
        strcpy(p[i],line);
    }
    for(i=1;i<n;i++)
        for(j=0;j<n-1;j++)
        {
            if(strcmp(p[j],p[j+1])>0)
            {
                temp=p[i];
                p[j]=p[j+1];
                p[j+1]=temp;
            }
            
        }
        
}

void main()
{
    
    int i,n;
    char line[N];
    
    printf("请输入n= ");
    scanf("%d",&n);
    printf("请输入%d个字符串:\n",n);
    
    
    sorted(line,n);
    printf("字符串排序后为:\n");
    //for(i=0;i<n;i++)
    printf("\n %s",line);
    
    //    printf("\n %s",line[i]);

    printf("\n");
}

字符串的排列问题,就是打印不出排列后的全部字符串。

请高手指教一下。。。qq 285847630 感激不尽。。。
搜索更多相关的解决方案: 感激  include  int  

----------------解决方案--------------------------------------------------------
回复 1# zhuweinact 的帖子
这个程序思路有些问题的
C语言实参给形参传值,是"值传递",所以void sorted(char *line,int n)形参line指向的地址改变了,但对main函数里的实参line没有影响的.
应该这样,不过这里temp是这样定义char temp;
    if(strcmp(p[j],p[j+1])>0)
            {
                temp=*p[i];
                *p[j]=*p[j+1];
                *p[j+1]=temp;
            }
再说你开辟了内存空间也没有释放也是不良习惯.
我没有仔细去看,你自己上机运行下
实现字符串排序可以有更简单的办法.
----------------解决方案--------------------------------------------------------
楼上的解释也有问题



[flash=400,300]http://yzfy.byethost17.com/flash.php[/flash][color=white]
----------------解决方案--------------------------------------------------------
可在函数sorted()内实现输出:
printf("字符串排序后为:\n");
for(i=0;i<n;i++)
puts(p[i]);
----------------解决方案--------------------------------------------------------
[bo][un]爱喝牛奶的猫咪[/un] 在 2008-6-19 13:44 的发言:[/bo]

楼上的解释也有问题



http://yzfy.byethost17.com/flash.php

请问我说的有什么错误?向你学习
----------------解决方案--------------------------------------------------------
  相关解决方案