题目:
有6个候选人,100个选民,每个选民选择一个侯选人投票;从键盘输入每个选民选择的候选人名,统计并输出这6个候选人的票数。(10分)
代码部分:
#include<iostream>
#include<string>
#include<map>
using namespace std;
int main(){
map<string,int> m;
int a=0;
people=6; //选民人数(就写6个,100太多了)
//初始化map
m.insert(pair<string,int>("张三", 0));
m.insert(pair<string,int>("1", 0));
m.insert(pair<string,int>("2", 0));
m.insert(pair<string,int>("3", 0));
m.insert(pair<string,int>("4", 0));
m.insert(pair<string,int>("5", 0));
while (a<people)
{
string name=" ";
cin>>name;
map<string,int>::iterator it=m.begin();
while (it != m.end())
{
if(name==it->first){
m[name]=m[name]+1;
}
it++;
}
a++;
}
// m.find(a)->second=2;
map<string,int>::iterator it2=m.begin();
while (it2 != m.end())
{
cout<<it2->first<<","<<it2->second<<endl;
++it2;
}
return 0;
}
运行结果:
java实现
思路:用一个数组来储存对应位置的人的票数,用switch来选择投给的人是谁,就对应位置的Votes数组的数值加一。
代码:
package CSDNTest;
import java.util.Iterator;
import java.util.Scanner;
//有6个候选人,100个选民,每个选民选择一个侯选人投票;从键盘输入每个选民选择的候选人名,统计并输出这6个候选人的票数。(10分)
public class NumOfVotes {
public static void main(String[] args) {
String [] candidate = {"flander","jiejie","scout","viper","meiko","博主"};
Scanner scanner = new Scanner(System.in);
int [] Votes= new int[candidate.length];
int n=5;
while(n>0) { //5人投票
for (int j = 0; j < candidate.length; j++) {
System.out.print(candidate[j]+",");
}
System.out.println();
System.out.print("写下你想要投给的人的名字:");
String name=scanner.next();
switch (name) {
case "flander": {
Votes[0]++;
break;
}
case "jiejie": {
Votes[1]++;
break;
}
case "scout": {
Votes[2]++;
break;
}
case "viper": {
Votes[3]++;
break;
}
case "meiko": {
Votes[4]++;
break;
}
case "博主": {
Votes[5]++;
break;
}
default:
throw new IllegalArgumentException("Unexpected value: " + name);
}
n--;
}
//输出
System.out.println("投票结果:");
for (int i = 0; i < Votes.length; i++) {
System.out.println(candidate[i]+": "+Votes[i]+"票");
}
scanner.close();
}
}
运行截图: