文档库 最新最全的文档下载
当前位置:文档库 › 百钱买百鸡 C语言(一次循环)

百钱买百鸡 C语言(一次循环)

百钱买百鸡 C语言(一次循环)
百钱买百鸡 C语言(一次循环)

#include

#include

int main()

{

inta,b,c,num,mon,i;

printf("本程序用来解决百钱买百鸡的问题。\n");

system("pause");

for(c=0;c<=100;c++)

{

num=100-3*c;mon=100-c;

if((mon-3*num)%2==0)

{

a=(mon-3*num)/2;

if(a<0||a>15) continue;

b=num-a;

if(b<0||b>25)continue;

printf("分配:公鸡%d只,母鸡%d只,雏鸡%d

只,为百钱买百鸡的答案。\n",a,b,3*c);

}

}

system("PAUSE");

return 0;

}

其中一些数值为简要的缩减范围。。至于mon-3*num)%2==0则是通过一元二次方程得出,要不还真没有依次循环做百钱百鸡的例子吧- -~

欢迎c语言爱好者和研究者加我哈,我是新手~~782822925

PYTHON中百钱买百鸡问题

PYTHON中百钱买百鸡问题 问题: 中国古代数学家张丘建在他的《算经》中提出了一个著名的“百钱买百鸡问题”:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,问翁、母、雏各几何?在PYTHON中编程实现将所有可能的方案输出。 问题分析: 根据题意设公鸡、母鸡和雏鸡分别为cock,hen和biddy,如果100钱全买公鸡,那么最多能买20只,所以cock的范围是大小等于0小于等于20;如果全买母鸡那么最多能买33只,所以hen的范围是大于等于0小于等于33;如果100钱全买小鸡,那么根据题意最多能买99只(小鸡的数量应小于100且是3的倍数)。在确定了各种鸡的范围后进行穷举并判断,判断的条件有以下3种:(1)、所买的三种鸡的钱数总和为100; (2)、所买的三种鸡的数量之和为100; (3)、所买的小鸡的数量必须是3的倍数。 程序代码: for cock in range(0,20+1): #鸡翁范围在0到20之间 for hen in range(0,33+1): #鸡母范围在0到33之间 for biddy in range(3,99+1): #鸡雏范围在3到99之间 if (5*cock+3*hen+biddy/3)==100:#判断钱数是否等于100 if (cock+hen+biddy)==100: #判断购买的鸡数是否等于100 if biddy%3==0: #判断鸡雏数是否能被3整除 print ("鸡翁:",cock,"鸡母:",hen,"鸡雏:",biddy) #输出程序运行结果: 鸡翁: 0 鸡母: 25 鸡雏: 75 鸡翁: 4 鸡母: 18 鸡雏: 78 鸡翁: 8 鸡母: 11 鸡雏: 81 鸡翁: 12 鸡母: 4 鸡雏: 84

C语言练习2(选择和循环结构)

C语言(分支和循环结构) 一、选择题 1.以下程序输出结果是( ) main() { int m=5; if(m++>5) printf("%d\n",m); else printf("%d\n",m--);} A)7 B)6 C)5 D)4 2以下程序的输出结果为( ) # include main ( ) { int i=0, j=0, a=6; if ((++i>0)&&(++j>0)) a++; printf ("i=%d, j=%d, a=%d\n", i,j,a);} A) i=0, j=0, a=6 B) i=1, j=1, a=7 C) i=1, j=0, a=7 D) i=0, j=1, a=7 3有如下程序 main() { int a=2,b=-1,c=2; if(a

4若i为int型,且有程序如下,则输出结果是( ) i=111; if(i%3==0) printf("####"); printf("****"); A) #### B) **** C) ####**** D) 无输出结果 5若运行时x=12,则运行结果为( ) {int x, y; scanf("%d", &x); y=x>12 ? x+10:x-12; printf("%d\n", y);} A) 0 B) 22 C) 12 D) 10 6以下程序的输出结果是( ) main() { int i=0, j=0, k=6; if ((++i>0)||(++j>0)) k++; printf("%d, %d, %d\n", i, j, k); } A) 0, 0, 6 B) 1, 0, 7 C) 1, 1, 7 D) 0, 1, 7 7若变量都已正确说明,则以下程序段输出为( ) int a=1,b=2,c=3; if(a>b) a=b; b=c; c=a; printf("a=%d b=%d c=%d\n",a,b,c);

百鸡百钱问题及其算法分析

百钱百鸡问题的最佳解决方案 (陕西师范大学计算机科学学院10级计科一班西安710062) 摘要:本文主要讨论百鸡百钱问题,通常用蛮力法策略,用枚举法表现,排除明显不合理情况,列举出符合问题的解,分别验证解的可行性,得到最优算法。 关键词:蛮力法;枚举;百鸡百钱; The money the chicken question the best solution duan xi-juan, zhongmei, zhao shan-shan, zhao ya-wen (School of Computer Science, ,Shanxi Normol University, Xi’an 710062) Abstact :In this article, we mainly discuss the chicken and the money problem. Usually use brute force method strategy, with enumeration method performance, eliminate obviously unreasonable situation, Enumerate conform to the problem solution, which verified the feasibility of the solution, and get the optimal algorithm. Keywords: The brute force method;Enumeration;Hundred chickens money 1引言 在求解一个较小规模的问题时,可以根据问题中的约束条件把可能的情况一一列举出来,然后注意尝试从中找到满足约束条件的解,若该问题规模较大,符合条件的情况很多,则需要进一步考虑,排除一些明显不合理的情况,尽可能减少问题可能解的列举数目。 2问题描述 百钱百鸡问题。中国古代数学家张丘建在他的《算经》中提出了他的著名的“百钱百鸡问题”:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,翁、母、雏各几何? 3算法设计 根据问题中的约束条件将可能的情况一一列举出来,但如果情况很多,排除一些明显的不会理的情况,尽可能减少问题可能解的列举数目,然后找出满足问题条件的解。 1)算法设计一 首先问题有三种不同的鸡,那么我们可以设鸡翁为x只,鸡母为y只,鸡雏为z只。由题意给出一共要用100钱买一百只鸡,如果我们全部买鸡翁最多可以买100/5=20只,显然

c语言循环结构上机习题

c语言循环结构上机习 题 标准化工作室编码[XX968T-XX89628-XJ668-XT689N]

1、计算n的阶乘(n!),n的取值在1~10之间。分别使用while、do…while和for语句实现。(三个程序) 给循环变量赋初值 循环条件 循环体 循环变量的增值 2、输入一行字符,分别统计输入了多少个字母、数字、空格和其他字符。 3、假设函数f(x)=3x2+2x+1,试利用for循环语句分别求出1<=x<=9的f(1)~f(9)各函数值。 4、有分数序列2/1,3/2,5/3,8/5,13/8,21/13…求这个数列的前20项和。 (分析提示:每个分子等于前一个数据分子与分母的和,每个分母等于前一个数据的分子) 5、输出显示1~100之间可以被n整除的所有整数,运行时n由键盘输入。要求每一行显示5个数,并且统计一共有多少个整数能被n整除。 6、下面程序的功能是从键盘上输入若干学生的学习成绩,统计并输出最高成绩和最低成绩,当输入为负数时结束输入。

main() { float x,amax,amin; scanf("%f",&x); amax=x; amin=x; while( ① ) { if(x>amax) amax=x; if( ② ) amin=x; scanf("%f",&x); } printf("\namax=%f\namin=%f\n",amax,amin);} 7、使用循环语句输出以下图形 8、有一个数学等式:AB*CD=BA*DC,式中的一个字母代表一位数字,试找出所有符合上述要求的乘积式并打印输出。 8、一百个铜钱买了一百只鸡,其中公鸡一只5钱、母鸡一只3钱,小鸡一钱3只,问一百只鸡中公鸡、母鸡、小鸡各多少)。 分析:

C语言循环结构练习题带答案

第5章循环结构程序设计 练习题 1. 单项选择题 (1)语句while (!e);中的条件!e等价于 A 。 A. e==0 B. e!=1 C. e!=0 D. ~e (2)下面有关for循环的正确描述是 D 。 A. for循环只能用于循环次数已经确定的情况 B. for循环是先执行循环体语句,后判定表达式 C. 在for循环中,不能用break语句跳出循环体 D. for循环体语句中,可以包含多条语句,但要用花括号括起来 (3)C语言中 D 。 A. 不能使用do-while语句构成的循环 B. do-while语句构成的循环必须用break语句才能退出 C. do-while语句构成的循环,当while语句中的表达式值为非零时结束循环 D. do-while语句构成的循环,当while语句中的表达式值为零时结束循环 (4)C语言中while和do-while循环的主要区别是 A 。 A. do-while的循环体至少无条件执行一次 B. while的循环控制条件比do-while的循环控制条件严格 C. do-while允许从外部转到循环体内 D. do-while的循环体不能是复合语句 (5)以下程序段 C 。 int x=-1; do { x=x*x; } while (!x); A. 是死循环 B. 循环执行二次 C. 循环执行一次 D. 有语法错误 (6)下列语句段中不是死循环的是__C__。

第5章循环结构程序设计35 A. i=100; while (1) { i=i%100+1; if (i==20) break; } B.for (i=1;;i++) sum=sum+1; C.k=0; do { ++k; } while (k<=0); D.s=3379; while (s++%2+3%2) s++; (7)与以下程序段等价的是__A__。 while (a) { if (b) continue; c; } A. while (a) B. while (c) { if (!b) c; } { if (!b) break; c; } C. while (c) D. while (a) { if (b) c; } { if (b) break; c; } (8)以下程序的输出结果是_B___。 #include main() { int i; for (i=4;i<=10;i++) { if (i%3==0) continue; COUT<

C语言循环结构练习题带答案

C语言循环结构练习题 带答案 Company Document number:WTUT-WT88Y-W8BBGB-

第5章循环结构程序设计 基本知识点 while语句的使用格式和注意事项 do-while语句的使用格式和注意事项 for语句的使用格式和注意事项 break和continue语句在循环语句中的应用 循环结构的嵌套 使用goto语句实现循环结构 穷举法程序设计方法 迭代程序设计方法 练习题5 1.单项选择题 (1)语句while(!e);中的条件!e等价于A。 ==0 !=1 !=0 D.~e (2)下面有关for循环的正确描述是D。 循环只能用于循环次数已经确定的情况 循环是先执行循环体语句,后判定表达式 C.在for循环中,不能用break语句跳出循环体 循环体语句中,可以包含多条语句,但要用花括号括起来(3)C语言中D。 A.不能使用do-while语句构成的循环 语句构成的循环必须用break语句才能退出 语句构成的循环,当while语句中的表达式值为非零时结束循环语句构成的循环,当while语句中的表达式值为零时结束循环(4)C语言中while和do-while循环的主要区别是A。 的循环体至少无条件执行一次 的循环控制条件比do-while的循环控制条件严格 允许从外部转到循环体内 的循环体不能是复合语句 (5)以下程序段C。 intx=-1; do { x=x*x; }

while(!x); A.是死循环 B.循环执行二次 C.循环执行一次 D.有语法错误(6)下列语句段中不是死循环的是__C__。 =100; while(1) { i=i%100+1; if(i==20)break; } (i=1;;i++) sum=sum+1; =0; do { ++k; }while(k<=0); =3379; while(s++%2+3%2) s++; (7)与以下程序段等价的是__A__。 while(a) { if(b)continue; c; } (a) (c) {if(!b)c;} {if(!b)break;c;} (c) (a) {if(b)c;} {if(b)break;c;} (8)以下程序的输出结果是_B___。 #include<> main() { inti; for(i=4;i<=10;i++) { if(i%3==0)continue; COUT<

著名数学难题赏析-百钱百鸡

------著名数学难题赏析: 百鸡百钱 数学教研组 (共两课时120分钟) 我国古代数学书《张邱建算经》中有如下问题,也就是著名的百鸡百钱问题。大意是:公鸡1只值钱5,母鸡1只值钱3,小鸡3只值钱1。今有钱100,买鸡100只。问公鸡、母鸡、小鸡各买几只? 关于这个“百鸡百钱问题”还流传着下面一个故事哩! 在我国南北朝的时候,京城里有个卖鸡的张老老,所生一子,天资聪颖,勤学不怠。到十二三岁,已经博览群书,尤其富有算术的天才。邻居每遇疑难问题,或是钱银上发生纠纷,都由他一言解决。因此大家都叫他张神童,逐渐传扬开去,不久就远近闻名了。当朝的老丞相爱才若渴,一天,听人谈到张神童的算法,心中很是不信,当下想了一个方法要去试探他,于是唤他的仆人去打听张老老卖的鸡是什么价钱。不多时仆人回答说:“公鸡每只卖钱五文,母鸡每只卖钱三文,小鸡每三只卖钱一文。”老丞相就拿出一百文钱,命仆人去给张老老,叫他尽这一百文钱把三种鸡配成一百只,不多不少,明天送来。张老老暗想:这实在是一个难题,然而又不敢违命,当时只好一口答应。等到收市后,就开始把三种鸡配起来。但是左配右配,总是配不成。正在无计可施的时候,他的儿子来了,问起情由,才知道是这样的一件事。于是安慰着父亲,叫他不要着急,明天总有办法。张神童当晚经过仔细研究,果然找到了答案。第二天选出了“公鸡4只,母鸡18只,小鸡78只”叫他父亲送到相府。老丞相拿来一算:4只公鸡值钱二十文,18只母鸡值钱五十四文,78只小鸡值钱二十六文,共计100只鸡,恰巧值钱一百文。心里一高兴,立刻又拿一百文钱给张老老,叫他明天再送一百只鸡来,不过三种鸡的只数要换一种方法搭配。张老老口头答应着,心里很是担忧,垂头丧气地回到家,忙和儿子商量。儿子说:“你明天拿8只公鸡,11只母鸡,81只小鸡送去就是了。”第二天张老老依言送去,老丞相一算,又是一点不错。心里一高兴,又给张老老一百文钱,要再另配一百只鸡。张老老暗想:这回恐怕是无法应付了。不料他的儿子又检出“公鸡12只,母鸡4只,小鸡84只”叫父亲送

百钱买百鸡问题

百钱买百鸡问题 例9-8 百钱买百鸡问题——一百个铜钱买了一百只鸡,其中公鸡一只5钱、母鸡一只3钱,小鸡一钱3只,问一百只鸡中公鸡、母鸡、小鸡各多少)。 这是一个古典数学问题,设一百只鸡中公鸡、母鸡、小鸡分别为x ,y ,z ,问题化为三元一次方程组: ? ? ?=++=++)(100) (1003/35百鸡百钱z y x z y x 这里x,y,z 为正整数,且z 是3的倍数;由于鸡和钱的总数都是100,可以确定x,y,z 的取值范围: 1) x 的取值范围为1~20 2) y 的取值范围为1~33 3) z 的取值范围为3~99,步长为3 对于这个问题我们可以用穷举的方法,遍历x,y,z 的所有可能组合,最后得到问题的解。 数据要求 问题中的常量: 无 问题的输入: 无 问题的输出: int x ,y ,z /*公鸡、母鸡、小鸡的只数*/ 初始算法 1.初始化为1; 2.计算x 循环,找到公鸡的只数; 3.计算y 循环,找到母鸡的只数; 4.计算z 循环,找到小鸡的只数; 5.结束,程序输出结果后退出。 算法细化 算法的步骤1实际上是分散在程序之中的,由于用的是for 循环,很方便的初始条件放到了表达式之中了。 步骤2和3是按照步长1去寻找公鸡和母鸡的个数。 步骤4的细化 4.1 z =1 4.2 是否满足百钱,百鸡 4.2.1 满足,输出最终百钱买到的百鸡的结果 4.2.2 不满足,不做处理 4.3 变量增加,这里注意步长为3 流程图

图5-8 程序执行流程图 程序代码如下 #include "stdio.h" main() { int x,y,z; for(x=1;x<=20;x++) { for(y=1;y<=33;y++) { for(z=3;z<=99;z+=3) { if((5*x+3*y+z/3==100)&&(x+y+z==100))/*是否满足百钱和百鸡的条件*/ printf("cock=%d,hen=%d,chicken=%d\n",x,y,z); } } } } 分析

c语言百钱买百鸡问题

百钱买百鸡问题——一百个铜钱买了一百只鸡,其中公鸡一只5钱、母鸡一只3钱,小鸡一钱3只,问一百只鸡中公鸡、母鸡、小鸡各多少)。 这是一个古典数学问题,设一百只鸡中公鸡、母鸡、小鸡分别为x ,y ,z ,问题化为三元一次方程组: ? ? ?=++=++)(100) (1003/35百鸡百钱z y x z y x 这里x,y,z 为正整数,且z 是3的倍数;由于鸡和钱的总数都是100,可以确定x,y,z 的取值范围: 1) x 的取值范围为1~20 2) y 的取值范围为1~33 3) z 的取值范围为3~99,步长为3 对于这个问题我们可以用穷举的方法,遍历x,y,z 的所有可能组合,最后得到问题的解。 数据要求 问题中的常量: 无 问题的输入: 无 问题的输出: int x ,y ,z /*公鸡、母鸡、小鸡的只数*/ 初始算法 1.初始化为1; 2.计算x 循环,找到公鸡的只数; 3.计算y 循环,找到母鸡的只数; 4.计算z 循环,找到小鸡的只数; 5.结束,程序输出结果后退出。 算法细化 算法的步骤1实际上是分散在程序之中的,由于用的是for 循环,很方便的初始条件放到了表达式之中了。 步骤2和3是按照步长1去寻找公鸡和母鸡的个数。 步骤4的细化 4.1 z =1 4.2 是否满足百钱,百鸡 4.2.1 满足,输出最终百钱买到的百鸡的结果 4.2.2 不满足,不做处理 4.3 变量增加,这里注意步长为3 流程图

图5-8 程序执行流程图 程序代码如下 #include "stdio.h" main() { int x,y,z; for(x=1;x<=20;x++) for(y=1;y<=33;y++) for(z=3;z<=99;z+=3) { if((5*x+3*y+z/3==100)&&(x+y+z==100))/*是否满足百钱和百鸡的条件*/ printf("cock=%d,hen=%d,chicken=%d\n",x,y,z); } } 分析 程序运行结果如下: cock=4,hen=8,chicken=78 cock=8,hen=11,chicken=81 cock=12,hen=4,chicken=84

二级C语言5练习(循环含答案)

(1)有以下程序段 int n,t=1,s=0; scanf("%d",&n); do{ s=s+t; t=t-2; }while (t!=n); t==n t=-1,-3,-5 为使此程序段不陷入死循环,从键盘输入的数据应该是 A)任意正奇数B)任意负偶数C)任意正偶数D)任意负奇数 (2)设变量已正确定义,则以下能正确计算f = n!的程序段是 A) f=0; B) f=1; for(i=1;i<=n;i++) f*=i; for(i=1;i1;i++) f*=i; 死循环for(i=n;i>=2;i--) f*=i; (3)以下程序的功能是计算:s=1+12+123+1234+12345。请填空。 main() { int t=0,s=0,i; ; i=1 t=1 i=2 t=12 i=3 t=123 t=i+10*t s=s+t; } printf("s=%d\n",s); } 4) 要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义,以下正确的程序段是 ch=getchar()!='N' ch=('a'!='N')ch=1 while( 1 ) (ch=getchar()) != 'N' ch=getchar() ch='a' 'a'!='N' while(1) A)while((ch=getchar())!='N') printf("%c",ch); B)while(ch=getchar()!='N') printf("%c",ch); C)while(ch=getchar()=='N') printf{"%c",ch); D)while((ch=getchar())=='N') printf("%c",ch); 5) 以下程序的功能是输入任意整数给n后,输出n行由大写字母A开始构成的三角形字符阵列图形。例如,输入整数5时(注意:n不得大于10),程序运行结果如下: A B C D E F G H I J K L M N O 请填空完成该程序。 main() { int i,j,n; char ch='A'; scanf("%d",&n); if(n<11) n=5 { for(i=1;i<=n;i++) i=1 j=1 to 5 'A' ch='B' 'C' { for(j=1;j<=n-i+1;j++) { printf("%2c",ch); ch=ch+1 ; ch++ ++ch }

多种解法求百钱百鸡问题

学号:0121210680225 《算法设计与分析B》大作业 题目多种解法求百钱百鸡问题 学院计算机科学与技术学院 专业软件工程 班级Sy1201 姓名李安福 指导教师何九周 2014 年12 月26 日

多种解法求百钱百鸡问题 摘要:中国古代数学家张丘建提出的“百钱买百鸡”可以采用蛮力法来解决。本文给出 了百钱百鸡问题的描述,采用蛮力法来解决这个问题,并通过分析对算法进行了优化,进一步提高了解决此问题的效率。 关键字:枚举,执行效率,蛮力法,不定方程,循环变量。 1引言 蛮力法是一种简单直接地解决问题的方法,通常直接基于问题的描述和所涉及的概 念定义。 这种方法经过很少的思考,把问题的所有情况或所有的过程交给计算机去一一尝试,从中找出问题的解。由于计算机运算速度快,在解决问题时可采用这种“懒惰”的策略。蛮力法的主要优点在于它是有广泛的适用性和简单性;它的缺点是大多数蛮力算法的效率都不高。 2问题概述 百钱百鸡问题: 中国古代数学家张丘建在他的《算经》中提出了著名的“百钱买百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何? 3问题的分析 题目分析与算法设计 这是一个古典数学问题我们假设公鸡、母鸡和小鸡的个数分别为x,y,z,那么买公鸡的钱数为5x ,买母鸡的钱数为3y ,买小鸡的钱数为z/3;再由题意,x,y 和z 的和为100,问题化为可三元一次方程组,该问题的数学模型如下: ?? ?=++=++)(100)(1003/35百鸡百钱z y x z y x 这里x,y,z 为正整数,且z 是3的倍数;由于鸡和钱的总数都是100,可以确定x,y,z 的取值范围: 1) x 的取值范围为1~20 2) y 的取值范围为1~33 3) z 的取值范围为1~99 对于这个问题我们可以用穷举的方法,遍历x,y,z 的所有可能组合,最后得到问题的解。 4算法设计 4.1算法设计1 4.1.1数据要求 问题中的常量: 无

c语言循环结构练习

2015-2016(2)循环结构练习题 一、单选题(共40题,共100分) 1. 以下正确的描述是()(2分) 语句的作用是结束整个循环的执行 B.只能在循环体内和switch语句体内使用break语句 C.在循环体内使用break语句或continue语句的作用相同 D.从多层循环嵌套中退出时,只能使用goto语句 标准答案:B 考生答案: 2. 下面的关键字中,不能够从循环体中跳出循环体外的是()(2分) 标准答案:D 考生答案: 3. 以下叙述中错误的是()(2分) A.语句标号是由合法的标识符后面加一个冒号构成 语句的作用是把程序的执行转向语句标号所在的位置 语句必须与语句标号在同一个函数内 D.结构化程序设计主张使用goto语句,使用goto语句的程序可读性强标准答案:D 考生答案: 4. 有以下程序段,while 循环执行的次数是() int k=0; while(k=1)k++; (2分) A.无限次 B.有语法错,不能执行 C.一次也不执行 D.执行1次 标准答案:A 考生答案: 5. 运行以下程序的结果为() main() { int num=0; while (num<=2) {num++; printf("%d",num); } } (2分) 标准答案:B 考生答案: 6. 下述程序的输出结果是()。 #include<> main() { int Y=100; while(Y--);

printf("y=%d",Y); (2分) =0 =1 =随机值 =-1 标准答案:D 考生答案: 7. 执行下面的程序后的输出结果为() int x,y,z; x=20,y=40,z=15; while(y>x) x+=4,y-=4; z/=2; printf("%d,%d,%d",x,y,z); (2分) ,36,30 ,8,7 ,28,7 ,28, 标准答案:C 考生答案: 8. 以下程序段的输出结果是() int x=0,y=5,z=3; while(z-->0&&++x<5) y=y-1; printf("%d,%d,%d\n",x,y,z); (2分) ,2,0 ,2,-1 ,3,-1 ,-2,-5 标准答案:B 考生答案: 9. 下述语句执行后,变量k的值是() int k=1; while(k++<10); (2分) D.此为无限循环,值不定 标准答案:B 考生答案: 10. 下面程序的运行结果是()。 main() { int c1=2, c2=0; while(!c2--) printf("%d,%d", c1--, c2); } (2分) ,-1 B.不输出任何内容 ,-1 ,0 标准答案:C 考生答案: 11. 运行以下程序后,如果从键盘上输入china#main( ) { int v1=0,v2=0; char ch ; while((ch=getchar())!='#') switch(ch) { case 'a': case 'h': default: v1++; case '0': v2++;

java程序”百钱买百鸡“

尝试分别用三层循环、两层循环、一层循环编程实现“百钱买百鸡”问题。母鸡5分钱一只,公鸡三分钱一只,小鸡一分钱三只,现在有百钱欲买百鸡,有多少种买法? 三层循环 //百钱买百鸡-三层循环 //母鸡5分钱一只,公鸡三分钱一只,小鸡一分钱三只 //母鸡m只,公鸡n只,小鸡k只 public class BaiQianMaiBaiJi3 { public static void main(String[] args) { int m,n,k,i=0; for(m=0;m<=20;m++) for(n=0;n<=33;n++) for(k=0;k<=300;k+=3) if(5*m+3*n+k/3==100&&m+n+k==100) i++; System.out.println("百钱买百鸡共有 "+i+" 种方法"); } } 两层循环 //百钱买百鸡-两层循环 //母鸡5分钱一只,公鸡三分钱一只,小鸡一分钱三只 //母鸡m只,公鸡n只 public class BaiQianMaiBaiJi2 { public static void main(String[] args) { int m,n,i=0; for(m=0;m<=20;m++) for(n=0;n<=33;n++) if(5*m+3*n<=100&&m+n+(100-5*m-3*n)*3==100) i++; System.out.println("百钱买百鸡共有 "+i+" 种方法"); } } 一层循环 //百钱买百鸡-一层循环 //母鸡5分钱一只,公鸡三分钱一只,小鸡一分钱三只

//母鸡m只,公鸡n只,小鸡k只 4m+2n=2(k/3);m+n+k=100 public class BaiQianMaiBaiJi1 { public static void main(String[] args) { int m,i=0; for(m=0;m<=20;m++) { if((100-7*m)>0&&(100-7*m)%4==0)//&&k=3(100+m)/4,(100+m)%4==0 i++; } System.out.print("百钱买百鸡共有 "+i+" 种方法"); } }

C语言循环结构练习测试题带参考答案

第5章循环结构程序设计 5.1基本知识点 ?while语句的使用格式和注意事项 ?do-while语句的使用格式和注意事项 ?for语句的使用格式和注意事项 ? ? ? ? ? 1. ( ( C. ( A. (A。 A.do-while的循环体至少无条件执行一次 B.while的循环控制条件比do-while的循环控制条件严格 C.do-while允许从外部转到循环体内 D.do-while的循环体不能是复合语句 (5)以下程序段C。 intx=-1; do { x=x*x; } while(!x);

A.是死循环 B.循环执行二次 C.循环执行一次 D.有语法错误 (6)下列语句段中不是死循环的是__C__。 A.i=100; while(1) { i=i%100+1; if(i==20)break; } B.for(i=1;;i++) sum=sum+1; C. { D. ( { } A. C. ( { { COUT< main() { intnum=0; while(num<=2) { num++;

cout< main() { { { } } } ( { ++i; }while(s<15); Cout< main() { inti,j; for(i=4;i>=1;i--) { cout<<"*"; for(j=1;j<=4-i;j++)

C语言循环结构练习题带答案

第5章循环结构程序设计 5.1 基本知识点 while语句的使用格式和注意事项 do-while语句的使用格式和注意事项 for语句的使用格式和注意事项 break和continue语句在循环语句中的应用 循环结构的嵌套 使用goto语句实现循环结构 穷举法程序设计方法 迭代程序设计方法 5.2 练习题5 1. 单项选择题 (1)语句while (!e);中的条件!e等价于 A 。 A. e==0 B. e!=1 C. e!=0 D. ~e (2)下面有关for循环的正确描述是 D 。 A. for循环只能用于循环次数已经确定的情况 B. for循环是先执行循环体语句,后判定表达式 C. 在for循环中,不能用break语句跳出循环体 D. for循环体语句中,可以包含多条语句,但要用花括号括起来 (3)C语言中 D 。 A. 不能使用do-while语句构成的循环 B. do-while语句构成的循环必须用break语句才能退出 C. do-while语句构成的循环,当while语句中的表达式值为非零时结束循环 D. do-while语句构成的循环,当while语句中的表达式值为零时结束循环 (4)C语言中while和do-while循环的主要区别是 A 。 A. do-while的循环体至少无条件执行一次 B. while的循环控制条件比do-while的循环控制条件严格

第5章循环结构程序设计35 C. do-while允许从外部转到循环体内 D. do-while的循环体不能是复合语句 (5)以下程序段 C 。 int x=-1; do { x=x*x; } while (!x); A. 是死循环 B. 循环执行二次 C. 循环执行一次 D. 有语法错误 (6)下列语句段中不是死循环的是__C__。 A. i=100; while (1) { i=i%100+1; if (i==20) break; } B. for (i=1;;i++) sum=sum+1; C. k=0; do { ++k; } while (k<=0); D. s=3379; while (s++%2+3%2) s++; (7)与以下程序段等价的是__A__。 while (a) { if (b) continue; c; } A. while (a) B. while (c) { if (!b) c; } { if (!b) break; c; } C. while (c) D. while (a) { if (b) c; } { if (b) break; c; } (8)以下程序的输出结果是_B___。

C语言循环结构练习题

5.2 练习题5 1. 单项选择题 (1)语句while (!e);中的条件!e等价于。 A. e==0 B. e!=1 C. e!=0 D. ~e (2)下面有关for循环的正确描述是。 A. for循环只能用于循环次数已经确定的情况 B. for循环是先执行循环体语句,后判定表达式 C. 在for循环中,不能用break语句跳出循环体 D. for循环体语句中,可以包含多条语句,但要用花括号括起来 (3)C语言中。 A. 不能使用do-while语句构成的循环 B. do-while语句构成的循环必须用break语句才能退出 C. do-while语句构成的循环,当while语句中的表达式值为非零时结束循环 D. do-while语句构成的循环,当while语句中的表达式值为零时结束循环 (4)C语言中while和do-while循环的主要区别是。 A. do-while的循环体至少无条件执行一次 B. while的循环控制条件比do-while的循环控制条件严格 C. do-while允许从外部转到循环体内 D. do-while的循环体不能是复合语句 (5)以下程序段。 int x=-1; do { x=x*x; } while (!x); A. 是死循环 B. 循环执行二次 C. 循环执行一次 D. 有语法错误 (6)下列语句段中不是死循环的是____。 A. i=100; while (1) { i=i%100+1; if (i==20) break;

第5章循环结构程序设计35 } B. for (i=1;;i++) sum=sum+1; C. k=0; do { ++k; } while (k<=0); D. s=3379; while (s++%2+3%2) s++; (7)与以下程序段等价的是____。 while (a) { if (b) continue; c; } A. while (a) B. while (c) { if (!b) c; } { if (!b) break; c; } C. while (c) D. while (a) { if (b) c; } { if (b) break; c; } (8)以下程序的输出结果是____。 #include main() { int i; for (i=4;i<=10;i++) { if (i%3==0) continue; printf("%d",i); } } A. 45 B. 457810 C. 69 D. 678910 (9)以下程序的输出结果是____。 #include main() { int num=0; while (num<=2) {

百钱百鸡问题

百钱百鸡问题 我国古代数学家张丘建在《算经》中提出了著名的“百钱百鸡问题”:“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,翁、母、雏各几何?”意思是说:一只公鸡卖5枚钱,一只母鸡卖3枚钱,三只小鸡卖1枚钱,用100枚钱买100只鸡,能买到公鸡、母鸡、小鸡各多少只? 分析: ① 这是一个不定方程问题。有3个未知数,2个方程:设公鸡、母鸡、小鸡数分别为i、j、k,则有i+j+k=100,i*5+j*3+k/3=100。需要让计算机去一一测试是否符合条件,找出所有可能的答案。由于价格的限制,如果只是一种鸡,则公鸡最多为19只(由于共100只鸡的限制,不能等于20只),母鸡最多33只,小鸡最多99只。 ② 这里用到的是穷举算法。穷举算法的基本思想是:对问题的所有可能答案一一测试,直到找到正确答案或测试完全部可能的答案。 程序如下: main( ) { int i,j,k; for(i=1;i<=19;i++) for(j=1;j<=33;j++) for(k=3;k<=99;k=k+3) { if((i+j+k==100)&&(i*5+j*3+k/3==100)) printf("i=%d,j=%d,k=%d\n",i,j,k); } } 运行结果为: i=4,j=18,k=78 i=8,j=11,k=81 i=12,j=4,k=84 #include void 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)

C语言循环练习

1以下不是死循环的语句是 C 。 A、for(i=10; ; i++ ) sum+=i; B、while (1){x++;} C、for(; (c=getchar())!=?\n?;) printf(“%c”, c); D、for(;; x+= i); 2以下程序的输出结果是 A main() { int x, i; for(i = 1; i <= 100; i++) { x = i; if( ++x % 2 == 0) if( ++x % 3 == 0 ) if( ++x % 7 == 0) printf(“%d “, x); } printf(“\n”); } A、28 70 B、39 81 C、42 84 D、26 68 3. 以下程序段的输出结果是 B int k, j, s; for(k = 2; k < 6; k++, k++) { s = 1; for(j = k; j < 6; j++) s += j; } printf(“%d\n”, s); A、15 B、10 C、24 D、9 4以下程序的输出结果是 B main() { int i, sum; for(i = 1; i < 6; i++) sum += i; printf(“%d\n” sum); } A、15 B、不确定 C、16 D、0 有以下程序 main() { int i; for(i=0; i<3; i++) switch(i)

{ case 1: printf("%d", i); case 2: printf("%d", i); default : printf("%d", i); } } 执行后输出结果是 A A、011122 B、120 C、012020 D、012 以下程序段的输出结果是 C 。 int n=10; while(n>7) { n--; Pr intf(“%d”, n ); } A、1098 B、10987 C、987 D、9876 下面程序的运行结果是 A #include main() { int y=10; do{y--;}while(--y); printf("%d\n",y--); } A、0 B、1 C、8 D、-1 以下程序段的输出结果是 C int i, j, m = 0; for(i = 1; i <= 15; i += 4) for(j = 3; j <= 19; j += 4) m++; printf(“%d\n”, m); A、15 B、12 C、20 D、25 以下程序段的输出结果是 B int x= 3; do {pritnf(“%3d”, x-=2); } while (!(--x));

百鸡百钱——程序设计

深圳大学实验报告课程名称:高级程序语言设计 实验项目名称:“百钱买鸡问题”学院:信息工程学院 专业: 指导教师: 报告人:学号:班级: 实验时间: 实验报告提交时间: 教务处制

实验目的与要求: “百钱买鸡问题”: 设1个公鸡值5钱,1个母鸡值3钱,3个小鸡值1钱,现用100钱来买鸡,问有多少种方法买鸡? (每种方法需包含公鸡、母鸡、小鸡的个数)。 编写一个程序,输出每一种方法的公鸡、母鸡、小鸡个数,并且统计出有多少种方法。要求:流程图、代码、结果、分析。 程序代码: #include void main () { int i,j,k,n=0; for(i=0;i<=20;i++) for(j=0;j<=33;j++) for(k=0;k<=300;k+=3) if(k==300-15*i-9*j) { printf("i=%d,j=%d,k=%d\n",i,j,k); n++; } printf("总方法数:%d\n",n); }

流程图: 数据处理分析: 设一百只鸡中公鸡、母鸡、小鸡分别为 i,j,k 问题化为三元一次方程组: 这里 i,j,k 为正整数,且k是3的倍数;由于鸡和钱的总数都是100,可以确定i,j,k 的取值范围: 1)i的取值范围为0~20 2)j的取值范围为0~33 3)k的取值范围为0~300,步长为3 对于这个问题我们可以用列举的方法得出i,j,k的所有可能组合,最后得到问题的解。(int i,j,k ,n=0; /*公鸡、母鸡、小鸡的只数、方法数*/) 初始算法 1.初始化为1; 2.计算i循环,找到公鸡的只数; 3.计算j循环,找到母鸡的只数; 4.计算k循环,找到小鸡的只数; 5.结束,程序输出结果后退出。 算法细化 算法的步骤1实际上是分散在程序之中的,由于用的是for循环,很方便的初始条件放到了表达式之中了。步骤2和3是按照步长1去寻找公鸡和母鸡的个数。

相关文档
相关文档 最新文档