scanf的使用 输入值求面积和体积实例

闲着无聊的时候有个小学生问了一个编程题,原题如下:

用scanf输入半径r和高h求圆锥的面积和体积输出结果保留两位小数。

本来以为是很简单的题的,结果做好后在小侄子的手残输入的参数下异常频繁啪啪打脸。。。(此次省略内心活动100字)下面贴上修改后的版本和原版。

 

#include <stdio.h>
#include <math.h>

#define Pi 3.1415926

int main()
{
	double r=0.00, h=0.00, S=0.00, V=0.00, L=0.00;
	int flag=0;
	printf("请输入对应数据,输入后按Enter确认!\n");
	/*
		**version 1.01 此版本没有对输入的数据做容错处理不合理 
	*/
	/* 
	printf("输入圆的半径r=:");
	scanf("%lf", &r);
	printf("输入圆锥的高h=:");
	scanf("%lf", &h); 
	*/ 
	/*
		**version 1.02此版本重点针对输入值的容错做处理 
	*/ 
	while(flag!=2){
		fflush(stdin);
		printf("输入圆的半径r和圆锥的高h:\n");
		flag=scanf("%lf %lf", &r, &h);
		if(flag==2){
			if(r<=0 ||h<=0){
				flag=0;//当r/h输入的值小于0时判断为失败对flag赋值0 
			}
		}
		if(flag!=2){
			printf("输入值有错,请按要求输入合理的值\n");
		}
	}

	
	printf("r=%f h=%f\n", r, h);
	L=sqrt((r*r+h*h));
	printf("%lf\n", L);
	S=Pi*L*r+Pi*r*r;
	V=(Pi*r*r*h)/3.0000;

	printf("圆锥体积为:%0.2lf圆锥面积为:%0.2lf\n", V, S);	
	return 0;
 } 

 

 总结:作为一个工具制造者不要把每个使用者都当成会正常使用,都是乱来的,所以要做好容错处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值