一个很简单的C语言题目出错了,改不过来了

#include <stdio.h>
#include <stdlib.h>
int a=0;
int b=0;
int c=0;
int d=0;
int Process(int e,int f,int j,int h)
{
int max;
max=e>f?e:f;
max=max>j?max:j;
max=max>h?max:h;
return max;
}
int main()
{
int n,i,x;
printf("开始选举。请注意:有效候选人代号为1,2,3,4。");
while(1)
{
printf("请输入班长候选人代号(数字0结束):");
scanf("%d",&i);
printf("\n");
if(i==1)
{
a++;
}
if(i==2)
{
b++;
}
if(i==3)
{
c++;
}
if(i==4)
{
d++;
}
if(i<0 && i>4)
{
printf("此选票无效\n");
}
if(i==0)
{
printf("选举结束。");
break;
}
}
printf("投票结束\n");
printf("选举结果如下:\n");
printf("1:%d\n",a);
printf("2:%d\n",b);
printf("3:%d\n",c);
printf("4:%d\n",d);
n=Process(int a,int b,int c,int d);
printf("选举最终结果是:候选人代号是%d同学当选班长",x);
return 0;
}

以下是他提出的问题

D:\software\ds\main.c|56|error: expected expression before 'int'|
D:\software\ds\main.c|56|error: too few arguments to function 'Process'|
D:\software\ds\main.c|7|note: declared here|
D:\software\ds\main.c|17|warning: variable 'n' set but not used [-Wunused-but-set-variable]|
||=== Build failed: 2 error(s), 1 warning(s) (0 minute(s), 0 second(s)) ===|
求解答错误的地方和如何改
这是题目要求

C:\

“C:\资料\MY document\试题\SEM1\LGC\DEBUG\Lgc3.exe”

_



×

开始选举。请注意:有效候选人代号为1,2,3,4。
请输入班长候选人代号(数字0结束):4
请输入班长候选人代号(数字0结束):5
此选票无效
请输入班长候选人代号(数字0结束):3
请输入班长候选人代号(数字0结束):4
请输入班长候选人代号(数字0结束):4
请输入班长候选人代号(数字0结束):2
请输入班长候选人代号(数字0结束):4
请输入班长候选人代号(数字0结束):1
请输入班长候选人代号(数字0结束):1
请输入班长候选人代号(数字0结束):4
请输入班长候选人代号(数字0结束):0
选举结束。
选举结果如下:
1:2
2:1
3:1
4:5
选举最终结果是:候选人代号是4同学当选班长
Press any key to continue

#include <stdio.h>
#include <stdlib.h>

int a=0;
int b=0;
int c=0;
int d=0;

int Process(int e,int f,int j,int h) {
int max;
max = e > f ? e : f;
max = max > j ? max : j;
max = max > h ? max : h;
return max;
}

int main() {
int n,i,x;
printf("开始选举。请注意:有效候选人代号为1,2,3,4。\n");
do {
printf("请输入班长候选人代号(数字0结束):");
scanf("%d",&i);
switch(i) {
case 1 : ++a; break;
case 2 : ++b; break;
case 3 : ++c; break;
case 4 : ++d; break;
default: printf("此选票无效\n"); break;
}
    }while(i);
    printf("投票结束\n");
    printf("选举结果如下:\n");
    printf("1:%d\n",a);
    printf("2:%d\n",b);
    printf("3:%d\n",c);
    printf("4:%d\n",d);
    n = Process(a,b,c,d);
    printf("选举最终结果是:得票数是%d同学当选班长\n",n);
    return 0;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-11-23
n = Process(a, b, c, d);
if (n == a) x = 1;
else if (n == b) x = 2;
else if (n == c) x = 3;
else if (n == d) x = 4;
printf("选举最终结果是:候选人代号是%d同学当选班长", x);

追问

运行的时候输入0就直接结束了

追答

输入0的话选举就结束了

追问

有题目要求,运行以下的话不行呢,,哪里错了额

追答

题目要求你不放上来?

追问

放上去了,刚补充上去的,马上就不能在追问了。。。哪里错了直接帮忙打出来吧,运行可以在给我

追答#include <stdio.h>
#include <stdlib.h>
int a = 0;
int b = 0;
int c = 0;
int d = 0;
int Process(int e, int f, int j, int h)
{
int max;
max = e > f ? e : f;
max = max > j ? max : j;
max = max > h ? max : h;
return max;
}
int main()
{
int n, i, x;
printf("开始选举。请注意:有效候选人代号为1,2,3,4。\n");
while (1)
{
printf("请输入班长候选人代号(数字0结束):");
scanf("%d", &i);
if (i == 1)
{
a++;
}
if (i == 2)
{
b++;
}
if (i == 3)
{
c++;
}
if (i == 4)
{
d++;
}
if (i<0 || i>4)
{
printf("此选票无效\n");
}
if (i == 0)
{
printf("选举结束。");
break;
}
}
printf("选举结果如下:\n");
printf("1:%d\n", a);
printf("2:%d\n", b);
printf("3:%d\n", c);
printf("4:%d\n", d);
n = Process(a, b, c, d);
if (n == a) x = 1;
else if (n == b) x = 2;
else if (n == c) x = 3;
else if (n == d) x = 4;
printf("选举最终结果是:候选人代号是%d同学当选班长\n", x);
system("pause");
return 0;
}

本回答被提问者采纳
第2个回答  2014-06-24
while(i)

c语言机试做错了要怎么改
机试前两题是:填空题和改错题。这两题考的都很基础,而且改错题已经画出了错误的部分,只需要你自己去修改。做这两题的时候,如果你天上去的答案自己不确定,记住一定要在电脑上去运行下程序(题目上会一个按钮你点击后能运行程序,具体在什么位子我记不清楚了)。如果程序运行有问题,修改,然后继续...

c语言题目怎么改
方法一:在循环里面,最下面,再增加一个scanf语句,这时候注意判断结束时,不是'\\0',而应该是回车符'\\n'。方法二:定义字符串变量str,使用scanfs("%s", str)直接读取一行,放在字符串里,再对该字符串进行逐字符解析。此时,使用\\0来判断是否为结束符(或者使用strlen)。(注意scanfs("%s", s...

一个简单的C语言题目,把我搞垮了。。。
在执行完pt=b+4 这个语句之后,pt 指向了b[4],而C语言是下标是从0开始的,所以b[4]的值是10,pt++ ,是先引用后操作,也就是先引用pt原来的值,后执行++ 操作,*是解运算,整体说也就是先输出pt的值(b[4]的值),pt再向后走一个指向b[5],(*pt)++,现在pt 指向p[5],*pt是把pt...

c语言求助,我这个运行出来不对,请帮我改一下,题目如图,拜托,谢谢
}return 0;}如图所示,最后结果差一点点,是电脑自身精度的问题,可以忽略。望采纳。。。

c语言:如图,请问一下哪里出错了?
首先解答一下这个C语言代码出错的原因:第一个gets未定义:出现这个错误一般是没有包含相应的头文件,或者库里没有这个函数。这里应该是没有这个函数。gets(char *dest)是一个老的库函数,采用这个函数存在越界的安全隐患。它只有一个参数,如果输入的字符个数超过dest内存空间,程序可能失败,也可能被黑客...

简单C语言编程,谢谢,正确有分加,题目在问题补充里~
加分太少,不会有人帮你写这个麻烦的东西的。 本来我已经帮你写完了,可惜我一时失误让我给删掉了。真不好意思,我很怕麻烦,所以不想再写了。提示下,用结构体比较简单,排序利用冒泡法就搞定了~

C语言高手进,一个简单的C语言问题?
一、Y(n) ((N+1)*n)二、z==2*(N+Y(5+1))问题在于这两行语句。第一行,Y里面的n是指函数里面的n,注意,函数里面的n并没有打括号,那么,在第二行里面,Y(5+1)就代替了 ((N+1)*5+1),所以结果就是48~ 如果想改变这个结果,就要在第一行的函数里面的n上面加一个括号改变运算顺序...

请教大家一个c语言中的问题?这个问题已经困扰我很久了。题目如下:
首先你要明确这样一个问题。在C语言中,变量是有生命周期和作用域的(链接类型暂时不提)生命周期,指变量对程序可见的范围 作用域,指变量对程序可修改的范围 注意:有生命周期的变量不一定有作用域(也就是说,可以访问的变量不一定全是可修改的)另外你应该知道,C语言函数只能按值传参,而且形参被...

一道C语言很简单的题目,懂C语言的进来帮忙解下
首先要知道? :这是一个三目运算符,如 (表达式)? x : y, 意思是说如果表达式是正确的,那么就选择x,如果错误的就选择y。那我们看这里,可以分成三部分(a++<b) ? (a++):(c<d?a++:d)。而后面的(c<d?a++:d)又可以分成三部分(c<d) ? (a++):(d)。我们先看第一个式子...

c语言作业输入一个实数 x ,计算 y=x2 ,输出 x,y。求问为什么错了,十分...
因为C语言中x的二次方用x*x表示或者用函数pow(x,2)表示 (需要包含头文件#include<math.h>)所以y=x^2在C语言中不是表示x的二次方,而是x按位异或2,因此结果不对.另外,题目要求输入一个实数,所以x,y要被定义为double型,输入输出格式符%d要改成%lf 改正后的程序如下(见图,改动的地方见注释)...

相似回答