有一道c语言编程的题目,请高手帮忙看看。这么做有什么问题啊??

设有代号为a、b、c的三个足球先生候选人,根据投票者对他们编号的填写顺序分别计分为5、3、2。请编程从键盘上输入投票人数及投票结果,统计他们的分数,并输出那位当选足球先生。注意:若同一张票上有两个相同的代号,则显示出“此票无效”,若最终前两名得分相同则应显示“重新投票”,否则显示“祝贺某某当选足球先生!”
例如:
投票人数:5
a b c
c a b
c a a 该票无效!
c b a
b c a
三位候选人得分为:
a:12
b:13
c: 15
祝贺C当选足球先生。
main()
{
int i,num,x=0,y=0,z=0;
char k[3];
int fenshu(char x,char y[3]);
printf("\n xuan ju ren shu: ");
scanf("%d",&num);
printf("\n xuan piao xin xi:\n");
for(i=0;i<num;i++)
{scanf("%s",k);
if(k[0]==k[1]||k[1]==k[2]||k[0]==k[2])
printf("wu xiao piao!\n");
else
{x=x+fenshu('a',k);
y=y+fenshu('b',k);
z=z+fenshu('c',k);
}
}
printf("\n The three candidates who score :\na: %d\nb: %d\nc: %d\n",x,y,z);
if(x==y&&x>z)printf("\n a b piao yi yang duo, chong xin xuan ju!\n");
if(x==z&&x>y)printf("\n a c piao yi yang duo, chong xin xuan ju!\n");
if(y==z&&y>x)printf("\n b c piao yi yang duo, chong xin xuan ju!\n");
if(x==y&&x==z)printf("\n a b c piao xiang tong ,chong xin xuan ju!\n");
if(x>y&&x>z)printf("\n a shi zu qiu xian sheng!\n");
if(y>x&&y>z)printf("\n b shi zu qiu xian sheng!\n");
if(z>x&&z>y)printf("\n c shi zu qiu xian sheng!\n");
}
Fenshu(char x,char y[3])
{int m;
if(x==y[0]) m=5;
if(x==y[1]) m=3;
if(x==y[2]) m=2;
return(m);
}

1.txt里面的内容
4
a b c
b a c
c a b
a b c

#include<stdio.h>

struct
{
char tick[3];
}m[100][4];

int main()
{

int x,j,i,a2=0,b2=0,c2=0; //x投票人数 a b c分别代表三个候选人 a2 b2 c2分别是他们的得分
int max;
char w;
bool ok[100]={false};
int score[3]={5,3,2};
freopen("D:\\1.txt","r",stdin);
freopen("D:\\2.txt","w",stdout);
puts("请输入投票人数");
scanf("%d",&x);
//cout<<"请参加投票的人开始投票"<<endl;
puts("请参加投票的人开始投票");
for(i=0;i<x;i++)
{
//cout<<"第"<<i+1<<"个:";
printf("第%d个",i+1);
puts("");
for(j=0;j<3;j++)
{
scanf("%s",m[i][j].tick);

}

}
for(i=0;i<x;i++)
{
if(m[i][0].tick[0]==m[i][1].tick[0]
||m[i][0].tick[0]==m[i][2].tick[0]
||m[i][1].tick[0]==m[i][2].tick[0])
{

//cout<<"第"<<i+1<<"张票无效";
printf("第%d张票无效",i+1);
puts("");
ok[i]=false;
}
else
{
ok[i]=true;
}
}
for(i=0;i<x;i++)
{
if(!ok[i])continue;
for(j=0;j<3;j++)
{
if(m[i][j].tick[0]=='a')
{
a2+=score[j];
}
else if(m[i][j].tick[0]=='b')
{
b2+=score[j];
}
else
{
c2+=score[j];
}
}
}
printf("a得分:%d\n",a2);
printf("b得分:%d\n",b2);
printf("c得分:%d\n",c2);

max=a2;
w='a';
if(max<b2) {max=b2; w='b';}
if(max<c2) {max=c2; w='c';}
int cnt=(max==a2)+(max==b2)+(max==c2);
if(cnt>1)
{
puts("重新投票");
}
else
{
printf("祝贺%c当选冠军!\n",w);
}
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-02-16
#include <stdio.h>
main()
{
int i,num,x=0,y=0,z=0;
char k[3];
int fenshu(char x,char y[3]);
printf("\n xuan ju ren shu: ");
scanf("%d",&num);
printf("\n xuan piao xin xi:\n");
for(i=0;i<num;i++)
{scanf("%s",k);
if(k[0]==k[1]||k[1]==k[2]||k[0]==k[2])
printf("wu xiao piao!\n");
else
{x=x+fenshu('a',k);
y=y+fenshu('b',k);
z=z+fenshu('c',k);
}
}
printf("\n The three candidates who score :\na: %d\nb: %d\nc: %d\n",x,y,z);
if(x==y&&x>z)printf("\n a b piao yi yang duo, chong xin xuan ju!\n");
if(x==z&&x>y)printf("\n a c piao yi yang duo, chong xin xuan ju!\n");
if(y==z&&y>x)printf("\n b c piao yi yang duo, chong xin xuan ju!\n");
if(x==y&&x==z)printf("\n a b c piao xiang tong ,chong xin xuan ju!\n");
if(x>y&&x>z)printf("\n a shi zu qiu xian sheng!\n");
if(y>x&&y>z)printf("\n b shi zu qiu xian sheng!\n");
if(z>x&&z>y)printf("\n c shi zu qiu xian sheng!\n");
}
fenshu(char x,char y[3])//就是这里有问题 函数名要小写,C++是大小写敏感的
{int m;
if(x==y[0]) m=5;
if(x==y[1]) m=3;
if(x==y[2]) m=2;
return(m);
}本回答被网友采纳
第2个回答  2012-02-26
fenshu(char x,char y[3])//就是这里有问题 函数名要小写,C++是大小写敏感的
{int m;
if(x==y[0]) m=5;
if(x==y[1]) m=3;
if(x==y[2]) m=2;
return(m);
}
第3个回答  2012-02-17
看二楼的
第4个回答  2012-02-17
二楼

关于C语言编写程序的一个疑问 高手帮忙看看我的程序哪错了
看了你的代码觉得,你在C语言的语法规则上还有待提高啊,在此举出你所给出的代码的若干错误。首先,你的代码不完整。第9、11、13行要定义三个100行的二维字符数组,如果仅仅是类似char adj[100][12]={"开心的"}的定义;这样adj[1]到adj[99]这99个词都会是空值(ASCII码为0),若用printf()函...

这儿有一道C语言编程题,请达人帮忙看一下有什么错误。
n每步循环的开始,要把相关变量清0 for(n=3;n<=20;n++){ \/\/以下是将相关变量清0 i=j=flag=0;for(p=0;p<21;p++)for(q=0;q<21;q++)a[p][q]=0;for(curr=1;curr<=n*(n+1)\/2;curr++){

一道C语言编程问题,高手们来看看帮忙解答下
for (c = b-1;c > 0;c--)\/\/以C为循环变量,在1到B之间。{ \/\/判断公式左右两侧是不是相等,相等侧符合题目要求 if (c*c*(a*a+b*b) == a*a*b*b){ sum = a+b+c; \/\/判定成立,求和 printf("SUM = %d\\nA = %d\\nB = %d\\nC = %d\\n",sum,a,b,c);return 0;} ...

有一道C语言习题烦高手帮忙指点,给出答案及说明过程!
开始x=6,x++先不使用,--x,x=5,同理y=6 z=(5+6)+(5+6)=22 然后x=x+1=6;y=y+1=7 有些东西不能只靠思考,要实际试一下,其实关于这种顺序的问题,建议在机子上多试几次,这些单凭记忆是很难记清的

一道c语言问题,请各位高手们帮帮忙,谢谢
char p[][20]={“get”,”put”,”out”};p是一个有3个元素的数组,数组中的每个元素都是一个char[20]类型的数组。也就是说,p是一个二维数组。strlen(p[0])+strlen(p[1])+ strlen(p[2])即计算p中的三个字符串的长度总和,为3+3+3=9。

为什么这道C语言的关于字符数组的题我做错了?高手帮忙看下~~
\/\/第一,“n位置的开始处”这个说法很不准确,我的理解是:如果n位置是字符'X',那么插入字符后为:Xbbbb(设"bbbb"为插入的字符)\/\/按照你介绍,加上空格这个字符,'o'前面的位置应该是9 \/\/第二,你的字符串太小了,如果str1里的字符为12个,str2里的字符10个,这样插入的话很容易就溢出 \/...

求C语言高手帮忙分析代码
他们通常都愿意分享知识和经验。因此,尊重他们的付出,如果他们的回答对您有帮助,请表示感谢。这不仅鼓励了他们的参与,也建立了良好的社区氛围。总之,有效沟通和明确表述问题对于获得高质量的代码分析帮助至关重要。遵循上述建议,您将更有可能得到具体、实用的解决方案,提高编程技能和解决问题的能力。

[急求助]C语言程序编程题,请高手帮忙解答下!
按照题目要求编写的程序如下(见图)

c语言编程题,请高手帮忙做一下,拜谢,急急急急……
\/\/ 输入数据并计算总分,基本可以实现无异常输入,名字数组长度30,有越界可能 \/\/ for(count = 0; count < LEN; count++){ printf("Input student%d's name: ", (count+1));gets(table[count].name);printf("Input the score of Math: ");while(!scanf("%f", &table[count].scrOfMth...

一个c语言问题,请求高手帮忙。
i=10,j=1,或者说,j被析构了。

相似回答