【BJFU】程序设计基础 实验1
一、题目:
实验内容:
1.编写程序,实现如下功能:求之值。
思考:注意分数之前的符号,什么时候为正什么时候为负?
2. 编写程序,实现如下功能:求出 200 到 300 之间的数,且满足条件:它们三个数字之积为 42,三个数字之和为 12。
思考:如何求出一个三位数的百位、十位和个位?
二、源码:
实验(1)
#include <stdio.h>
int main() {
double sum;//用于存储每次计算后的值
for (int i = 1; i <= 100; i++) {
if (i % 2 == 1)//判断分母是奇数还是偶数,从而进行加或减
sum += 1.0 / i;
else
sum -= 1.0 / i;
}
printf("1 - 1/2 + 1/3 - 1/4 +…+ 1/99 - 1/100 = %lf", sum);//输出
return 0;
}
实验(2)
#include <stdio.h>
int main() {
int a, b, c; //分别用于存储i的百位、十位、个位
printf("200到300满足条件三个数字之积为 42,三个数字之和为 12 的有:\n");
for (int i = 201; i < 300; i++) {
a = i / 100;
b = i % 100 / 10;
c = i % 10;
if (a * b * c == 42 && a + b + c == 12)//判断是否满足条件
printf("%d ", i);//输出,并用空格隔开
}
return 0;
}
三、分析:
(一)、对于实验一:
1.思路分析:首先找出原式规律:分母从1递增到100,可用循环结构实现;分母为奇数时分数前符号为正、偶数时该分数前符号为负,可在循环内部使用if语句判断,决定加减。
2.易错点总结:
(1)sum要用double或float类型定义,应为要计算分数。
(2)计算分数时由于i是int整形,要用1.0除以i来计算分数而非1除以i,即“浮点数/整形得浮点型”。
3.另一种思路:
可用两个循环分别计算所有奇数为分母的分数的总和sum1、所有偶数为分母的分数的总和sum2,并用sum1-sum2得到答案,从而免于判断奇偶。
(二)、对于实验二:
1.思路分析:求200到300之间的数,可用循环结构来遍历。满足条件“三个数字之积为 42,三个数字之和为 12”,可用if语句判断。要进行判断,可分别求出该三位数的百位a、十位b、个位c。假设该数为n,百位:a=n/100(“整除整得整”的思想);十位:b=n%100/10(或b=n/10%10);个位:c=n%10。
2.易错点总结:
(1)百位、十位、个位的分别计算。
(2)条件表达式的书写(“&&”的使用及优先度)。
3.另一种思路:
由于是200到300之间的数要满足条件,所以百位一定是2。则剩下两个数满足条件:积为21、和为10。则可以通过两层循环嵌套找出满足条件的两个数分别作为所求数的十位、个位。
欢迎改正与补充,禁止直接搬运作为课程作业