| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 462 人关注过本帖
标题:我的代码到底哪里出问题了?
只看楼主 加入收藏
魔道无敌
Rank: 1
等 级:新手上路
帖 子:19
专家分:7
注 册:2013-2-27
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
我的代码到底哪里出问题了?
将5个字符数组排序:
程序代码:
#include<stdio.h>
#include<string.h>
#define N 5
#define M 81
void main()
{
    int i,j;
    char *p[N],str[N][M],*t;
    printf("Please input %d string:\n",N);
    for(i=0;i<N;i++)
    {
        gets(str[i]);
        p[i]=str[i];
    }
    for(j=0;j<N-1;j++)
    {
    for(i=0;i<N-1;i++)
    {
        if(strlen(p[i])<strlen(p[i+1]))
        t=p[i];p[i]=p[i+1];p[i+1]=t;
    }
    }
    for(i=0;i<N;i++)
    printf("%s\n",p[i]);   
}
请大师们帮我找下哪错了
搜索更多相关主题的帖子: color 
2013-05-26 20:25
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:1 
最后面的for语句下面的printf注意  按for的格式调整位置,建议用puts函数输出
不过即使这样你的程序还是有问题  排序不对

[ 本帖最后由 韶志 于 2013-5-26 20:56 编辑 ]

三十年河东,三十年河西,莫欺少年穷!
2013-05-26 20:51
q13678986740
Rank: 4
等 级:业余侠客
帖 子:114
专家分:245
注 册:2012-7-7
收藏
得分:5 
#include<stdio.h>
#include<string.h>
#define N 5
#define M 81
void main()
{
    int i,j;
    char *p[N],str[N][M],*t;
    printf("Please input %d string:\n",N);
    for(i=0;i<N;i++)
    {
        gets(str[i]);
        p[i]=str[i];
    }
    for(j=0;j<N-1;j++)
    {
    for(i=j+1;i<N;i++)
    {
        if(strlen(p[j])<strlen(p[i]))
        {
            t=p[i];
            p[i]=p[j];
            p[j]=t;            //这里少个大括号,for语句到这有比较大的改动,现在运行正常了
        }
    }
    }
    for(i=0;i<N;i++)
    printf("%s\n",p[i]);  
    getch();
}
2013-05-26 21:21
我叫沃恩
Rank: 12Rank: 12Rank: 12
来 自:Asia
等 级:贵宾
威 望:10
帖 子:1234
专家分:3865
注 册:2013-3-29
收藏
得分:2 
学习!!

因为我是菜鸟,所以应该被骂! 细节+坚持=成功!
2013-05-26 21:43
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:2 
回复 4楼 我叫沃恩
目测同志你一直在学习...  碉堡了

三十年河东,三十年河西,莫欺少年穷!
2013-05-26 21:48
lzj12530
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:264
专家分:841
注 册:2013-3-28
收藏
得分:5 
#include<stdio.h>
#include<string.h>
#define N 5
#define M 81
void main()
 {
     int i,j;
     char *p[N],str[N][M],*t;
     printf("Please input %d string:\n",N);
     for(i=0;i<N;i++)
     {
         gets(str[i]);
         p[i]=str[i];
     }
     for(j=0;j<N-1;j++)
     {
        for(i=0;i<N-j-1;i++)
        {
          if(strlen(p[i])<strlen(p[i+1]))   //冒泡排序的原理,没比较一次循环下一次少比较最小一个
         {
            t=p[i];            //如果这里没有大括弧,那么if只会包括紧跟着的一句也就是t=p[i];
            p[i]=p[i+1];
            p[i+1]=t;
          }
        }   
     }
     for(i=0;i<N;i++)
        printf("%s\n",p[i]);   
}

[ 本帖最后由 lzj12530 于 2013-5-26 22:06 编辑 ]

C++菜鸟
2013-05-26 22:04
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:5 
for(j=0;j<N-1;j++)
     {
     for(i=0;i<N-1;i++)
     {
         if(strlen(p[i])<strlen(p[i+1]))
         {t=p[i];p[i]=p[i+1];p[i+1]=t;}
     }
     }
排序你这个if下面的花括号都没有,他们都属于if判断控制的范围

Maybe
2013-05-26 22:09
快速回复:我的代码到底哪里出问题了?
数据加载中...
 
   



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

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