L2-第三小组题库

时间:2022-12-19 23:00:44

1.抓交通肇事犯

一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征

。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同; 丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索求出车号。

*问题分析与算法设计

按照题目的要求造出一个前两位数相同、后两位数相同且相互间又不同的整数,然后判断该整数是否是另一个整数的平方。

*程序说明与注释

L2-第三小组题库L2-第三小组题库
#include<stdio.h>

#include<math.h>

int main()

{

int i,j,k,c;

for(i=1;i<=9;i++) /*i:车号前二位的取值*/

for(j=0;j<=9;j++) /*j:车号后二位的取值*/

if(i!=j) /*判断二位数字是否相异*/

{

k=i*1000+i*100+j*10+j; /*计算出可能的整数*/

for(c=31;c*c<k;c++); /*判断该数是否为另一整数的平方*/

if(c*c==k) printf("Lorry–No. is %d.\n",k); /*若是,打印结果*/

}

}
*运行结果

Lorry _No.is 7744

2.百钱百鸡问题

中国古代数学家张丘建在他的《算经》中提出了著名的“百钱买百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?

*问题分析与算法设计

设鸡翁、鸡母、鸡雏的个数分别为x,y,z,题意给定共100钱要买百鸡,若全买公鸡最多买20只,显然x的

值在0~20之间;同理,y的取值范围在0~33之间,可得到下面的不定方程:

5x+3y+z/3=100

x+y+z=100

所以此问题可归结为求这个不定方程的整数解。

由程序设计实现不定方程的求解与手工计算不同。在分析确定方程中未知数变化范围的前提下,可通过对

未知数可变范围的穷举,验证方程在什么情况下成立,从而得到相应的解。

*程序说明与注释

#include<stdio.h>

int main()

{

int x,y,z,j=0;

printf("Folleing are possible plans to buy 100 fowls with 100 Yuan.\n");

for(x=0;x<=20;x++) /*外层循环控制鸡翁数*/

for(y=0;y<=33;y++) /*内层循环控制鸡母数y在0~33变化*/

{

z=100-x-y; /*内外层循环控制下,鸡雏数z的值受x,y的值的制约*/

if(z%3==0&&5*x+3*y+z/3==100)

/*验证取z值的合理性及得到一组解的合理性*/

printf("%2d:cock=%2d hen=%2d chicken=%2d\n",++j,x,y,z);

}

}
View Code

 

3.三色球问题

若一个口袋中放有12个球,其中有3个红的。3个白的和6个黒的,问从中任取8个共有多少种不同的颜色搭

配?

*问题分析与算法设计

设任取的红球个数为i,白球个数为j,则黒球个数为8-i-j,根据题意红球和白球个数的取值范围是0~3,

在红球和白球个数确定的条件下,黒球个数取值应为8-i-j<=6。

*程序说明与注释

L2-第三小组题库L2-第三小组题库
#include<stdio.h>

int main()

{

int i,j,count=0;

printf(" RED BALL WHITE BALL BLACKBALL\n");

printf("…………………………………………..\n");

for(i=0;i<=3;i++) /*循环控制变量i控制任取红球个数0 ̄3*/

for(j=0;j<=3;j++) /*循环控制变量j控制任取白球个数0 ̄3*/

if((8-i-j)<=6)

printf(" %2d: %d %d %d\n",++count,i,j,8-i-j);

}
View Code