C++大神求解题目!!!! 20

在三个候选人A(代号为1)、B(代号为2)和C(代号为3)中,选一个班长,现有一批已投的选票(用-1表示结束),请分别统计出他们的得票数。谁的得票过全票数的半数,就输出谁... 在三个候选人A(代号为1)、B(代号为2)和C(代号为3)中,选一个班长,现有一批已投的选票(用-1表示结束),请分别统计出他们的得票数。谁的得票过全票数的半数,就输出谁当选为班长,如“A-yes”表示A当选,全部不过半数,输出“all-NO”。 展开
 我来答
小菜鸟2无聊写代码
2020-01-18 · TA获得超过1058个赞
知道小有建树答主
回答量:932
采纳率:87%
帮助的人:162万
展开全部

C++流输入是可以空格循环分隔各个输入值的。所以代码使用C++流输入处理即可,不过需要对“-1”的输入做出停止的响应。

代码:

/*C++流输入是可以空格循环分隔各个输入值的。所以代码使用C++流输入处理即可,不过需要对“-1”的输入做出停止的响应。

*/

 

#include<iostream>

using namespace std;

int main() {

         int a=0, b=0, c=0;

         int i /*输入*/, ct=0 /*计数*/;

         do {

                   cin>>i;

                   switch(i) {

                            case 1:

                                     a++;

                                     break;

                            case 2:

                                     b++;

                                     break;

                            case 3:

                                     c++;

                   }

                   ct++;

         } while(i!=-1);

         ct--;

         i='A';

         cout<<"A="<<a<<"\nB="<<b<<"\nC="<<c<<"\nTot="<<ct;

         if ( b  / (ct * 1.0) > 0.5 ) i+=1;

         else if ( c  / (ct * 1.0) > 0.5 ) i+=2;

         else if ( a  / (ct * 1.0) > 0.5 );

         else i=-1;

         if (i==-1)cout<<"\nall-NO";

         else cout<<"\n"<<(char)(i)<<"-yes";

         return 0;

}

运行效果


考骄70
科技发烧友

2020-01-18 · 智能家居/数码/手机/智能家电产品都懂点
知道小有建树答主
回答量:1096
采纳率:58%
帮助的人:63.9万
展开全部
好多代码,都是高手,不过学习代码最好先学逻辑,毕竟代码哪里都能找的到,想法是自己创新的
这个也就是统计数量,
先定义3个变量,a,b,c存储他们的投票数,将初值赋0
然后用获取数据函数取数字,判断是不是,是给a加1,不是判断是不是2,给b加1,不是判断是不是3,是给c加1,不是表示输入错误,
判断完成后,在一次判断a,b,c是不是大于(a+b+c)/2,是就输出对应的字母加-yes,负责输出all-no
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xoaxa
2020-01-17 · TA获得超过8607个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3418万
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2020-01-18
展开全部
仿另一位答主,C++代码
#include <iostream>
using namespace std;

int main() {

int vote, Tot = 0, v[3] = {0}, max = 0, pos;
while (cin >> vote && vote != -1)
if (vote >= 1 && vote <= 3) {
++v[vote - 1];
Tot++;
}
for (int i = 0; i < 3; i++) {
cout.put ('A' + i) << "=" << v[i] << endl;
if (v[i] > max) {
max = v[i];
pos = i;
}
}
cout << "Tot=" << Tot << endl;
if (2 * v[pos] > Tot % 2 ? Tot + 1 : Tot) {
cout.put ('A' + pos) << "-yes";
return 0;
}
else
cout << "all-No";
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式