c第二章习题课PPT课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2020/10/13
9
*题目分析与算法设计
根据题意,阶梯数满足下面一组同余式: x≡1 (mod2) x≡2 (mod3) x≡4 (mod5) x≡5 (mod6) x≡0 (mod7)
2020/10/13
10
#include<stdio.h>
void main()
{ int i=1;
/*i为所设的阶梯数
2020/10/13
1
一、 求下列表达式的值
1 已知int a=6,b=3;float x=8,y 则 y=b/a*x/2; 问:y=?
2 已知 int a,b,c; a=b=c=5; 则 b+=++a>b&&++c>b的值是多少?
3 Int a=5,b=7,c=15,d;则经下列表达运算后
d=b>a||(c=a+b); d 和c 的值是多少?
{
z=100-x-y;
/*内外层循环控制下,鸡雏数z的
值受x,y的值的制约*/
if(z%3==0&&5*x+3*y+z/3==100)
/*验证取z值的合理性及得到一组解的合理性*/
cout<<“cock=“<<++j<<x<<<<y<<z);
}
}
2020/10/13
8
例二:爱因斯坦的数学题
爱因斯坦出了一道这样的数学题:有 一条长阶梯,若每步跨2阶,则最最后剩 一阶,若每步跨3 阶,则最后剩2阶,若 每步跨5阶,则最后剩4阶,若每步跨6 阶则最后剩5阶。只有每次跨7阶,最后 才正好一阶不剩。请问这条阶梯共有多 少阶?
*/
while(!((i%2==1)&&(i%3==2)&&(i%5
==4)&&(i%6==5)&&(i%7==0)))
++i;
/*满足一组同余式的判别*/
cout<<"Staris_number=“<<i<<endl;
}
2020/10/13
11
例:怎样存钱利最大
假设银行整存整取存款不同期限的月息利率分别
continue;
}
if(i>=4) break;
else i++;
}
2020/10/13
5
A.0
B.0 2
C.0 2 4 D.死循环,不断输出0
二、编程题
例一:中国古代数学家张丘建在他的 《算经》中提出了著名的“百钱买百 鸡问题”:鸡翁一,值钱五,鸡母一, 值钱三,鸡雏三,值钱一,百钱买百 鸡,问翁、母、雏各几何?
年存i2次,3年存i3次,5年存i5次,8年存i8次,则到
期时存款人应得到的本利合计为:
2000*(1+rate1)i1*(1+rate2)i2*(1+rate3)i3*(1+r
ate5)i5*(1+rate8)i8
2其020/10中/13 rateN为对应存款年限的利率。
13
根据题意还可得到以下限制条件: 0<=i8<=2 0<=i5<=(20-8*i8)/5 0<=i3<=(20-8*i8-5*i5)/3 0<=i2<=(20-8*i8-5*i5-3*i3)/2 0<=i1=20-8*i8-5*i5-3*i3-2*i2 可以用穷举法穷举所有的i8、i5、i3、
2020/10/13
2
4 用两种方法表示下列数学表达式(x为整数): 0≤x ≤5并且x≠2和3
5 已知e1,e2为表达式,则下列循环执行的次数 为: for(e1;;e2),并写出其等价的标准for循 环语句
2020/10/13
3
6、以下程序的运行结果
。
#include <iostream.h>
2020/10/13
6
分析:设鸡翁、鸡母、鸡雏的个数分别为x,y,z,题 意给定共100钱要买百鸡,若全买公鸡最多买20 只,显然x的值在0~20之间;同理,y的取值范围 在0~33之间,可得到下面的不定方程: 5x+3y+z/3=100 x+y+z=100 所以此问题可归结为求这个不定方程的整数解。 由程序设计实现不定方程的求解与手工计算不 同。在分析确定方程中未知数变化范围的前提下, 可通过对未知数可变范围的穷举,验证方程在什 么情况下成立,从而得到相应的解。
i2和i1的组合,代入求本利的公式计算 出最大值,就是最佳存款方案。
2020/10/13
14
谢谢您的指导
THANK YOU FOR YOUR GUIDANCE.
感谢阅读!为了方便学习和使用,本文档的内容可以在下载后随意修改,调整和打印。欢迎下载!
汇报人:XXXX 日期:20XX年XX月XX日 15
为:
0.63% 期限=1年 0.66% 期限=2年 0.69% 期限=3年 0.75% 期限=5年 0.84% 期限=8年 利息=本金*月息利率*12*存款年限。 现在某人手中有2000元钱,请通过计算选择一种 存钱方案,使得钱存入银行20年后得到的利息最多 (假定银行对超过存款期限的那一部分时间不付利 息)。
void main()
{
int x=1,y=0,a=0,b=0;
switch(x)
{
case 1:
switch(y){
case 0:a++;break;
case 1:b++;break;
}
case 2: b++; break; a++;
}
cout<<a<<','<<b<<endl;
}
2020/10/13
4
7、若输入字符串“ABC”,下面程序段的输出
是
。
char c;
while(cin>>c,c!='\n')
cout<<c+2;
A.222 B.CDE C.676869 D.333
8、对于如下程序段,执行后输出为 ________
for(int i=0;;){
if(i%2==0){
cout<<i<<'\t';
2020/10/13
12
问题分析与算法
为了得到最多的利息,存入银行的钱应在到期时
马上取出来,然后立刻将原来的本金和利息加起来再
作为新的本金存入银行,这样不断地滚动直到满20
年为止,由于存款的利率不同,所以不同的存款方法
(年限)存20年得到的利息是不一样的。
来自百度文库
分析题意,设2000元存20年,其中1年存i1次,2
2020/10/13
7
#include<iostream.h>
void main()
{
int x,y,z,j=0;
cout<<“Folleing are possible plans :\n";
for(x=0;x<=20;x++)
/*外层循环控制鸡翁数*/
for(y=0;y<=33;y++) /*内层循环控制鸡母数y*/