c语言cout输出指定变量,求C语言和C++大神解答,printf怎么转成cout输出语句

按你要求写了一个, 只简单测试过, 可能还有很多问题,如果有问题联系我q48824304. 需要的话我可以把代码发给你,贴在这里看实在不方便

#include

using namespace std;

int weight[10]={15,12,9,7,6,5,4,3,2,1};

class athlete //这个类是运动员的信息

{

public:

int num; //运动员编号

int votenum; //运动员票数

int point; // 得分

}ath[101];

class vote //这个类是选票信息

{

public:

int score[10]; // 10个运动员编号...名字起错了 改成athnum比较好

vote* next;

};

void del_vote(vote* p) // 删除的是p的下一个节点,不是p 注意.

{ // 此函数用在check()函数里.

vote* q;

q=p->next->next;

delete p->next;

p->next=q;

}

void check(vote* pvotelist) // check()函数在这里~

{

vote* p;

for(p=pvotelist;p->next!=null,p!=null;p=p->next) // 检查节点p的下一个节点中选票数据是否有效.

{

for(int i=0;i<10;i++)

{

if(p->next->score[i]<0 || p->next->score[i]>100) {del_vote(p);break;} // 有超出范围者,删除p的下一个节点.

for(int j=i-1;j>=0;j--) // 有与前面数据相同者,删除......

{

if(p->next->score[i]==p->next->score[j])

{

del_vote(p);

break;

}

}

}

}

}

void sort(athlete ath[101]) //运动员排序 找出前10名.

{

int i,j;

athlete temp;

for(i=1;i<=10;i++)

for(j=i+1;j<=100;j++)

{

if(ath[i].point < ath[j].point) //分高在前

{

temp=ath[i];

ath[i]=ath[j];

ath[j]=temp;

}

else if(ath[i].point == ath[j].point)

{

if(ath[i].votenum < ath[i].votenum) //分相等,票多在前

{

temp=ath[i];

ath[i]=ath[j];

ath[j]=temp;

}

else if(ath[i].votenum == ath[i].votenum)

{

if(ath[i].num

{

temp=ath[i];

ath[i]=ath[j];

ath[j]=temp;

}

}

}

}

}

void count(vote* pvotelist) // 此时选票全部为合理选票,开始统计

{

for(int i=0;i<101;i++) // 对运动员数组初始化.

{

ath[i].votenum=ath[i].point=0;

ath[i].num=i;

}

vote* p;

for(p=pvotelist->next;p!=null;p=p->next) //对选票进行统计

{

for(int i=0;i<10;i++)

{

if(p->score[i])

{

ath[p->score[i]].votenum++; // 对应运动员票数+1.

ath[p->score[i]].point+=weight[i]; // 分数则为加上该名次所对应的加分.

}

}

}

sort(ath); //运动员得分排序

cout<

for(int i=1;i<=10;i++)

printf("%2d %3d %6d %3d\n",i,ath[i].num,ath[i].point,ath[i].votenum);

system("pause");

}

int main()

{

vote *pvotelist,*p;

pvotelist =new vote; // pvotelist是选票链表的头结点,不存放数据.

p=new vote;

pvotelist->next=p; // 从第二个节点开始存放每张选票.

p->next=null;

int i=0;

cin>>p->score[i]; // 开始读入选票的数据,score等类型的成员意义见上面类定义中.

while(p->score[i]!=-1)

{

i=(i+1)%10;

if(i==0) // 每当一张选票写上10个数据之后,创建一张新选票.

{

p->next=new vote;

p=p->next;

p->next=null;

}

cin>>p->score[i];

}

p->next=null;

check(pvotelist);

count(pvotelist);

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值