| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1007 人关注过本帖
标题:弱弱的问个问题
只看楼主 加入收藏
zhanghuan_10
Rank: 1
等 级:新手上路
威 望:2
帖 子:751
专家分:0
注 册:2006-10-25
收藏
得分:0 

typedef struct Big_number{
char Id[20];
short int num[100];
int len;
};

int bijiao(Big_number a,Big_number b)这块好像有些问题吧!

for(int i=0;i<a.len;i++)这块我的编译器好像不支持这种定义方式!


该学习了。。。
2006-12-03 08:50
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
我用的是C-FREE.

1.将字符串接收的发帖数转化为数字数组存储在num[]中.
2.冒泡排序sort.
3.关键在于bijiao()函数.这个就是比较两个参赛者(A,B)的名次.首先比较num[]的长度len,越大的,当然发帖数越多.
如果两者相同,则比较两者的ID.也就是return strcmp(b.Id,a.Id);
如果这个表达式=-1,说明A.ID>B.ID(即A要排在B之后).同理可之=1,0的情况.

倚天照海花无数,流水高山心自知。
2006-12-03 09:04
zhanghuan_10
Rank: 1
等 级:新手上路
威 望:2
帖 子:751
专家分:0
注 册:2006-10-25
收藏
得分:0 

这是上面斑竹的程序!
#include<stdio.h>
#include<string.h>

typedef struct Big_number{
char Id[20];
short int num[100];
int len;
}xyz;/*改了一下*/

int bijiao(xyz a,xyz b)/*先比较长度,长度相同比较发帖数,发帖数相同比较id*/
{
int i;
if(a.len>b.len)
{
return 1;
}
if(a.len<b.len)
{
return -1;
}
for(i=0;i<a.len;i++)/*改了一下*/
{
if(a.num[i]>b.num[i])
{
return 1;
}
if(a.num[i]<b.num[i])
{
return -1;
}
}
return strcmp(b.Id,a.Id);

}

void sort(xyz a[],int n)/*排序*/
{
int i,j;
xyz temp;
for(i=0;i<n;i++)
{
for(j=0;j<n-1;j++)
{
if(bijiao(a[j],a[j+1])==-1)
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
int main()/*主函数*/
{
#ifdef ONLINE_JUDGE/*这三行是什么意思?我也不知道!是条件编译吧!为什么要加上这个啊?*/
freopen("water.txt","r",stdin);/*?*/
#endif/*结束条件编译*/
xyz data[1000];/*n个人的数据*/
int n , i, j;
char id[20],number[100];/*number[100]这个是法帖数*/
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s%s",id,number);
strcpy(data[i].Id,id);
data[i].len=strlen(number);
for(j=0;j<data[i].len;j++)
{
data[i].num[j]=number[j]-'0';/*将字符转换成数字*/
}
}
sort(data,n);
for(i=0;i<n;i++)
{
printf("%s\n",data[i].Id);
}
return 0;
}


该学习了。。。
2006-12-03 09:11
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
typedef struct Big_number{
char Id[20];
short int num[100];
int len;
}xyz;/*改了一下,这里是可有可无的*/


#ifdef ONLINE_JUDGE/*这三行是什么意思?我也不知道!是条件编译吧!为什么要加上这个啊?*/
freopen("water.txt","r",stdin);/*?*/
#endif/*结束条件编译*/
这个是文件输入的,不用理它,发上来之前我已经处理过了,还得手动输入的.


倚天照海花无数,流水高山心自知。
2006-12-03 09:21
zhanghuan_10
Rank: 1
等 级:新手上路
威 望:2
帖 子:751
专家分:0
注 册:2006-10-25
收藏
得分:0 

呵呵,了解了!谢谢斑竹了!


该学习了。。。
2006-12-03 10:01
财鸟
Rank: 1
等 级:新手上路
帖 子:132
专家分:0
注 册:2006-11-2
收藏
得分:0 
很简单嘛!!!!!!!!!!!!!!!!!
2006-12-03 10:38
yelo20053533
Rank: 1
等 级:新手上路
帖 子:161
专家分:0
注 册:2006-11-27
收藏
得分:0 
可是当帖子数超过5000长度时,内存会超限!!!
2006-12-03 19:38
yelo20053533
Rank: 1
等 级:新手上路
帖 子:161
专家分:0
注 册:2006-11-27
收藏
得分:0 
那你试试?
2006-12-04 19:40
快速回复:弱弱的问个问题
数据加载中...
 
   



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

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