实数取整写入文件(C语言文件篇)

题目要求:文件f1.txt中有若干个实数,请分别读出,将每个实数按四舍五入取整后存入存入文件f2.txt中。试编写相应程序。

思路:

  1. 打开文件f1,
  2. 读入实数,
  3. 将实数的整数部分和小数部分拆开,
  4. 小数部分与0.5相比较,
  5. 整数部分作出对应调整并写入文件f2。

运行后文件内容: 

 

f1.txt(自行输入)f2.txt(运行后系统生成)

 源程序:

#include<stdio.h> 
#include<stdlib.h>
void splitfloat(double x,int *intpart,double *fracpart)
{
	*intpart=(int)x;//强制转换为整型 
	*fracpart=x-*intpart;//直接减去整数部分可得小数部分 
}
int main(void)
{
	FILE *fp1,*fp2;
	int intpart;//x=345.89,小数部分为0.890015 
	double z,fracpart,a;//x=123.456,小数部分会输出为0.456001
	
	if((fp1=fopen("f1.txt","r"))==NULL){
		printf("文件f1打开失败!"); 
		exit(0);
	}
	if((fp2=fopen("f2.txt","w"))==NULL){
		printf("文件f2打开失败!"); 
		exit(0);
	}
	while(!feof(fp1)){
		fscanf(fp1,"%lf",&z);//读取 
		if(z!=EOF){ 
		    splitfloat(z,&intpart,&fracpart);//拆分整数和小数部分 
//	        printf("整数部分:%d\n小数部分:%lf\n",intpart,fracpart);//帮助检验 
			if(fracpart>=0.5){//小数部分 四舍五入 
				intpart=intpart+1;
//				printf("整数部分:%d\n小数部分:%lf\n",intpart,fracpart);//帮助检验     
			}
			fprintf(fp2,"%d\n",intpart);
		}
	}
	
	return 0;
}

 其中拆分实数的整数与小数部分原题目:

要求自定义一个函数 void splitfloat ( float x , int * intpart , float * fracpart ),其中 x 是被拆分的实数,* intpart 和* fracpart 分别是将实数 x 拆分出来的整数部分与小数部分。编写主函数,并在其中调用函数 splitfloat ()。

源程序:

#include<stdio.h>//习题8.1 拆分实数的整数与小数部分 
void splitfloat(float x,int *intpart,float *fracpart)
{
	*intpart=(int)x;//强制转换为整型 
	*fracpart=x-*intpart;//直接减去整数部分可得小数部分 
}
main(void)
{
	float x,fracpart;//x=123.456,小数部分会输出为0.456001 
	int intpart;//x=345.89,小数部分为0.890015 
	printf("Enter x:");
	scanf("%f",&x);
	splitfloat(x,&intpart,&fracpart);
	printf("整数部分:%d\n小数部分:%lf",intpart,fracpart);
	
	return 0;
}

 

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值