第三章 程序控制结构
- 第三章程序控制结构:
- 3.1使用cin和cout输入输出数据
- 3.2计算三角形面积
- 3.3输入成绩,将成绩分类
- 3.4四个整数排序
- 3.5输入某天日期,自动输出第二天日期
- 3.6输入月份和日期,得到星座
- 3.7求和:1+……100
- 3.9判断一个数是否是素数
- 3.10阶乘的计算
- 3.11计算圆周率
- 3.12统计字母、数字和空格个数
- 3.13百钱买百鸡问题
- 3.14斐波那契数列前40个数
第三章程序控制结构:
3.1使用cin和cout输入输出数据
cout << 格式控制器<<表达式;
cin >>格式控制器>>变量;
格式控制器:
boolalpha : 逻辑型用文字true或false输入输出
noboolalpha:逻辑型用整数0或1输入输出
#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))
但是计算面积之前,首先要确定所输入的三角形三边是否能构成三角形,完整代码如下
#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
#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四个整数排序
先输入四个整数,然后自动从小到大排序:
#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整除)
#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 | 双鱼 |
#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循环
for (initialization; condition; increment) {// 循环体
}
#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循环
while (condition) {// 循环体
}
condition是一个布尔表达式
#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和自己以外,不能被其他数整除的数
#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!
#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
#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统计字母、数字和空格个数
从键盘中输入一行字符,直到回车结束,统计字母、数字和空格个数
#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只鸡,怎么安排?
答案:
第1种情况:0只公鸡.. 25只母鸡.. 75只小鸡..
第2种情况:4只公鸡.. 18只母鸡.. 78只小鸡..
第3种情况:8只公鸡.. 11只母鸡.. 81只小鸡..
第4种情况:12只公鸡.. 4只母鸡.. 84只小鸡..
代码:
#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)
结果:
请输入想要获取的斐波那契数个数:
401 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 请按任意键继续. . .
代码:
#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;
}