#include
void check(int ab[4]);
main()
{
int a[4];//a[0]相当于a队,a[1]相当于b队,a[2]相当于c队,a[3]相当于d队
int i;
for(i=1234;i<=4321;i++)
{ //这段产生四个队伍的名次
a[0]=i/1000;
a[1]=i%1000/100;
a[2]=i%1000%100/10;
a[3]=i%1000%100%10; //上面这段产生所有的4位数排列
if((a[0]!=a[1])&&(a[0]!=a[2])&&(a[0]!=a[3])
&&(a[1]!=a[2])&&(a[1]!=a[3])
&&(a[2]!=a[3]) //上面这段去除4位数排列中有重复的部分
&&(a[0]>0)&&(a[0]<5)
&&(a[1]>0)&&(a[1]<5)
&&(a[2]>0)&&(a[2]<5)
&&(a[3]>0)&&(a[3]<5)) //上面这段去除包含1,2,3,4以外名次的情况
{
check(a) ; //开始判断产生的名次是否符合预测
}
else
;
}
}
void check(int a[4])
{
if((1==a[0])^(2==a[1])//甲的预测(一对一错)
&&(1==a[2])^(3==a[3])//乙的预测(一对一错)
&&(3==a[0])^(2==a[3]))//丙的预测(一对一错)
{
printf("A:%d B:%d C:%d D:%d\n",a[0],a[1],a[2],a[3]);
}
else
{
;
}
}
我刚写的个,感觉不是很简洁,vc下运行过,在tc下把注释去掉后也能通过并运行,不知道有注释为什么不行啊;
欢迎其他的朋友提提意见,本人这段时间对c语言也比较感兴趣。
//平均成绩(去掉最高分,去掉最低分)。这里你可以先求出最大值和最小值,用总数减去它们后再求平均值其余的你应该用吧
有不会的请追问