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<</