C++大神求解题目!!!! 20
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;
}
这个也就是统计数量,
先定义3个变量,a,b,c存储他们的投票数,将初值赋0
然后用获取数据函数取数字,判断是不是,是给a加1,不是判断是不是2,给b加1,不是判断是不是3,是给c加1,不是表示输入错误,
判断完成后,在一次判断a,b,c是不是大于(a+b+c)/2,是就输出对应的字母加-yes,负责输出all-no
2020-01-18
#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;
}