您的位置:首页 > 编程语言 > C语言/C++

C语言初步-第11讲:算术运算符与算术表达式(分离整数和小数部分)

2017-09-11 10:32 375 查看
任务和代码:

/*
*Copyright (c)2017 CSDN学院
*All rights reserved
*文件名称:main.c
*作者: Osseyda
完成日期:2017.9.11
*版本号:v2.
*
*问题描述:从键盘上输入一个浮点数(小数点后有三位数),讲整数部分与小数分离
*问题输出:分别输出该数的整数部分和小数部分
*/
#include <stdio.h>
#include <stdlib.h>

int main()
{
float x;
int a,b;
printf("请输入一个浮点数: ");
scanf("%f",&x);
b=(x*1000)/1000;           //将浮点数先化为整数,再利用除法和取余运算
a=(int)(x*1000)%1000;
printf("该数的整数部分和小数部分分别为:%d %d\n",b,a);
return 0;
}
运行结果:



知识点总结:

1.基于/,%运算;2.取余运算一定要强制类型转换为int型

心得:

先将浮点数转化为整数,再利用/,%取前取后,是不是有点投机取巧呢?哈哈,觉得这样解决问题也挺好的!

如果是输入输入一个浮点数(小数点后有n位数)呢?

任务和代码:

*问题描述:从键盘上任意输入一个浮点数(小数点后n位),将整数部分与小数分离
*问题输出:分别输出该数的整数部分和小数部分
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
float x;
int a,b,n;
printf("请输入一个浮点数: ");
scanf("%f",&x);
printf("小数点后几位: ");
scanf("%d",&n);
b=(x*pow(10,n))/pow(10,n);
a=(int)(x*pow(10,n))%(int)(pow(10,n));
printf("该数的整数部分和小数部分分别为:%d %d\n",b,a);
return 0;
}
运行结果:





知识点总结:

1./结果为商,%结果为余数;2.求x的y次幂 pow(x,y)函数

心得:

1.取余的两边都得是int型

2.样例1输出结果正确,样例2输出的余数有误差。原因在于pow(x,y) x,y及函数值都是double型

3.觉得通过学会取整取余,这样的问题应该很简单
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言