一本通编程启蒙例29及练习题解

例29.1

for循环遍历1至n,累计求乘积
注意:计数从1开始,否则后果你尝试一下就知道啦!

#include <iostream>
using namespace std;
int main() {
	int n;
	long long a = 1;
	cin >> n;
	for (int i = 1;i <= n;i++) 
		a *= i;
	cout << a;
	return 0;
}

例29.2

解题思路:
1.从输入中读取两个整数a和b。
2.初始化一个整数变量x为1,用于存储幂的计算结果。
3.使用for循环,从1到b,计算a的b次方。在每次循环中,将x乘以a,并将结果模1000,以获取末三位数字。
4.使用setw和setfill格式化输出,确保输出宽度为3,不足时在前面补零。输出x的值,即幂ab的末3位数。

// 引入所需的头文件
#include<iostream>
#include <iomanip>
#include <cmath>
using namespace std;

// 主函数
int main(){
  // 定义两个整数变量a和b
  int a, b;
  // 从输入中读取a和b的值
  cin >> a >> b;

  // 定义一个整数变量x,初始化为1
  int x = 1;
  // 使用for循环,从1到b,计算a的b次方
  for (int i = 1; i <= b; i++) {
    // 将x乘以a,并将结果模1000,以获取末三位数字
    x *= a, x = x % 1000;
  }

  // 使用setw和setfill格式化输出,确保输出宽度为3,不足时在前面补零
  cout << setw(3) << setfill('0') << x;

  // 返回0,表示程序正常结束
  return 0;
}

例29.3

解题思路:

1.从输入中读取三个整数a、b和n。
2.初始化一个整数变量temp,用于存储小数点后第n位的数字。
3.使用for循环,从1到n。在每次循环中,将a乘以10,计算a/b的商和余数。将商赋值给temp,将余数赋值给a。
4.输出temp的值,即小数点后第n位的数字。

// 引入所需的头文件
#include <iostream>
using namespace std;

// 主函数
int main() {
  // 定义四个整数变量a、b、n和temp
  int a, b, n, temp;
  // 从输入中读取a、b和n的值
  cin >> a >> b >> n;

  // 使用for循环,从1到n
  for (int i = 1; i <= n; i++) {
    // 将a乘以10,计算a/b的商和余数
    a *= 10, temp = a / b, a %= b;
  }

  // 输出temp,即小数点后第n位的数字
  cout << temp;

  // 返回0,表示程序正常结束
  return 0;
}

练29.1

解题思路:

1.从输入中读取两个整数x和n。
2.使用pow函数计算1.001的n次方,然后乘以x,得到n年后的人口数。
3.使用printf函数输出结果,保留到小数点后四位。

// 引入所需的头文件
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;

// 主函数
int main(){
  // 定义两个整数变量x和n
  int x, n;
  // 从输入中读取x和n的值
  cin >> x >> n;

  // 计算n年后的人口数,使用pow函数计算1.001的n次方,然后乘以x
  double ans = x * pow(1.001, n);

  // 输出结果,保留到小数点后四位
  printf("%.4f\n", ans);

  // 返回0,表示程序正常结束
  return 0;
}

练29.2

解题思路:

1.从输入中读取一个整数n。
2.初始化一个无符号长长整数变量s为1。
3.使用do-while循环,计算1992的n次方的末两位数。在每次循环中,将s乘以1992,取模100,得到末两位数。然后n减1。
4.循环结束后,输出s除以100的余数,即1992的n次方的末两位数。

// 引入所需的头文件
#include<iostream>
using namespace std;

// 主函数
int main() {
	// 定义一个整数变量n
	int n;
	// 定义一个无符号长长整数变量s,初始化为1
	unsigned long long s = 1;
	// 从输入中读取n的值
	cin >> n;
	// 使用do-while循环,计算1992的n次方的末两位数
	do {
		// 将s乘以1992,取模100,得到末两位数
		s = (1992 * s) % 100; 
		// n减1
		n--;
	} while (n); // 循环条件为n != 0

	// 输出s除以100的余数,即末两位数
	cout << s % 100; 

	// 返回0,表示程序正常结束
	return 0;
} 

练29.3

解题思路:

1.从输入中读取三个整数R、M和Y。
2.使用pow函数计算复合年利率的Y次方。
3.将M乘以复合年利率的Y次方,得到最终的金额。
4.输出结果的整数部分。

// 引入所需的头文件
#include <iostream>
#include <cmath>

using namespace std;

// 主函数
int main()
{
  // 定义三个整数变量R、M和Y
  int R, M, Y;
  // 从输入中读取R、M和Y的值
  cin >> R >> M >> Y;

  // 计算复合年利率的Y次方,使用pow函数
  double rate = pow(1 + (double)R / 100, Y); 

  // 计算最终的金额,将M乘以复合年利率的Y次方
  double result = M * rate; 

  // 输出结果的整数部分
  cout << (int)result;

  // 返回0,表示程序正常结束
  return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值