C++day07(三种取整方法)
学习目标
- 认识流程图
- 多种方式解决问题
- 取整方式和取整函数
1.解决编程问题的过程
1.理解题意,找出关键信息。
2.整理思路,用图或者文字写出算法。
3.将算法步骤翻译为C++代码。
4.编译运行,修改语法或逻辑错误。
不符合则需要回到上一步进行修改。
5 .输入测试用例与预期结果进行比照。
1.1描述算法的方式
【编程任务】输入两个整数,输出他们的和。
1.1.1自然语言描述算法
第1步 声明整型变量n1,n2,sum
第2步 输入n1,n2
第3步计算sum
第4步 输出sum
这种介于自然语言和计算机语言之间的描述语句叫伪代码
自然语言易于理解,但是描述复杂问题可能不准确
1.1.2思维导图描述算法
【编程任务】输入两个整数,输出他们的和
| 声明整型变量n1,n2,sum | ||
|---|---|---|
| 输入n1,n2 | ||
| 加法计算 | 计算sum | |
| 输出sum |
思维导图可以描述简单的算法,但是不能明确描述执行流程
1.1.3流程图描述算法
【编程任务】输入两个整数开始输出他们的和。
| 开始 |
|---|
| 声明整型变量n1,n2,sum |
| 输入两个数给n1,n2 |
| 计算和sum |
| 输出sum |
| 结束 |
流程图.
- 对程序的运行过程表达更清晰
- 可以描述更复杂的算法流程

顺序结构:
- 自上而下,依次执行
- 没有分支和回头路

练习1
1、字符三角形
【编程挑战】编写一个程序,输入一个字符 (可显示字符)
输出用这个字符组成的,底边5个字符,高3个字符的等腰三角形。
【输入】输入一个字符
【输出】这个字符组成的三角形
【输入样例】#
【输出样例]

#include<iostream>
using namespace std;
int main()
{
char c;
cin>>c;
cout<<" "<<c<<endl;
cout<<" "<<c<<c<<c<<endl;
cout<<c<<c<<c<<c<<c<<endl;
return 0;
}
方法二:
#include<iostream>
using namespace std;
int main()
{
char c;
scanf("%c",&c);
printf(" %c\n",c);
printf(" %c%c%c\n",c,c,c);
printf("%c%c%c%c%c",c,c,c,c,c);
return 0;
}
2、 三位数逆序
【编程挑战】编写一个程序,输入一个三位整数,把各位上的
数字逆序,输出新的三位数。例如输入123,输出321。
【输入】输入1行,一个三位整数
【输出】输出1行,逆序后的三位整数
【输入样例】
123
【输出样例】
321
#include<iostream>
using namespace std;
int main()
{
int x,y,z,w;
cin>>x;
y=x%10;
z=(x/10)%10;
w=x/100;
cout<<y*100+z*10+w;
return 0;
}
2.向下取整
- 数学中的向下取整
- 取小于或等于数据的最大整数
- 也称作地板取整
- 如3.1向下取整结果为3,-3.1向下取整结果为-4
3.四舍五八取整
数学中的四舍五入取整
- 小于5的舍去,大于或等于5的进1位
- 如, 3.1四舍五入结果为3,-3.1四舍五入结果为-3
- 3.6四舍五入结果为4,-3.6四舍五入结果为-4
- 3.5四舍五入结果为4,-3.5四舍五入结果为-4
4.C++的取整函数
| 取整方式 | 函数 | 返回值 | 示例 |
|---|---|---|---|
| 向下取整 | floor(x) | double类型 | floor(2.5) = 2.0; floor(-2.5) = -3.0 |
| 向上取整 | ceil(x) | double类型 | ceil(2.5) = 3.0; ceil(-2.5) = -2.0 |
| 四舍五入 | round(x) | double类型 | round(3.4) = 3.0; round(3.5) = 4.0 |
要使用这些数学函数,必须在程序头包含cmath头文件:
#include
由于返回的数是double类型,需要输出整数时需要先强制转换成整数类型,再进行输出
int i = ceil(3.1);//赋值时进行自动转换round
printf("%d",i);
或者
printf("%d\n",int(ceil(3.1); /int()函数进行强制转换
例子
#include<iostream>
#include<cmath> //ceil函数需要用到此文件头
using namespace std;
int main()
{
printf("%d\n",int(ceil(3.1)));
printf("%f\n",ceil(3.1));
return 0;
}
1、成绩计算
学校开设了“人工智能入门"课程。这门课程的最终成绩计算方法是:
最终成绩=作业成绩x30%+小测成绩x20%+期末考试成绩x50%。
【编程挑战】编写一个程序,输入作业成绩、小测成绩和期末考试成绩,
输出向上取整和向下取整后的最终成绩。
【输入】一行,3个整数a、b、c(均大于0且小于100),即作业成绩、小测
成绩和期未考试成绩,3个数据用空格分隔
【输出】一行,向上取整和向下取整后的最终成绩 (逗号分隔)
【输入样例】89 80 93
【输出样例】90,89
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int a,b,c;
float d;
scanf("%d%d%d",&a,&b,&c);
d=a*0.3+b*0.2+c*0.5;
printf("%d,%d",int(ceil(d)),int(floor(d)));
return 0;
}
【注意】
- 用printf输出前,需要对取整函数返回的值进行强制类型转换
- 输出的两个数需要用逗号分隔
3.三位数逆序(另一种实现方式)
【编程挑战】编写一个程序,输入一个三位整数,把各位上的数字逆序
输出新的三位数。例如输入123,输出321。
【提示】把三位数当成三个字符读入,再进行逆序输出
【输入】输入1行,一个三位整数
【输出】输出1行,逆序后的三位整数
【输入样例】
123
【输出样例】
321
#include<iostream>
using namespace std;
int main()
{
char bai,shi,ge;
cin>>bai>>shi>>ge;
cout<<ge<<shi<<bai;
return 0;
}
课堂总结
本次课程的知识点
1.总结解决编程问题的一般过程
2.初步了解流程图
3.尝试用多种方式解决实际编程问题
4.学习三种不同的取整和取整函数的使用
C++编程小词典
V floor(向下取整函数
√ ceilO向上取整函数
Y round()四舍五入取整函数
g namespace std;
int main()
{
char bai,shi,ge;
cin>>bai>>shi>>ge;
cout<<ge<<shi<<bai;
return 0;
}
# 课堂总结
本次课程的知识点
1.总结解决编程问题的一般过程
2.初步了解流程图
3.尝试用多种方式解决实际编程问题
4.学习三种不同的取整和取整函数的使用
C++编程小词典
V floor(向下取整函数
√ ceilO向上取整函数
Y round()四舍五入取整函数
Y cmath数学函数头文件,取整函数需要用到此文件头
更多推荐


所有评论(0)