第三章 程序控制结构
第三章程序控制结构:
3.1使用cin和cout输入输出数据
cout << 格式控制器<<表达式;
cin >>格式控制器>>变量;
格式控制器:
boolalpha : 逻辑型用文字true或false输入输出
noboolalpha:逻辑型用整数0或1输入输出
cpp
#include <iostream> //标准输入输出流类库
#include <iomanip> // 输入输出操纵器库
using namespace std; //标准输入输出需要std
int main()
{
bool v;
string tell;
cin >> boolalpha >> v;
cin >> tell;
cout << v << '\t' << boolalpha << v << '\t' << noboolalpha << v << endl;
cout << tell << '\t';
cout << "Press Enter to exit...";
system("pause");
return 0;
}
3.2计算三角形面积
已知三角形三边长,计算三角形面积:
面积: s = ( t ( t − a ) ( t − b ) ( t − c ) ) 面积:s=\sqrt{(t(t-a)(t-b)(t-c))} 面积:s=(t(t−a)(t−b)(t−c))
但是计算面积之前,首先要确定所输入的三角形三边是否能构成三角形,完整代码如下
cpp
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double a, b, c;
cin >> a >> b >> c;
if (a + b > c && b + c > a && a + c > b) {
double s, t;
t = (a + b + c) / 2.0;
s = sqrt(t * (t - a) * (t - b) * (t - c));
cout << s;
cout << "边长为" << a <<',' << b <<"和" << c << "的三角形面积为" << s << endl;
}
system("pause");
return 0;
}
3.3输入成绩,将成绩分类
90以上A;
80-90:B;
70-80:C;
60-70:D;
60以下:E
cpp
#include <iostream>
using namespace std;
int main()
{
int score;
cin >> score;
if (score >= 90) { cout << "A" << endl;}
else if (score >= 80) { cout << "B" << endl; }
else if (score >= 70) { cout << "C" << endl; }
else if (score >= 60) { cout << "D"; }
else { cout << "E"; }
system("pause");
return 0;
}
3.4四个整数排序
先输入四个整数,然后自动从小到大排序:
cpp
#include <iostream>
using namespace std;
int main()
{
int a, b, c, d, t;
cout << "请输入四个整数";
cin >> a >> b >> c >> d;
if (a > b) { t = a, a = b, b = t; }
if (a > c) { t = a, a = c, c = t; }
if (a > d) { t = a, a = d, d = t; }
if (b > c) { t = b, b = c, c = t; }
if (b > d) { t = b, b = d, d = t; }
if (c > d) { t = c, c = d, d = t; }
cout << "四个整数从小到大:" << a << "," << b << "," << c << "," << d << endl;
system("pause");
return 0;
}
3.5输入某天日期,自动输出第二天日期
月份为1,3,5,7,8,10,12月时,一个月31天;
月份为4,6,9,11时,一个月30天
平年2月28天
闰年2月29天
闰年(能被4整除,且不能被100整除)或者(能被400整除)
cpp
#include <iostream>
using namespace std;
int main()
{
int y, m, d, Days;
cin >> y >> m >> d;
switch (m) {
case 2:
Days = 28;
if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0))Days++;
break;
case 4:case 6:case 9:case 11:Days = 30; break;
default:Days = 31;
}
d++;
if (d > Days)d = 1, m++;
if (m > 12)m = 1, y++;
cout << y << "-" << m << "-" << d;
system("pause");
return 0;
}
3.6输入月份和日期,得到星座
1-6月都是前月21号-20号
7-12月都是前月23号-22号
时间 | 星座 |
---|---|
3.21-4.20 | 白羊 |
4.21-5.20 | 金牛 |
5.21-6.20 | 双子 |
6.21-7.22 | 巨蟹 |
7.23-8.22 | 狮子 |
8.23-9.22 | 处女 |
9.23-10.22 | 天秤 |
10.23-11.22 | 天蝎 |
11.23-12.22 | 射手 |
12.23-1.20 | 摩羯 |
1.21-2.20 | 宝瓶 |
2.21-3.20 | 双鱼 |
cpp
#include <iostream>
using namespace std;
int main()
{
int m, d, t;
cin >> m >> d;
t = m < 7 ? 21:23;
if (d >= t)m++;
switch (m) {
case 2:cout << "宝瓶"; break;
case 3:cout << "双鱼\n"; break;
case 4:cout << "白羊\n"; break;
case 5:cout << "金牛\n"; break;
case 6:cout << "双子\n"; break;
case 7:cout << "巨蟹\n"; break;
case 8:cout << "狮子\n"; break;
case 9:cout << "处女\n"; break;
case 10:cout << "天秤\n"; break;
case 11:cout << "天蝎\n"; break;
case 12:cout << "射手\n"; break;
default:cout << "摩羯\n" << endl;
}
system("pause");
return 0;
}
3.7求和:1+......100
for循环
cpp
for (initialization; condition; increment) {
// 循环体
}
cpp
#include <iostream>
using namespace std;
int main()
{
int i, sum;
i = 0;
sum = 0;
for (i = 0; i <= 100; i++) {
sum = sum + i;
}
cout << sum;
system("pause");
return 0;
}
while循环
cpp
while (condition) {
// 循环体
}
condition是一个布尔表达式
cpp
#include <iostream>
using namespace std;
int main()
{
int i=1, sum=0;
while (i <= 100) {
sum = sum + i;
i++;
}
cout << sum;
system("pause");
return 0;
}
3.9判断一个数是否是素数
素数指除了1和自己以外,不能被其他数整除的数
cpp
#include <iostream>
using namespace std;
int main()
{
int x, i;
cin >> x;
for (i = 2; i < x; i++)
{
if (x % i == 0) {
cout << "no";
cout << "能够被整除,被整除的数是" << i;
break;
}
}
if (i == x)
{
cout << "是素数";
}
system("pause");
return 0;
}
3.10阶乘的计算
计算10!
cpp
#include <iostream>
using namespace std;
int main()
{
int x, i, t;
cout << "输入一个需要计算阶乘的整数:";
cin >> x;
t = x;
for (i = 1; i < t; i++)
{
x = i * x;
}
cout << x;
system("pause");
return 0;
}
输入一个需要计算阶乘的整数:10
3628800
3.11计算圆周率
π 4 ≈ 1 − 1 3 + 1 5 − 1 7 + 1 9 − 1 11 ... \cfrac{π}{4} ≈1- \cfrac{1}{3} + \cfrac{1}{5} - \cfrac{1}{7}+ \cfrac{1}{9} - \cfrac{1}{11} ... 4π≈1−31+51−71+91−111...
要求最后一项绝对值小于 1 0 − 7 10^{-7} 10−7
cpp
#include <iostream>
using namespace std;
int main()
{
float pi=0;
int i, n;
for (i = 1; (1.0 / i) > 1e-7; i = i + 2)
{
n = i;
if ((n + 1) % 4 == 0)n = -i;
pi = pi + 1.0 / n;
}
pi = pi * 4.0;
cout <<"i此时等于" << i;
cout <<"\nπ的近似值是" << pi;
system("pause");
return 0;
}
3.12统计字母、数字和空格个数
从键盘中输入一行字符,直到回车结束,统计字母、数字和空格个数
cpp
#include <iostream>
using namespace std;
int main()
{
int c, a = 0, n = 0, s = 0;
while ((c = cin.get()) != '\n')
if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')) a++;
else if (n >= '0' && n <= '9') n++;
else if (c == ' ') s++;
cout << "字母有" << a << "\n数字有" << n << "\n空格有" << s;
system("pause");
return 0;
}
3.13百钱买百鸡问题
公鸡一只5元
母鸡一只3元
小鸡三只1元
共100元,买100只鸡,怎么安排?
答案:
cpp
第1种情况:0只公鸡.. 25只母鸡.. 75只小鸡..
第2种情况:4只公鸡.. 18只母鸡.. 78只小鸡..
第3种情况:8只公鸡.. 11只母鸡.. 81只小鸡..
第4种情况:12只公鸡.. 4只母鸡.. 84只小鸡..
代码:
cpp
#include <iostream>
using namespace std;
int main()
{
int x, y, z, n, n1, i=0;
for (n = 0; n < 20; n++)
{
x = 5 * n;
for (n1 = 0; n1 < 30; n1++)
{
y = 3 * n1;
z = 100 - n - n1;
z = z / 3.0;
if ((x + y + z) == 100&&(100 - n - n1)%3==0)
{
i++;
cout <<"第"<< i << "种情况:";
cout << n << "只公鸡..\t" << n1 << "只母鸡..\t" << 100-n-n1 << "只小鸡..\n";
break;
}
}
}
system("pause");
return 0;
}
3.14斐波那契数列前40个数
f ( 1 ) = 1 ( n = 1 ) f ( 2 ) = 1 ( n = 2 ) f ( n ) = f ( n − 1 ) + f ( n − 2 ) ( n > 2 ) f(1) = 1(n=1)\\ f(2) = 1(n=2)\\ f(n) = f(n-1) +f(n-2) (n>2) f(1)=1(n=1)f(2)=1(n=2)f(n)=f(n−1)+f(n−2)(n>2)
结果:
cpp
请输入想要获取的斐波那契数个数:
40
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 5702887 9227465 14930352 24157817 39088169 63245986 102334155 请按任意键继续. . .
代码:
cpp
#include <iostream>
using namespace std;
int main()
{
int i, x, y=1, z=1, t;
cout << "请输入想要获取的斐波那契数个数:\n";
cin >> x;
cout << "\t" << y << "\t" << z << "\t";
for (i = 2; i < x; i++)
{
t = z;
z = y + z;
y = t;
cout << z << "\t";
}
system("pause");
return 0;
}