【谭浩强C++#1】第三章基础算法问题:找一个数因数+两数公约数公倍数+完全数+水仙花数+阶乘累加+数字位数判断+[a+aa+…]+猴子吃桃问题+标准输入输出流的控制符进行格式控制+迭代法求平方根等

这篇博客详细介绍了使用C++实现基础算法的问题,包括求圆各项数据、找最大数、成绩等级、数字判断、求最大公约数和公倍数、迭代法求平方根等。此外,还涉及了猴子吃桃问题和特定格式的三角形打印。内容涵盖浮点数格式控制、循环、条件判断和算法应用。
摘要由CSDN通过智能技术生成

3.2.求圆各项数据,具体精度格式输出。

设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积,用cin输入数据输出计算结果。输出时要求有文字说明,取小数点后两位数字。

#include<iostream>
#include<iomanip>
#define PI 3.14
using namespace std;

int main(){
   
	float R=1,H=0; 
	cout<<"请输入圆的半径和圆柱体高:"; 
	cin>>R>>H;
	cout<<setiosflags(ios::fixed)<<setiosflags(ios::right)<<setprecision(2);
	cout<<"R="<<setw(10)<<R<<endl;
	cout<<"S="<<setw(10)<<PI*R*R<<endl;
	cout<<"V="<<setw(10)<<4/3*PI*R*R*R<<endl;
	cout<<"S="<<setw(10)<<4*PI*R*R<<endl;
	
	cout<<endl<<"H="<<setw(10)<<H<<endl;
	cout<<"V="<<setw(10)<<PI*R*R*H<<endl;
	return 0;
}

要按照格式输出需要引入iomanip头文件,几个常用的标准输入输出流的控制符:
setiosflags(ios::fixed):设置浮点数以固定的小数位显示。常与setprecision()搭配。
setiosflags(ios::right):输出数据走右对齐,right可以替换为left
setiosflags(ios::scientific):设置浮点数以科学计数法,即指数表示。
setprecision():设置浮点数的精度为n位,在一般十进制小数形式输出时n代表有效数字,带有setiosflags(ios::fixed)setiosflags(ios::scientific)在前时,n为小数位数。

以上格式控制只需要设置一次就可以对以下所有cout输出生效,除非重新设置。

3.9.输入三个整数,输出最大的数。

#include<iostream>
using namespace std;
int main() {
   
	int a,b,c;
	int max,temp;
	cin>>a>>b>>c;
	temp=(a>b)?a:b;
	max=(temp>c)?temp:c;
	cout<<"最大的数为:"<<max;
}

善用三目条件表达式,可以使程序更加简明、清晰。

3.11.给出百分制成绩,要求输出成绩等级’A’(>90),‘B’(80-90),‘C’(70-80),‘D’(60-70),‘E’(<60)。

#include<iostream>
using namespace std;
int main() {
   
	float score;
	char grade;
	cout<<"输入成绩:";
	cin>>score;
	cout<<int(score/10)<<endl;
	while(score>100||score<0) {
   
		cout<<"数据输入错误"<<endl;
		cin>>score;
	}
	switch(int(score/10)) {
   
		case 10:
		case 9:grade='A';break;
		case 8:grade='B';break;
		case 7:grade='C';break;
		case 6:grade='D';break;
		default:grade='E';
	}
	cout<<"score is "<<score<<",grade is "<<grade<<endl;
	return 0;
}

int(score/10)函数相当于(int)强转,int型之间相除向下取整。判错处理以及switch语句利用向下取整划分范围的做法值得借鉴。

3.12.判断几位数,分别打印每一位数字,逆序输出各位数。

对于有限位数判断几位这个问题,书本答案直接判断是否大于9…9来判断,然后找出每一位数字存放在5个变量中,输出的时候把每个变量按照不同的次序cout而已。并没有用到数组,做法很局限。

 #include<iostream>
 using namespace std;
 int main(){
   
 	int a;//输入数
 	int n=10;//10、100、1000用于×10做判断
 	int tag=0;//判断几位数时,表示几位数
	int m=1;//几位数所对应的10、100、1000等
	int tag2=1;//查找每位数字时,表示第几位数

 	cout<<"请输入你要判定的数:"; 
 	cin>>a;
 	
 	//循环迭代乘10判断大小判断几位数
 	while(1){
   
 		tag++;
 		if(a>=n){
   
 			n*=10;
		 }else{
   
		 	cout<<"当前输入值为"<<tag<<"位数"<<endl; 
		 	break;
		 }
	 }
	 
	//循环迭代找到输入数字位数对应最低数字
	 for(int i=1;i
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值