天天看點

候選人得票

對候選人得票的統計程式:設有 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;
}
           

繼續閱讀