| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 735 人关注过本帖
标题:望高手改正 指教?
只看楼主 加入收藏
h1023417614
Rank: 4
等 级:禁止访问
帖 子:211
专家分:237
注 册:2012-11-30
结帖率:100%
收藏
已结贴  问题点数:25 回复次数:20 
望高手改正 指教?
程序代码:
#include<stdio.h>//把字符串按字典顺序输出
#include<stdlib.h>//不会报错就是交换失败
#include<string.h>

   struct stu
    {
     char name[50];
   }*p;




int shuru(struct stu *p);//输入字符串
void swap(struct stu *p,int i);//交换字符串
void shuchu(struct stu *p,int r);//输出字符串


int main(){
p=(struct stu*)calloc(4,sizeof(struct stu));

    int r;
    r=shuru(p);
    printf("\n");
    swap(p,r);
    shuchu(p,r);


        return 0;
}


int shuru(struct stu *p)
{int i;
    for(i=0;i<3;)//输入三条字符串
    {
    scanf("%s",p++);
        i++;
    
    }
    return i;
}

void swap(struct stu *p,int i)
{
    int k,j;
    char m[50]={0};
for(j=0;j<i;j++)
    for(k=j;k<i;k++)//貌似交换错了啊
    {
        if(strcmp((p+j)->name,(p+k)->name)<0.5)
        {
            strcpy(m,(p+k)->name);
            strcpy((p+k)->name,(p+j)->name);
            strcpy((p+j)->name,m);
        }

    }

}

void shuchu(struct stu *p,int r)
{
    int d;
    for(d=0;d<r;d++)
    {
        printf("%s\n",(p+d)->name);
    }

}
2012-12-24 18:55
善ing
Rank: 2
来 自:华东师范
等 级:论坛游民
帖 子:34
专家分:19
注 册:2012-11-18
收藏
得分:4 
if(strcmp((p+j)->name,(p+k)->name)<0.5)
改为 if(strcmp((p+j)->name,(p+k)->name)>0)实现升序

邂逅c  (⊙o⊙)
2012-12-24 19:28
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:4 
楼主能发个样例输入输出吗?

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-12-24 19:49
cyhdahua
Rank: 7Rank: 7Rank: 7
来 自:山东
等 级:黑侠
威 望:2
帖 子:221
专家分:643
注 册:2012-6-15
收藏
得分:4 
索罗,从你发帖的分数看来,你一直在进步 加油

WE GO
2012-12-24 19:54
h1023417614
Rank: 4
等 级:禁止访问
帖 子:211
专家分:237
注 册:2012-11-30
收藏
得分:0 
回复 3楼 yaobao
输入
dsdfhgfj
fdhfdjhgfj
gj

输出
gj
fdhfdjhgfj
dsdfhgfj
Press any key to continue
2012-12-24 22:04
h1023417614
Rank: 4
等 级:禁止访问
帖 子:211
专家分:237
注 册:2012-11-30
收藏
得分:0 
回复 4楼 cyhdahua
你小子倒是帮我看看啊
2012-12-24 22:05
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:4 
程序代码:
 for(i=0;i<3;)//输入三条字符串
    {
    scanf("%s",p++);  /* scanf函数会遗留'\n' 可以在%s前加个空格以忽略空白符,但最好别用scanf读入字符串 */
        i++;         /* 因为它把空格视为结束                                                          */
   
    }


结构指针要用链表,(p+1)没有意义,当然,这里只有一个char[]类型,所以可以推断*(p+1)对应的是name[1]
如果没有限制楼主不需要使用结构,如果一定得用楼主需先了解了解链表,它比你想象的可能复杂点...


I have not failed completely
2012-12-24 22:09
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
楼主咋这恨人呢,这也叫样例??
图片附件: 游客没有浏览图片的权限,请 登录注册

直接就成功了啊

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-12-24 22:27
h1023417614
Rank: 4
等 级:禁止访问
帖 子:211
专家分:237
注 册:2012-11-30
收藏
得分:0 
回复 7楼 神龙赖了
scanf函数会遗留'\n'   没影响啊
2012-12-24 22:28
梁慧强
Rank: 1
等 级:新手上路
帖 子:6
专家分:4
注 册:2012-12-22
收藏
得分:4 
问个问题  这咋结贴啊 总分是多少啊  咋分配啊?
2012-12-24 22:30
快速回复:望高手改正 指教?
数据加载中...
 
   



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

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