有3个候选人,每个选民只能投一票,用C语言编一个统计票数的程序,最后输出的票结果,下面我写的,哪错了
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有3个候选人,每个选民只能投一票,用C语言编一个统计票数的程序,最后输出的票结果,下面我写的,哪错了相关的知识,希望对你有一定的参考价值。
#include"stdio.h"
#include"string.h"
struct People
char name[20];
int count;
leader[3]="zhang",0,"li",0,"sun",0;
void main()
char leader_name[20];
int i,j;
for(i=1;i<=10;i++)
scanf("%s",leader_name);
for(j=0;j<3;j++)
if(strcmp(leader_mame,leader[j].name)==0)
leader[j].count++;
printf("the result:\n");
for(i=0;i<3;i++)
printf("%5s:%d\n",leader[i].name,leader[i].count);
假设有10个选民在投票
没有问题啊,就是你的有一个位置打错了。
本回答被提问者采纳 参考技术B #include <stdio.h>#include <stdlib.h>
#include <String.h>
struct People
char name[20];
int count;
leader[3]="zhang","li","sun";
int main(int argc, char * argv[])
char leader_name[20];
int i,j;
for (i = 0; i < 10; i++)
scanf("%s", leader_name);
for(j = 0; j < 3; j++)
if (strcmp(leader_name, leader[j].name) == 0)
leader[j].count++;
printf("the result: \n");
for (i = 0; i < 3; i++)
printf("%5s : %d\n", leader[i].name, leader[i].count);
return EXIT_SUCCESS;
编译可运行 参考技术C if(strcmp(leader_name,leader[j].name)==0) //这里要改一下哦leader_name
leader[j].count++; 参考技术D dev一般不能识别void name 你可以换一下为int name试试看 第5个回答 2013-07-13 倒数第六行中应该是leader_name 你拼写错了
贪心练习
练习1 CF 1020 C
有n个选民, m个党派, 第i个选民初始投$p_i$一票, 可以花费$c_i$改变投票, 求最少花费使得第一个党派的票数严格最大
假设最终第一个党派得票数$x$, 枚举$x$, 则对于所有票数$ge x$的党派, 贪心选择尽量小的c改选第一个党派.若最后票数还不够, 再从没改过的人中选择尽量小的改选即可
#include <iostream> #include <algorithm> #include <cstdio> #include <vector> #define REP(i,a,n) for(int i=a;i<=n;++i) #define pb push_back #define x first #define y second using namespace std; typedef long long ll; typedef pair<int,int> pii; const int N = 4e5+10, INF = 0x3f3f3f3f; int n, m; vector<pii> s[N]; pii a[N]; int vis[N]; int main() { scanf("%d%d", &n, &m); REP(i,1,n) { int x, y; scanf("%d%d", &x, &y); s[x].pb({y,i}); a[i] = {x==1?1e9:y,i}; } sort(a+1, a+1+n); REP(i,2,m) sort(s[i].begin(),s[i].end()); ll ans = 1e18; REP(i,1,n) { int tot = 0; ll c = 0; REP(j,2,m) if (s[j].size()>=i) { for (int k=0; k<=s[j].size()-i; ++k) { ++tot, c+=s[j][k].x, vis[s[j][k].y]=1; } } REP(j,1,n) { if (s[1].size()+tot<i&&!vis[a[j].y]) { ++tot, c+=a[j].x; } } if (s[1].size()+tot==i) { ans = min(ans, c); } REP(i,1,n) vis[i]=0; } printf("%lld ", ans); }
以上是关于有3个候选人,每个选民只能投一票,用C语言编一个统计票数的程序,最后输出的票结果,下面我写的,哪错了的主要内容,如果未能解决你的问题,请参考以下文章