请高手指教"一道排序題"
从键盘上顺序输入10本书的名称和单价,程序按照单价从小到大进行排序,然后输出排序的结果。那位高手能不能幫我解答下啊...謝謝了,小弟在此感謝
怎么样才能输出单价的同时也把对应的书名一同输出.....
请各位高手帮助下,谢谢了
下面我只是把代码缩段用来调试的,所以没有把10本书的条件全部写进去....
#include<stdio.h>
main()
{
int i,price[10];
void Price(int price1[]);
char bname[10];
printf("\ninput book name and price:\n");
for(i=0;i<5;i++)
scanf("%s",&bname);
for(i=0;i<5;i++)
scanf("%d",&price[i]);
printf("\n");
Price(price);
}
void Price(int price1[])
{
int i,j,p,q,temp;
for(i=0;i<5;i++)
{
p=i;q=price1[i];
for(j=i+1;j<5;j++)
if(q>price1[j])
{
p=j;
q=price1[j];
}
if(i!=p)
{
temp=price1[i];
price1[i]=price1[p];
price1[p]=temp;
}
printf("%d ",price1[i]);
}
printf("\n");
}
[[it] 本帖最后由 hxlou520 于 2008-9-6 21:49 编辑 [/it]]
你自己不认真看。 不是啊,我自己現在也在調試啊...可是輸入的時候就有點問題了....
我是初學者,不太懂啊....
希望你們以幫我說下就可以了...代碼我可以自己寫.... 算法问题自己解决,况且,我都不知道你准备使用什么算法
曾经发了一个排序算法总结贴,你搜索以下看看? 那謝謝你了.... 一个结构体,一个交换就OK了。
估计LZ基础不是很硬,要多看看书呀。 呵呵,不好意思让你笑话了.....
一定努力把基础学硬... typedef struct {
char Name[81];
int Prices;
} Book;
Book books[10];
字符串比较 strcmp()
整形比较 > 或 <
[[it] 本帖最后由 cosdos 于 2008-9-6 21:11 编辑 [/it]]
排序问题......
我以下的代码自己写,可是我不知道怎么在输出单价的时候也把对应的书名输出啊??请各位高手指点下.
谢谢了
#include<stdio.h>
main()
{
int i,price[10];
void Price(int price1[]);
char bname[10];
printf("\ninput book name and price:\n");
for(i=0;i<5;i++)
scanf("%s",&bname);
for(i=0;i<5;i++)
scanf("%d",&price[i]);
printf("\n");
Price(price);
}
void Price(int price1[])
{
int i,j,p,q,temp;
for(i=0;i<5;i++)
{
p=i;q=price1[i];
for(j=i+1;j<5;j++)
if(q>price1[j])
{
p=j;
q=price1[j];
}
if(i!=p)
{
temp=price1[i];
price1[i]=price1[p];
price1[p]=temp;
}
printf("%d ",price1[i]);
}
printf("\n");
} [code]/*******************************************************************************
从键盘上顺序输入10本书的名称和单价,程序按照单价从小到大进行排序,
然后输出排序的结果。
*******************************************************************************/
#include<stdio.h>
#define N 10
#define Y {char c;while(c=getchar()!='\n');}
struct ST
{
char name[20];
float money;
}book[N],num;
void _input() /* 输入 */
{
int i;
float m;
for(i=0;i<N;i++)
{
printf("input NO.%d name\n",i+1);
gets(book[i].name);
printf("input money:\n");
scanf("%f",&m);
Y; /* 清除键盘缓存 */
book[i].money=m;
}
}
void px() /* 冒泡法排序 */
{
int i,j;
for(i=0;i<N;i++)
for(j=i+1;j<N;j++)
if(book[i].money>book[j].money)
{
num=book[i];
book[i]=book[j];
book[j]=num;
}
}
int main(void)
{
int i;
_input();
px();
for(i=0;i<N;i++)
printf("%10s %10.2f\n",book[i].name,book[i].money);
getch();
}
[/code] 谢谢你,广陵。。。。
回复 11# hxlou520 的帖子
~~~~~~~~~~~~~~~~~~~不用客气,也许这里的高手们真的不屑于回答这种初级问题,也许是真的回答不耐烦了——不过据我到这里这么长时间的观察,没看到有几个耐心回答初级问题的。
记得当初我也到这来问过类似的问题(结构体的排序),但也许是我的问题描述得不对,也许是我的态度不佳。总之没得到我想得到的点拔,后来自己苦思冥想,终于把问题弄明白了。
我现在告诉了你,你豁然开朗,一下子明白了。但当你遇到下一问题时,又会很苦恼。所以,遇到问题自己多思考,实在不明白了,再上这里来问一下。高手们能点拔一下,是自己的幸运,高手们不屑于回答,那是再正常不过的事情,也不必怨天尤人。
祝你学C愉快,天天进步。 嗯,还是要谢谢你,刚才看了结构那章现在有点明白了,因为之前没有去看这章然后就接触这道题,所以看上去感觉什么都不懂,不过刚才去看了下,明白了很多。。。
谢谢你的祝愿。。。。
下次有什么不明白的地方可以在问你吗?
会不会打扰你?
页:
[1]
