C趣味程序百例(17)谁家孩子跑最慢

文章作者 100test 发表时间 2007:03:10 17:31:07
来源 100Test.Com百考试题网


57.谁家孩子跑最慢
张王李三家各有三个小孩。一天,三家的九个孩子在一起比赛短跑,规定不分年龄大小,跑第一得9分,跑第2得8分,依此类推。比赛结果各家的总分相同,且这些孩子没有同时到达终点的,也没有一家的两个或三个孩子获得相连的名次。已知获第一名的是李家的孩子,获得第二的是王家的孩子。问获得最后一名的是谁家的孩子?
*问题分析与算法设计
按题目的条件,共有1 2 3 ... 9=45分,每家的孩子的得分应为15分。根据题意可知:获第一名的是李家的孩子,获第二名的是王家的孩子,则可推出:获第三名的一定是张家的孩子。由“这些孩子没有同时到达终点的”可知:名次不能并列,由“没有一家的两个或三个孩子获得相连的名次”可知:第四名不能是张家的孩子。
程序中为了方便起见,直接用分数表示。
*程序与程序注释
#include
int score[4][4].
void main()
{
int i,j,k,who.
score[1][1]=7. /*按已知条件进行初始化:score[1]:张家三个孩子的得分*/
score[2][1]=8. /*score[2]:王家三个孩子的得分*/
score[3][1]=9. /*李家三个孩子的得分*/
for(i=4.i<6.i ) /*i:张家孩子在4到6分段可能的分数*/
for(j=4.j<7.j ) /*j:王家孩子在4到6分段可能的分数*/
for(k=4.i!=j&.&.k<7.k ) /*k:李家孩子在4到6分段可能的分数*/
if(k!=i&.&.k!=j&.&.15-i-score[1][1]!=15-j-score[2][1] /*分数不能并列*/
&.&.15-i-score[1][1]!=15-k-score[3][1]
&.&.15-j-score[2][1]!=15-k-score[3][1])
{
score[1][2]=i.score[1][3]=15-i-7. /*将满足条件的结果记入数组*/
score[2][2]=j.score[2][3]=15-j-8.
score[3][2]=k.score[3][3]=15-k-9.
}
for(who=0,i=1.i<=3.i ,printf("\n"))
for(j=1.j<=3.j )
{
printf("%d",score[i][j]). /*输出各家孩子的得分情况*/
if(score[i][j]==1)who=i. /*记录最后一名的家庭序号*/
}
if(who==1) /*输出最后判断的结果*/

相关文章


笔试考试中如何正确审题
C趣味程序百例(18)拉丁方
考生切记不要带通讯工具进入考场
C趣味程序百例(17)谁家孩子跑最慢
全国计算机等级考试考点主考的职责
全国计算机等级考试二级笔试模拟试卷(五)
2005年国家计算机等级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛