C语言编译不通过,求指点,在线等!

2025-03-07 04:23:26
推荐回答(3个)
回答1:

第一处为把int select (char a[30];int  candidant [6]);那个括号里面的分号改为逗号;

第二处为把gets()里面的a[30],改为a,因为这里需要一个指针,而不是一个数;

第三次同样,这里是调用函数,不是声明函数,这里需要指针,而不是数,把参数改为(a,candidant)即可;

第四处为Pd2()这个函数在前面没有声明你就引用了  ,要在前面声明一下函数的原型,并且这里你还是滥用了参数,这里需要的是指针,而不是一个数

你的Pd1()函数也是没有申明就用了,记得申明先。 这里注意一下,由于你要在   

这里引用PD1(),所以你要在这个函数里面声明它,也可以在程序开始的时候声明,作为全局函数。就像这样

   下面一个问题就是

这里的不等于不是 !== , 而是 != ,你多了一个等号,并且for是for(;;)这种结构

所以你应该改为for(r = 0; a[i+1] != '\0' ;i++,r++);

   老问题的依旧。。另外if(b[10] = "monkey")这是个错误的句子,b[10]是一个数,而"monkey"表达的是这个字符串的首地址,并且你的等于还是错的,逻辑的等于是 == 两个等号。 


先把你的逻辑理清了,再看看把,好多基本的语法错误。。。         

         

回答2:

1.else candidant [5]=candidant [5]+1这一句的if在哪里?
2.strcmp (b[10],"vipper")——类似这样的语句全是错的:b[10]是一个字符,而"vipper"是个字符串,怎么比较?写成strcmp (b,"vipper")才对,因为二者都是字符串了。
3.PD1 (candidant [6],b[10])好像还没有声明就调用了……
4.类似return (candidant [0], candidant [1], candidant [2],candidant [3], candidant [4], candidant [5])这样的语句只返回只能返回最右边的那个“,”后面的一项的值。不知原意是不是这样。
5.不该有空格的地方不要留空格,如candidant [1]写成candidant[1]为好……

回答3:

// 修改之后的代码
#include "stdio.h"
#include "string.h"
int PD1(int candidant[6],char b[10]); //添加
void PD2 (int candidant[6]); //添加
int select(char a[30],int candidant[6]); //int select(char a[30];int candidant[6]);
void main()
{
int n;
char a[30];
int candidant [6]={0};
for (n=1;n<10;n++)
{
printf("please input the ticket\n");
gets(a); // gets (a[30]);
select(a,candidant); //select (a[30], candidant [6]);
PD2 (candidant);//PD2 ( candidant [6]);
}
}
int select(char a[30],int candidant[6])//int select(char a[30];int candidant[6])
{
int i,r;
char b[10];
char c[10];
for (i=0;a[i]!='/0';i++)
{b[i]=a[i];}
PD1(candidant,b);//PD1 (candidant [6],b[10]);
i=0;
for(r=0;a[i+1]!='/0';i++,r++)//for(r=0;a[i+1]!=='/0',i++,r++)
c[r]=a[i+1];
PD1(candidant,c);//PD1( candidant [6],c[10] );
return ( candidant [0], candidant [1], candidant [2],candidant [3], candidant [4], candidant [5]);
}
int PD1(int candidant [6],char b[10])
{
// strcmp (b,"panda");
if (!strcmp (b,"panda"))// if(b[10]="panda")
candidant [0]=candidant [1]+1;
else if (!strcmp (b,"tigress"))// strcmp (b[10],"tigress");//if (b[10]="tigress")
candidant [1]=candidant [1]+1;//else strcmp (b[10],"monkey");
else if (!strcmp (b,"monkey"))//if (b[10]="monkey")
candidant[2]=candidant[2]+1;// else strcmp (b[10],"crane");
else if (!strcmp (b,"crane"))// if (b[10]="crane")
candidant [3]=candidant [3]+1;
else if (!strcmp (b,"vipper"))// else strcmp (b[10],"vipper");//else strcmp (b[10],"vipper")
candidant[4]=candidant [4]+1;
else
candidant [5]=candidant [5]+1;
return (candidant [0], candidant [1], candidant [2],candidant [3], candidant [4], candidant [5]);
}
void PD2 (int candidant[6])
{
int max,b;
max=candidant [0];
for (b=0;b<=5;b++)
{
if( candidant[b]==max)
{
printf ("The winner is candidant[%d]\n",b);
}
}
}

// 您是初学c吧,多写些简单的函数调用吧