一、求3个整数中最小值
题目:输入三个整数,表示梨的重量,输出最小的数。
方法1:经过三次两两比较,得出最小值。
a<=b && a<=c min=a
b<=c && b<=a min=b
c<=b && c<=a min=c
流程图:
#include <typeinfo> //变量类型头文件,还是有问题;无法判断int
#include <iostream> //包含输入输出流头文件iostream
using namespace std; //指明程序 使用命名空间std(标准)
int main()
{int a,b,c,min;cout<<"a b c=";cin>>a>>b>>c;if(a<=b && a<=c) min=a;if(b<=a && b<=c) min=b;if(c<=b && c<=a) min=c;cout<<"min="<<min<<endl;return 0;}
方法2:先找出a和b中较小的那个数,把较小的数赋值给min,然后再让min和c比较,找出最小值。
流程图:
#include <typeinfo> //变量类型头文件,还是有问题;无法判断int
#include <iostream> //包含输入输出流头文件iostream
using namespace std; //指明程序 使用命名空间std(标准)
int main()
{int a,b,c,min;cout<<"a b c=";cin>>a>>b>>c;if(a<=b)min=a;elsemin=b;if (c<min) min=c;cout<<"min="<<min<<endl;return 0;}
方法3:先假设第一个数a为最小值,把它赋值给min;然后和第二个数b比较,若b比min小,就把第二数b赋值给min;再和第三个数c比较,若第三个数c比min小,就把三数c赋值给min,有点儿类似打擂台。
流程图:
#include <typeinfo> //变量类型头文件,还是有问题;无法判断int
#include <iostream> //包含输入输出流头文件iostream
using namespace std; //指明程序 使用命名空间std(标准)
int main()
{int a,b,c,min;cout<<"a b c=";cin>>a>>b>>c;min=a;if (b<min) min=b;if (c<min) min=c;cout<<"min="<<min<<endl;return 0;}
注:通俗地讲,程序算法就是为解决某一特定问题而采取的具体有限的操作方法步骤。
练习:
(1)下列关于算法的叙述不正确的是( )。
A.算法的每一步必须没有歧义,不能有半点含糊。 B.算法必须有输入。
C.同一问题可能存在多种不同的算法。 C.同一算法可以用多种不同的形式来描述。
(2)阅读程序写结果。
#include <iostream> //包含输入输出流头文件iostream
using namespace std; //指明程序 使用命名空间std(标准)
int main()
{int a,b,c,max;cin>>a>>b>>c;if (a>b)max=a;elsemax=b;if (c>max) max=c;cout<<"max="<<max<<endl;return 0;}
输入:100 10 200
a,b,c,max的输出:___________
(3)完善第13、15行程序。
输入4个数,输出其中最大的数。
6 #include <iostream> //包含输入输出流头文件iostream 7 using namespace std; //指明程序 使用命名空间std(标准) 8 int main()9 {
10 float a,b,c,d,max; //浮点数
11 cout<<"a,b,c,d=";
12 cin>>a>>b>>c>>d;
13 ;
14 if (b>max) max=b;
15 if ( ) max=c;
16 if (d>max) max=d;
17 cout<<"max="<<max<<endl;
18 return 0;
19 }
二、3个数排序
问题:试编一程序,输入三个数,表示三匹马跑100米的秒数,时间越小速度越快,请将秒数按由小到大的顺序输出。
方法:
流程图:
#include <typeinfo> //变量类型头文件,还是有问题;无法判断int
#include <iostream> //包含输入输出流头文件iostream
using namespace std; //指明程序 使用命名空间std(标准)
int main()
{int a,b,c,temp;cout<<"a,b,c=";cin>>a>>b>>c;if (a>b){temp=a;a=b;b=temp;}if (a>c){temp=a;a=c;c=temp;}if (b>c){temp=b;b=c;c=temp;}cout<<a<<' '<<b<<' '<<c<<endl;//' '中间有一个空格return 0;}
练习:
(1)在计算机工作过程中,若突然停电,( )中的信息不会丢失。
A.ROM和RAM ....... B.CPU ......... C.ROM ............... D.RAM
(2)阅读程序写结果。
#include <iostream> //包含输入输出流头文件iostream
using namespace std; //指明程序 使用命名空间std(标准)
int main()
{int x,y;y=0;cin>>x;if (x<0)y=x;else{y=x*x;y+=(x+1)*(x+1);}cout<<y;return 0;}
输入:3
x,y的输出:____________
(3)编程
输入4个字母分别给字符变量a1、a2、a3、a4,按字母顺序输出它们。
三、随机函数rand()
随机数rand()函数返回的值是一个大于等于0且小于等于RAND_MAX的随机整数,RAND_MAX是一个符号常量(通俗讲,符号量就是“替代”。即用一个标识符来代常量)它的值与操作系统、编译器等有关。若在Windows操作系统下的DevC+中其值为32767。若在Linux操作系统下的g++中其值为2147483647。在使用随机函数rand()前,需要包含cstdlib头文件,即#include
*编程实验随机函数rand()的使用。
要产生真随机数,方法是:
(1)使用srand()来设置随机种子,srand(time(0))设置当前的系统时间值为随机种子;需要包含头文件ctime,即#include
(2)要产生一个[a,b]的随机整数,就要使用通用公式:
rand()%(b-a+1)+a
rand()%5+1 //可以产生一个[1,5]的随机整数。
例题:试编一个程序,计算机随机产生一个整数(1至5),自己输入一个整数,若两数相同,则输出“恭喜你,中奖了!奖金10元”,否则输出“没中奖,请付费2元”;同时公布中奖号码。
流程图:
#include <iostream> //包含输入输出流头文件iostream
#include <ctime> //需要调用time()函数
#include <cstdlib> //需要调用srand()和rand()函数
using namespace std; //指明程序 使用命名空间std(标准)
int main()
{int n,a;cout<<"抽奖程序"<<endl;cout<<"请输入1~5中的任一整数:";cin>>n;srand(time(0)); //随机种子a=rand()%5+1; //产生[1,5]的一个随机整数if (n==a)cout<<"恭喜您,中奖了!奖金10万元。"<<endl;elsecout<<"没中奖,请付费2元。"<<endl;cout<<"中奖号码是:"<<a<<endl;return 0;
}
英汉小词典:
rand random(随机)的缩写
srand 设置随机种子
练习
(1)一个字节(byte)由( )个二进制位组成。
A.8 B.4 C.2 D.16
(2)阅读程序写结果。
#include <iostream> //包含输入输出流头文件iostream
#include <ctime> //需要调用time()函数
#include <cstdlib> //需要调用srand()和rand()函数
using namespace std; //指明程序 使用命名空间std(标准)
int main()
{int x;srand(time(0)); //随机种子x=rand()%10; //产生[0,9]的一个随机整数if (x<10) x=10;if (x==10) x--;if (x>10) x--;if (x!=10) x--;cout<<x;return 0;
}
X的输出为:________________
(3)完善第17、18、21行程序。
一道两位数加法运算题:
第一步,由计算机产生两个两位数;
第二步,输出题目,如“45+78=‘;
第三步,输入答案;
第四步,判断答案是否正确。
9 #include <iostream> //包含输入输出流头文件iostream
10 #include <ctime> //需要调用time()函数
11 #include <cstdlib> //需要调用srand()和rand()函数
12 using namespace std; //指明程序 使用命名空间std(标准)
13 int main()
14 {
15 int n,a,b;
16 srand(time(0));
17 a= ; //产生两位数整数
18 b= ;
19 cout<<a<<'+'<<b<<'=';
20 cin>>n;
21 if ( ) //如果输入的数是否与运算结果相等
22 cout<<"对";
23 else
24 cout<<"错";
25 return 0;
26 }
四、if语句的应用
问题:周末,格莱尔和爸爸打车到游乐场玩。打车计价方案为:2千米内起步是6元;超过2千米之后按1.8元/千米计价;超过10千米之后在1.8元/千米的基础上加价50%,如图示。此外,停车等候则按时间计费每3分钟加收1元(注:不满3分钟不计费)。试编一程序,计算格莱尔需要付的打车费是多少?
流程图:
#include <typeinfo> //变量类型头文件,还是有问题;无法判断int
#include <iostream> //包含输入输出流头文件iostream
using namespace std; //指明程序 使用命名空间std(标准)
int main()
{int path_l,time_sj; //path_l,time_sj代表路程,停车时间float cost=0; //cost代表费用cin>>path_l; //输入路程if (path_l>10) //当路程大于10公里时cost=6+(10-2)*1.8+(path_l-10)*1.8*1.5;elseif (path_l>2)cost=6+(path_l-2)*1.8;elsecost=6;cin>>time_sj; //输入停车时间cost+=(time_sj/3)*1; //计算停车费用cout<<cost<<endl;return 0;}
英汉小词典:
路程:path length
费用:cost
练习:
(1)下列( )是字符型数据。
A.a B.'3' C."good" D.3
(2)阅读程序写结果。
#include <iostream> //包含输入输出流头文件iostream
#include <ctime> //需要调用time()函数
#include <cstdlib> //需要调用srand()和rand()函数
using namespace std; //指明程序 使用命名空间std(标准)
int main()
{int x;cin>>x;if (x==10) x++; else x--;if (x>10) x++; else x--;if (x<10) x++; else x--;if (x!=10) x++; else x--;cout<<"x="<<x<<endl;return 0;
}
输入:10
x的输出:__________
(3)完善第11、15行程序。
超市为了促销,规定:购物不超过50元的按原价付款,超过50元不超过150元的,超过部分按九折付款,超过150元的,超过部分按八折付款。编一程序完成超市的自动计费的工作。(100的九折就是1000.9=90元,100的八折就是1000.8=80元)
6 #include <iostream> //包含输入输出流头文件iostream 7 using namespace std; //指明程序 使用命名空间std(标准) 8 int main()9 {
10 float n,m; //浮点数
11 ;
12 if (n<=50) m=n;
13 else
14 {
15 if (n<=150) ;
16 else m=50+100*0.9+(n-150)*0.8;
17 }
18 cout<<m;
19 return 0;
20 }
五、bug与debug
问题————体质指数(BMI)由19世纪中期比利时的通才凯特勒最先提出,是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准。它的计算方法如下:
体质指数(BMI)=体重(kg)/身高(m)的平方
以上标准只适合于成年人,试编一程序,根据体重、身高,判断其胖瘦程度。
流程图如下:
#include <typeinfo> //变量类型头文件,还是有问题;无法判断int
#include <iostream> //包含输入输出流头文件iostream
using namespace std; //指明程序 使用命名空间std(标准)
int main()
{float height,weight,bmi; //身高,体重,体质指数cout<<"身高(m):";cin>>height; //输入身高cout<<"体重(kg):";cin>>weight;bmi=weight/(height*height);if (bmi<18.5)cout<<"偏瘦";else if (bmi<24)cout<<"正常";else if(bmi<28)cout<<"偏胖";else if(bmi<40)cout<<"肥胖";elsecout<<"极重度肥胖";return 0;}
测试数据:①1.71 62
②-1.71 62
③20 165
本程序运行时输入的数据存在问题,如运行结果②输入负数,运行结果③输入不太现实的数据。任何一个程序,都是有数据范围要求的,超出了数据范围,程序可能就不对了。在参加全国青少年信息学奥林匹克联赛(NOIP)等竞赛上机编程时,会发现每道题目都会给出数据范围,这就要求我们在设计算法时,要根据数据范围做更加全面细致的考虑,否则程序会出现bug。说到bug,这背后有一个有趣的故事:有一天,美国海军准将、计算机女科学家、世界最早的一批程序设计师葛丽丝·霍波(Grace Hopper),在调试设备时出现故障,拆开继电器后,发现有一只飞蛾被夹扁在触点中间,从而“卡”住了机器的运行。于是,霍波诙谐地把程序故障统称为“臭虫(bug)”,把排除程序故障叫debug,而这奇怪的“称呼”,竟成为后来计算机领域的专业术语。
练习:
(1)下面()公司制造了全球第一枚 CPU。
A.腾讯 B.英特尔 C.威盛 D. AMD
(2)
#include <iostream>
using namespace std;
int main()
{int a, b, c;cin>>a>>b>>C;if(b!=0)if(a/b>c)cout <<a<</' <<b<<'-' <<c<<'='<<a/b-c<<endl;elsecout<<c<<'-'<<a<<'/'<<b<<'='<<c-a/b<<endl;return 0;
}
输入:10 5 1
a,b,c的输出为:_______
(3)完善程序。
格莱尔家有一台海尔洗衣机,她在阅读使用说明书时发现洗衣机有故障代码提示功能:E1排水故障,E2未关好门,E4进水异常,E8超过报警水位。她编写了一个程序,实现故障代码查询功能。
#include <string>
#include <iostream>
using namespace std;
int main()
{ string n;cout<"海尔洗衣机故障代码查询系统"<endl;cout<<"请输入代码:";___________________;if(n=="El"|n=="el")cout<<"排水故障"<endl;elseif( )cout<<"未关好门"<<endl;elseif(n=="E4"|ln=="e4")cout<<"进水异常"<<endl;elseif(n=="E8"lln=="e8")cout<"超过报警水位"<endl;elsecout<"未查询到此错误代码,请联系当地经销商"<<endl;return 0;
}