| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 292 人关注过本帖
标题:问题在哪??为什么??
只看楼主 加入收藏
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
结帖率:98.26%
收藏
已结贴  问题点数:20 回复次数:7 
问题在哪??为什么??
#define N 5
#define M 20
#include<conio.h>
#include<string.h>
#include<stdio.h>
void main()
{
    char str[N][M],*p;
    int i,j;
    for(i=0;i<N;i++)
        gets(*(str+i));
    for(i=0;i<N;i++)
        for(j=i+1;j<N;j++)
            if(strcmp(str[i],str[j])>0){
                p=*(str+i);
                *(str+i)=*(str+j);
                *(str+j)=p;
            }
            for(i=0;i<N;i++)
                puts(*(str+i));
            getch();
}
高手帮忙看一下,怎么有问题呢??

谢谢了!大虾们!
搜索更多相关主题的帖子: include 
2009-10-29 22:35
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:10 
#define N 5
#define M 20
#include<conio.h>
#include<string.h>
#include<stdio.h>
void main()
{
    char str[N][M],p[20];
    int i,j;
    for(i=0;i<N;i++)
        gets(*(str+i));
    for(i=0;i<N-1;i++)
        for(j=i+1;j<N;j++)
            if(strcmp(str[i],str[j])>0)
            {
                strcpy(p,(str+i));
                strcpy((str+i),(str+j));
                strcpy((str+j),p);
            }
            for(i=0;i<N;i++)
                puts(*(str+i));
            getch();
}
2009-10-29 22:45
viky2003
Rank: 5Rank: 5
等 级:职业侠客
帖 子:375
专家分:383
注 册:2007-4-11
收藏
得分:8 
程序代码:
#define N 5
#define M 20
#include<string.h>
#include<stdio.h>
int main()
{
    char str[N][M],p[M];
    int i,j;
    for(i=0;i<N;i++)
    {
        fgets(*(str+i),M,stdin);
    }
    for(i=0;i<N;i++)
        for(j=i+1;j<N;j++)
            if(strcmp(str[i],str[j])>0){
                memcpy(p,*(str+i),M);
                memcpy(*(str+i),*(str+j),M);
                memcpy(*(str+j),p,M);
            }
            for(i=0;i<N;i++)
                puts(*(str+i));    ;
            return 0;
}
数组不能通过指针交换来赋值的。

要练习算法就来http:///!!有挑战哦!!
2009-10-29 22:53
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:0 
回复 2楼 m456m654
你为什么要这样去处理呢??
我那样做为什么就会出错呢???
我有点搞不懂!

愿用余生致力编程
2009-10-30 11:11
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:0 
回复 2楼 m456m654
#define N 5
#define M 20
#include<conio.h>
#include<string.h>
#include<stdio.h>
void main()
{
    char str[N][M],p[20];
    int i,j;
    for(i=0;i<N;i++)
        gets(*(str+i));
    for(i=0;i<N-1;i++)
        for(j=i+1;j<N;j++)
            if(strcmp(str[i],str[j])>0)
            {
                strcpy(p,*(str+i));
                strcpy(*(str+i),*(str+j));
                strcpy(*(str+j),p);
            }
            for(i=0;i<N;i++)
                puts(*(str+i));
            getch();
}
我在上机的时候发现你的程序有点小错误,我给改正过来了!

愿用余生致力编程
2009-10-30 11:16
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:1 
回复 5楼 我菜119
因为是二维数组,所以你加不加其结果都一样的。
2009-10-30 14:17
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:1 
你的指针p起不到交换相应字符串的作用,因为你每次交换都用p,而p只能指向一个地址,你要是下次再用p指向想交换的字符串地址时,原来所指向的地址就无效了,那么之前的交换也就无效了。而且相互交换不能通过*(str+i)=*(str+j); 实现。要用字符串复制。
2009-10-30 14:21
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:0 
回复 7楼 m456m654
谢了呀!

愿用余生致力编程
2009-10-30 21:57
快速回复:问题在哪??为什么??
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036102 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved