鱼C论坛

 找回密码
 立即注册
查看: 2737|回复: 3

投票的程序,有点小问题

[复制链接]
发表于 2012-2-22 13:38:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <iostream>
#include <cstring>
#define n 3
using std::cout;
using std::cin;
using std::endl;
using std::string;
using std::getline;
struct Data
{
    string name;
    int num;
}tongji[n];

int main()
{
      for(int i=0;i<3;i++)
            {
                cout <<"输入候选人名字: \n";
                getline(cin,tongji[i].name);
            }
            for(int j=0;j<3;j++)
            {
                cout <<"候选人为:"<<tongji[j].name<<"   ";
            }

    while(1)
    {
        string nam;
        cout<<"\n输入你要选的侯选人的名字:  ";
        getline(cin,nam);
        for(int z=0;z<3;z++)
        {
            if(nam==tongji[z].name)
            {
                            tongji[z].num++;
            }
        }
        if(nam=="jieshu")
        {
                            goto end;
        }
/*       else
        {
                            cout<<"输入错误,请重新输入\n";
        }
*/
    }
end:
    for(int a=0;a<3;a++)
    {
            cout<<tongji[a].name<<"的票数为"<<tongji[a].num<<"\n";
    }
    return 0;
}

如果加上程序中注释掉的那部分
        }
/*       else
        {
                            cout<<"输入错误,请重新输入\n";
        }
*/
    }
每次投票,即使正确的输入,也会显示输入错误,不知道是为什么???
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-22 17:11:08 | 显示全部楼层
LZ确定你的程序没错误?为啥我的VS2010报了一大堆错误。。。。。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-22 17:35:03 | 显示全部楼层
LZ是不是想用jieshu用来作为结束标志?如果是的话,那就有逻辑错误了
当你不是输入jieshu时,if语句为假,肯定执行else语句啊,去的eles语句就好了啊

  1. #include <iostream>
  2. #include <cstring>
  3. #define n 3

  4. using namespace std;

  5. struct Data
  6. {
  7.     char name[50];
  8.     int num;
  9. }tongji[n];

  10. int main()
  11. {
  12.       for(int i=0;i<3;i++)
  13.             {
  14.                 cout <<"输入候选人名字: \n";
  15.                 cin >> tongji[i].name;
  16.             }
  17.             for(int j=0;j<3;j++)
  18.             {
  19.                 cout <<"候选人为:" << tongji[j].name <<"   ";
  20.             }

  21.     while(1)
  22.     {
  23.         char nam[50];
  24.         cout<<"\n输入你要选的侯选人的名字:  ";
  25.         cin >> nam;
  26.         cin.sync();
  27.         for(int z=0;z<3;z++)
  28.         {
  29.             
  30.             if(0 == (strcmp(nam,tongji[z].name)))
  31.             {
  32.                       tongji[z].num++;
  33.             }
  34.         }
  35.         if(0 == (strcmp(nam,"jieshu")))
  36.         {
  37.                             goto end;
  38.         }
  39.     }
  40. end:
  41.     for(int a=0;a<3;a++)
  42.     {
  43.             cout<<tongji[a].name<<"的票数为"<<tongji[a].num<<"\n";
  44.     }
  45.     return 0;
  46. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-2-23 12:48:38 | 显示全部楼层

对的,已经改好了
  getline(cin,nam);
        for(int z=0;z<3;z++)
        {
            if(nam==tongji[z].name)
            {
                            tongji[z].num++;
            }
        }
        if((nam!=tongji[0].name)&&(nam!=tongji[1].name)&&(nam!=tongji[2].name))
        {
                            cout<<"输入错误,请重新输入\n";
        }
        if(nam=="jieshu")
        {
                            goto end;
        }

    }
end:
    for(int a=0;a<3;a++)
    {
            cout<<tongji[a].name<<"的票数为"<<tongji[a].num<<"\n";
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-11 13:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表