C++程序设计例题——第三章程序控制结构

第三章 程序控制结构

第三章程序控制结构:

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;
}
相关推荐
HEU_firejef1 分钟前
面试经典 150 题——数组/字符串(一)
数据结构·算法·面试
编码小哥2 分钟前
C++线程同步和互斥
开发语言·c++
朝九晚五ฺ11 分钟前
【Linux探索学习】第二十四弹——软硬链接:Linux 中的软链接与硬链接详解
linux·运维·chrome·学习
chenziang140 分钟前
leetcode hot 全部子集
算法·leetcode·职场和发展
EdwardYange40 分钟前
LeetCode 83 :删除排链表中的重复元素
数据结构·算法·leetcode·链表
nuyoah♂40 分钟前
DAY37|动态规划Part05|完全背包理论基础、LeetCode:518. 零钱兑换 II、377. 组合总和 Ⅳ、70. 爬楼梯 (进阶)
算法·leetcode·动态规划
编程探索者小陈1 小时前
【优先算法】专题——二分查找算法
算法
清岚_lxn1 小时前
es6 字符串每隔几个中间插入一个逗号
前端·javascript·算法
虾球xz1 小时前
游戏引擎学习第64天
redis·学习·游戏引擎
虾球xz1 小时前
游戏引擎学习第63天
学习·游戏引擎