3 回答
TA贡献1877条经验 获得超1个赞
这么明显的问题
int judge 1(char c[N]);
int judge 2(char c[N]);
int judge 3(char c[N]);
int judge 4(char c[N]);
哪有这种声明方法 应该把空格去掉
int judge1(char c[N]);
int judge2(char c[N]);
int judge3(char c[N]);
int judge4(char c[N]);
还有你这程序有重定义的变量 最后C数组变量不知道是怎么冒出来的
我给修改了
#include <iostream>
using namespace std;
const int N=10;
int judge1(char c[N]);
int judge2(char c[N]);
int judge3(char c[N]);
int judge4(char c[N]);
void main()
{
char a[]={'A','B','C','D','E'};//代表五个人
char b[5];// 代表五层楼
int i,j,k,l,m,n;
for(i=0;i<5;i++)
{
b[0]=a[i];
for(j=0;j<5;j++)
{
b[1]=a[j];
for(k=0;k<5;k++)
{
if(i==k||j==k)continue;
b[2]=a[k];
for(l=0;l<5;l++)
{
if(i==l||j==l||j==k)continue;
b[3]=a[l];
for(m=0;m<5;m++)
{
if(i==m||j==m||k==m||l==m)continue;
b[4]=a[m];
n=0;
n=n+judge1(b);
n=n+judge2(b);
n=n+judge3(b);
n=n+judge4(b);
if(n==0) cout<<b[5];
}
}
}
}
}
cout<<"一楼:"<<b[0]<<"二楼:"<<b[1]<<"三楼:"<<b[2]<<"四楼:"<<b[3]<<"五楼:"<<b[4]<<endl;
}
int judge1(char c[])
{
if(c[0]=='A')
return 1;
else
return 0;
}
int judge2(char c[])
{
if(c[4]=='B')
return 1;
else
return 0;
}
int judge3(char c[])
{
for(int i=0;i<5;i++)
{
if( (c[i]=='C'&&c[i+1]=='D')||(c[i]=='D'&&c[i+1]=='C') )return 0;
}
return 1;
}
int judge4(char c[])
{
for(int i=0;i<5;i++)
{
if(c[i]=='C')
{
for(int j=i+1;j<5;j++)
{
if(c[j]=='E')return 0;
}
}
}
return 1;
}
TA贡献1784条经验 获得超7个赞
是要判断五个人各住哪个楼层么???好复杂啊。
int judge 1(char c[N]); 这个定义数组名是不合法的,int judge这样程序会认为你定义的是变量judge 然后系统认为你忘记写分号了。所以会那样提示你错误信息的
int judge 1(char c[N]); 你希望函数名是judge 1么?函数名命名是要遵循标识符命名规则的,不能加空格。可以写成judge_1
int judge 1(c)函数定义语句是必须要声明形参类型才可以的,这里的c未声明类型,那样系统是不允许你调用的
TA贡献1880条经验 获得超4个赞
如果可以,请试着运行下我写的程序,绝对是你想要的结果
#include "Stdio.h"
#include "math.h"
main()
{
int a,b,c,d,e;
printf("a b c d e\n");
for(a=2;a<=5;a++)
{
for(b=1;b<=4;b++)
{
if(b==a)
continue;
for(c=1;c<=5;c++)
{
if(c==a||c==b)
continue;
for(d=1;d<=5;d++)
{
if(d==a||d==b||(abs(c-d)!=1))
continue;
for(e=1;e<=5;e++)
{
if(e==a||e==b||e==c||e==d||e<=c)
continue;
printf("%d %d %d %d %d\n",a,b,c,d,e);
}
}
}
}
}
getch();
}
添加回答
举报