天天看点

候选人得票

对候选人得票的统计程序:设有 3 个候选人,今有 10 个人参加投票,从键盘先后输入这 10 个人所投的候选人的名字,要求最后输出这 3 个候选人的得票结果。

结构体与数组:

#include <iostream>
#include <cstring>
using namespace std;
struct Person          //声明结构体类型Person
{
    char  chName[20];
    int count;
};
int main( )
{
    //定义Person类型的数组,内容为3个候选人的姓名和当前的得票数
    Person  leader[3]= {{"Li",0}, {"Zhang",0},{"Wang",0}};
    int i,j;
    char chLeaderName[20];  // chLeaderName为投票人所选的人的姓名
    for(i=0; i<5; i++)
    {
        cin>>chLeaderName;    // 先后输入5张票上所写的姓名
        // 将票上姓名与3个候选人的姓名比较, 如果与某一候选人的姓名相同,就给他加一票
        for(j=0; j<3; j++)
            if(strcmp(chLeaderName, leader[j].chName)==0)
                leader[j].count++;
    }
    cout<<endl;
    for(i=0; i<3; i++)        //输出3个候选人的姓名与最后得票数
    {
        cout<<leader[i].chName<<":"<<leader[i].count<<endl;
    }
    return 0;
}
           

结构体与指针:

//对候选人得票的统计 CH8_4
#include <iostream>
#include <string.h>
using namespace std;

//结构体
struct  Person
{
    char name[20];
    int  count;
};
//结构体数组
Person leader[3]= {"li",0, "zhang",0, "wang",0};

int main(int argc, char* argv[])
{
    int  i, j;
    char  name[20];
    Person *pt;	//结构体指针
    pt = leader;
    //
    for(i=1; i<=10; i++)
    {
        //
        cout<<"请输入候选人姓名:";
        cin>>name;
        //
        for(j=0; j<3; j++)
            if(strcmp(name,(pt+j)->name)==0)
                (pt+j)->count++;
    }

    //
    for(i=0; i<3; i++)
        cout<<(pt+i)->name<< "\t"<<(pt+i)->count<<endl;

    return 0;
}
           

继续阅读