| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 635 人关注过本帖
标题:无法实现名字的排序.
只看楼主 加入收藏
yuchin
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2010-5-7
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
无法实现名字的排序.
//无法实现书名的排序,求!指点.
#include<stdio.h>
#include<string.h>


struct book
{
        char name[10];
        float price;
}
        pers[10];

void change(void);
void print_book(void);
void putinbook(void);

void main()
{   
        putinbook();
        print_book();               
        change();
        printf("That's ok!\n");
        system("pause");
}

void print_book(void)
{
        int i;
        printf("the first turn:\n");
        for(i=0;i<10;i++)
        printf("%s\t%g\n",pers[i].name,pers[i].price);
}

void putinbook(void)
{
        int i;
        printf("Please input 10 books name,price:\n");
        for(i=0;i<10;i++)
        scanf("%s %f",pers[i].name,&pers[i].price);
}
void change(void)
{
        int i,finish,j;
        float min;
        char minname[10];
        printf("the turn after sort:\n");
        printf("book name\tbook price\n");
        for(i=0;i<10;i++)
        {
             finish=1;
             for(j=0;j<10;j++)
             {
                 if(pers[j].price<pers[j+1].price)
                 {
                      min=pers[j].price;
                      pers[j].price=pers[j+1].price;
                      pers[j+1].price=min;
                      strcpy(minname,pers[j].name);
                      strcpy(pers[j].name,pers[j+1].name);
                      strcpy(pers[j+1].name,minname);
                      finish=0;
                 }
                 if(name[j]>name[j+1])
                 {
                     min=name[j];
                     name[j]=name[j+1];
                     name[j+1]=min;
                     strcpy(name[j],name[j+1]);
                     strcpy(name[j+1],minname);
                     finish=0;
                 }
                 
             }
             if(finish==1)   
             break;
        }
        for(i=0;i<10;i++)
        printf("%s\t\t%g\n",pers[i].name,pers[i].price);
}
搜索更多相关主题的帖子: change 名字 
2011-01-14 19:35
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:4 
  我的英语不好  看不懂你输出什么.............


图片附件: 游客没有浏览图片的权限,请 登录注册
你J=9越界了
............................................................................


图片附件: 游客没有浏览图片的权限,请 登录注册
你的NAME  是那里来的啊,,,,,写错了吧(你这里错得很重要.........你是不是想比较成员(name)的长短,你应用strcmp比较,你也不能用float min来放字符串吧,起码也该是字符数组

[ 本帖最后由 A13433758072 于 2011-1-14 21:20 编辑 ]

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-01-14 20:55
zzgzzg00
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:388
专家分:627
注 册:2010-8-2
收藏
得分:4 
我怎么在结构中一定义price 定义成float就出错啊 能编议但不能输入啊 一输入就说什么指针值不到之类的意思

粗心是大敌
2011-01-14 22:26
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:0 
回复 3楼 zzgzzg00
在结构中定义?^_^||能吗?,结构中的是成员,就像印模具的纹路,

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-01-14 23:38
FMaster
Rank: 2
等 级:论坛游民
帖 子:63
专家分:62
注 册:2010-9-1
收藏
得分:4 
程序代码:
for(j=0;j<10;j++)
             {
                 if(pers[j].price<pers[j+1].price)
                 {
                      min=pers[j].price;
                      pers[j].price=pers[j+1].price;
                      pers[j+1].price=min;
                      strcpy(minname,pers[j].name);
                      strcpy(pers[j].name,pers[j+1].name);
                      strcpy(pers[j+1].name,minname);
                      finish=0;
                 }
                 if(name[j]>name[j+1])
                 {
                     min=name[j];
                     name[j]=name[j+1];
                     name[j+1]=min;
                     strcpy(name[j],name[j+1]);
                     strcpy(name[j+1],minname);
                     finish=0;
                 }
                
             }
额,弄这么麻烦干么??
在你的change()函数中,就是上边那段,直接结构体变量对结构体变量赋值就行,不必在一个个的赋值。。。
2011-01-15 16:02
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:4 
提供LZ的编译器,提供输入方式。其它部分问题像LS所说一样
for(j=0;j<10;j++)
             {
                 if(pers[j].price<pers[j+1].price)
                 {
                      min=pers[j].price;
改为
for(j=0;j<9;j++)
             {
                 if(pers[j].price<pers[j+1].price)
                 {
                      min=pers[j].price;

小代码,大智慧
2011-01-15 19:13
cacker
该用户已被删除
收藏
得分:4 
提示: 作者被禁止或删除 内容自动屏蔽
2011-01-16 17:32
快速回复:无法实现名字的排序.
数据加载中...
 
   



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

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