永发信息网

C语言程序问题,C语言高手进

答案:4  悬赏:50  手机版
解决时间 2021-01-25 03:06
  • 提问者网友:我没有何以琛的痴心不悔
  • 2021-01-24 19:17
C语言程序问题,C语言高手进
最佳答案
  • 五星知识达人网友:拜訪者
  • 2021-01-24 20:06
//你这题目太好玩了,我自己把赛车改到12辆,8个专家,哈哈,好玩
//拿分来吧
#include
#include

int peA,peB,peC,peD; //定义专家
int num; //定义几专家说对了

int bestcar (int n) //是最好的赛车函数
{
if (n>0 && n<5) return n;
return 0;
}

int nbestcar (int n) //不是最好的赛车函数
{
if (n>0 && n<5) return -n;
return 0;
}

int right (char c) //谁说的对函数
{
if (c=='A') return peA;
if (c=='B') return peB;
if (c=='C') return peC;
if (c=='D') return peD;
return 0;
}

int error (char c) //谁说的不对函数
{
if (c=='A') return -peA;
if (c=='B') return -peB;
if (c=='C') return -peC;
if (c=='D') return -peD;
return 0;
}

void main ()
{
int i,tmp;

//初始化就在这里
num=1; //有1为专家说的对
peA=bestcar(2); //专家A说赛车2最好
peB=bestcar(4); //专家B说赛车4最好
peC=nbestcar(3); //专家C说赛车3不是最好
peD=error('B'); //专家D说B说的不对

if (peA==0) { printf("专家A在胡说八道\n"); exit(1); }
if (peB==0) { printf("专家B在胡说八道\n"); exit(1); }
if (peC==0) { printf("专家C在胡说八道\n"); exit(1); }
if (peD==0) { printf("专家D在胡说八道\n"); exit(1); }

printf("The best car is : car");
for (i=1;i<5;i++) //核心算法就在这里,i是赛车,判断专家对错,tmp计数和num比较
{
tmp=0;
if (peA==i) tmp+=1;
if (peB==i) tmp+=1;
if (peC==i) tmp+=1;
if (peD==i) tmp+=1;
if ( peA<0 && (peA+i != 0) ) tmp+=1;
if ( peB<0 && (peB+i != 0) ) tmp+=1;
if ( peC<0 && (peC+i != 0) ) tmp+=1;
if ( peD<0 && (peD+i != 0) ) tmp+=1;
if (tmp==num) printf("%d",i);
}
printf("\n");
}
全部回答
  • 1楼网友:春色三分
  • 2021-01-24 22:38
首先你得理清题目的思绪:1假设A对的话,CD选项和题意相矛盾,所以得出2号赛车不是最好的。2假设B对的话,C选项和题意也相矛盾,所以得出4号赛车也不是最好的。3假设C对的话,D选项和BD选项相互矛盾,所以得出4号赛车也不是最好的。4假设D对的话,得出3号赛车是最好的。所以得出结论:D说真话,3号赛车是最好的。
你需要的程序是结合这个例子输出3号赛车的编号还是只要求输出3号赛车编号?
  • 2楼网友:詩光轨車
  • 2021-01-24 21:12
自己写的,希望帮到你:
#include

void main()
{
int view[4][4];
int result[4] = {0};//result[i]存储第i+1辆车的专家意向统计结果
int car;
int j = 0;
//view[i][j]分别存储第i个专家的第j个意向车编号,如果这个值为零,表明该专家意向结束
view[0][0] = 2;
view[0][1] = 0;
view[1][0] = 4;
view[1][1] = 0;
view[2][0] = 1;
view[2][1] = 2;
view[2][2] = 4;
view[2][3] = 0;
view[3][0] = 1;
view[3][1] = 2;
view[3][2] = 3;
view[3][3] = 0;
//统计每辆车的专家意向总和
for(car=1; car <=4; car++)
{
j = 0;
while(view[car-1][j])
{
result[view[car-1][j]-1]++;
j++;
}
}
//因为只有一个专家的说法是对的,所以专家意向和是1的车辆才是所求
for(car = 1; car <= 4; car++)
{
if(result[car-1] == 1)
{
printf("%d is the best car\n", car);
break;//因为只有一辆车是最好的,所以可直接结束判断
}
}
}
  • 3楼网友:轮獄道
  • 2021-01-24 20:29
期待中
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯