顺序结构→分支结构程序设计
[日期:2020-11-04] | 作者:信息技术 次浏览 | [字体:大 中 小] |
我们先来讲解上次做过的一道练习:
【分糖问题】
某幼儿园里,有5个小朋友编号为1、2、3、4、5,他们按自己的编号顺序围坐在一张圆桌旁。他们身上都有若干个糖果(键盘输入),现在他们做一个分糖果游戏。从1号小朋友开始,将自己的糖果均分三份(如果有多余的糖果,则立即吃掉),自己留意份,其余两份分给他的相邻的小朋友。接着2号、3号、4号、5号小朋友同样这么做。问一轮后,每个小朋友手上分别有多少糖果?
输入:5个小朋友初始的糖果数量
输出:经过一轮分糖后5个小朋友的糖果数量
(提示:每个人均分糖果后,吃掉多余的,最后剩下的等于原始数据整除分的份数,按照顺序依次执行一圈,即得最后结果)
在程序设计里有三大基本结构:顺序结构、分支结构和循环结构。对于这道题,我们按照题目描述和实际分配时的顺序写出语句来描述这个过程,程序执行时也按照这些语句依次执行,这就是顺序结构。
#include <iostream>
using namespace std;
int main()
{
int a,b,c,d,e;
cin>>a>>b>>c>>d>>e;
a=a/3;b=b+a;e=e+a;
b=b/3;c=c+b;a=a+b;
c=c/3;d=d+c;b=b+c;
d=d/3;e=e+d;c=c+d;
e=e/3;a=a+e;d=d+e;
cout<<a<<' '<<b<<' '<<c<<' '<<d<<' '<<e;
return 0;
}
(这里为了描述一个人的分糖情况,将三条语句写在同一行,写成三行也一样。)
接下来,我们来思考一个简单的游戏:
有一种有趣的游戏,玩法如下:
玩家:2人。 道具:N颗石子。
规则:
①戏双方轮流取石子;
②每人每次取走若干颗石子(最少取1颗,最多取K颗,K<N);
③石子取光,则游戏结束;
④最后取石子的一方为胜。
假如参与游戏的玩家都非常聪明,问最后谁会获胜?
编写程序输出一个数字,若先手获胜输出1,后手获胜输出2。
假如N=23 K=3,则输出:1
你知道这个结果究竟是怎样判定出来的吗?
一、C++中的运算符和分支结构程序设计初步
(以下关于C++中的各种运算符的介绍作为参考资料,在需要时可查询)
C++中的算术运算符:
下表显示了 C++ 支持的算术运算符。假设变量 A 的值为 10,变量 B 的值为 20,则:
运算符 |
描述 |
实例 |
+ |
把两个操作数相加 |
A + B 将得到 30 |
- |
从第一个操作数中减去第二个操作数 |
A - B 将得到 -10 |
* |
把两个操作数相乘 |
A * B 将得到 200 |
/ |
分子除以分母 |
B / A 将得到 2 |
% |
取模运算符,整除后的余数 |
B % A 将得到 0 |
++ |
自增运算符,整数值增加 1 |
A++ 将得到 11 |
-- |
自减运算符,整数值减少 1 |
A-- 将得到 9 |
C++中的关系运算符:
下表显示了 C++ 支持的关系运算符。
假设变量 A 的值为 10,变量 B 的值为 20,则:
运算符 |
描述 |
实例 |
== |
检查两个操作数的值是否相等,如果相等则条件为真。 |
(A == B) 不为真。 |
!= |
检查两个操作数的值是否相等,如果不相等则条件为真。 |
(A != B) 为真。 |
> |
检查左操作数的值是否大于右操作数的值,如果是则条件为真。 |
(A > B) 不为真。 |
< |
检查左操作数的值是否小于右操作数的值,如果是则条件为真。 |
(A < B) 为真。 |
>= |
检查左数的值是否大于或等于右数的值,如果是则条件为真。 |
(A >= B) 不为真。 |
<= |
检查左数的值是否小于或等于右数的值,如果是则条件为真。 |
(A <= B) 为真。 |
C++ 的逻辑运算符。
假设变量 A 的值为 1,变量 B 的值为 0,则:
运算符 |
描述 |
实例 |
&& |
称为逻辑与运算符。如果两个操作数都非零,则条件为真。 |
(A && B) 为假。 |
|| |
称为逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。 |
(A || B) 为真。 |
! |
称为逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。 |
!(A && B) 为真。 |
if 语句有两种格式:
第一种格式为:
if (表达式)
语句 ;
第二种格式为:
if (表达式)
语句1;
else
语句2;
例一、读入一个整数a,如果a为偶数在屏幕上输出yes
#include<iostream>
using namespace std;
int main( )
{
int a;
cin>>a;
if (a%2==0)
cout<<"yes";
return 0;
}
注意:关系运算符==用来表达该符号的左右两边是否相等,不要写成赋值号=。
练习(上机完成下列程序):
1.读入一个整数a,如果a为奇数,在屏幕上输出no。
2.判断一个数a是否是正数,若是,则输出yes,并输出a>0的提示。
输入样例:4
输出样例:
Yes
4>0
例二、风华公司“南京一日游”的收费标准为:5人以内(含5人)按散客标准,每人300元;超过5人,按团体标准,每人280元。请根据输入的人数,输出其旅游费用。
如:输入9 输出2520
#include<iostream>
using namespace std;
int main( )
{
int n;
cin>>n;
if (n<=5)
cout<<n*300<<endl;
else
cout<<n*280<<endl;
return 0;
}
练习:
现在你可以写出我们前面那个取石子游戏的程序了,现在就试试吧!
若只用if,不用if+else,你能写出这个程序吗?