计算机二级考试C语言辅导:12个球的程序
来源:优易学  2011-12-10 17:23:27   【优易学:中国教育考试门户网】   资料下载   IT书店

 

//得到单侧的重量
int getSingleWeight(char* str)
{
int ballsNum, haveBadBall;
char* p;
ballsNum = strlen(str);
haveBadBall = 0;
for(p = str; *p != ’\0’; p++)
{
if(*p == badBall)
haveBadBall++;
}
return ((ballsNum-haveBadBall)*NORMAL_WEIGHT+haveBadBall*badBallWeight);
}
int verifyMultiBallName(char* leftStr, char* rightStr)
{
char *l, *r;
for(l = leftStr; *l != ’\0’; l++)
{
for(r = rightStr; *r != ’\0’; r++)
{
if(*l == *r)
return FALSE;
}
}
return TRUE;
}
int main()
{
int loopTime, err;
int leftWeight, rightWeight;
char left[128],right[128];
char bad[16];
printf("有12个外表一模一样的小球,其中有一个的质量和其他11个球不一样(11个球的质量完全相同),\
而且该球不知道是轻点还是重点。现在给你一个天平(无砝码),只有3次测量机会,请你找出该球。球号从a到l(小写)\n");
badBall = getBadBall();
getBadBallWeight();
for(loopTime = 1; loopTime <= LOOP; loopTime++)
{
printf("pls input left balls: ");
scanf("%s", left);
err = verifySingle(left);
if(FALSE == err)
goto error;

leftWeight = getSingleWeight(left);
printf("pls input right balls: ");
scanf("%s", right);
err = verifySingle(right);
if(FALSE == err)
goto error;
rightWeight = getSingleWeight(right);
err = verifyMultiBallName(left, right);
if(FALSE == err)
{
printf("\nERROR: one ball both in left and right\n");
goto error;
}
if(leftWeight > rightWeight)
{
printf("result %d : left > right\n", loopTime);
}
else if(leftWeight < rightWeight)
{
printf("result %d : left < right\n", loopTime);
}
else
{
printf("result %d : left = right\n", loopTime);
}
continue;
error:
loopTime--;
}
printf("pls input the bad ball name:");
scanf("%s", bad);
if(*bad == badBall)
{
printf("\ncongratulation,your selected is right!\n");
}
else
{
printf("\nsorry,your selected is wrong!\n");
}
return 0;
}

上一页  [1] [2] 

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训