3.2 圆半径r=1.5,圆柱高h=3,求圆周长,圆面积,球表面积,球体积,圆柱体积。取小数点后两位。
#include <iostream>
#include <iomanip>
using namespace std;
int main ( )
{
float h,r,l,s,sq,vq,vz;
const float pi=3.1415926;
cout<<"please enter r,h:";
cin>>r>>h;
l=2*pi*r;
s=r*r*pi;
sq=4*pi*r*r;
vq=3.0/4.0*pi*r*r*r;
vz=pi*r*r*h;
cout<<setiosflags(ios::fixed)<<setiosflags(ios::right)<<setprecision(2);
cout<<"l= "<<setw(10)<<l<<endl;
cout<<"s= "<<setw(10)<<s<<endl;
cout<<"sq="<<setw(10)<<sq<<endl;
cout<<"vq="<<setw(10)<<vq<<endl;
cout<<"vz="<<setw(10)<<vz<<endl;
return 0;
}
3.3 输入华氏温度,输出摄氏温度
#include <iostream>
using namespace std;
int main ()
{float c,f;
cout<<"请输入一个华氏温度:";
cin>>f;
c=(5.0/9.0)*(f-32); //注意5和9要用实型表示,否则5/9值为0
cout<<"摄氏温度为:"<<c<<endl;
return 0;
};
3.4 用getchar读入两个字符给c1 c2,用putchar和cout输出
#include <iostream>
using namespace std;
int main ( )
{char c1,c2;
cout<<"请输入两个字符c1,c2:";
c1=getchar(); // input to c1
c2=getchar(); //c2
cout<<"用putchar函数输出结果为:";
putchar(c1);
putchar(c2);
cout<<endl;
cout<<"用cout语句输出结果为:";
cout<<c1<<c2<<endl;
cout<<(int)c1<<endl; //output ascii
cout<<(int)c2<<endl;
return 0;
}
3.5 整型变量 字符变量
#include <iostream>
using namespace std;
int main ( )
{char c1,c2;
int i1,i2; //定义为整型
cout<<"请输入两个整数i1,i2:";
cin>>i1>>i2;
c1=i1;
c2=i2;
cout<<"按字符输出结果为:"<<c1<<" , "<<c2<<endl;
return 0;
}
3.8求值
#include <iostream>
using namespace std;
int main ( )
{ int a=3,b=4,c=5,x,y; //与运算优先于或运算
cout<<(a+b>c && b==c)<<endl; // 0
cout<<(a||b+c && b-c)<<endl; // 1
cout<<(!(a>b) && !c||1)<<endl; // 1
cout<<(!(x=a) && (y=b) && 0)<<endl; // 0
cout<<(!(a+b)+c-1 && b+c/2)<<endl; // 1
return 0;
}
3.9 输入三个整数,输出最大的数
#include <iostream>
using namespace std;
int main ( )
{
// int a,b,c,temp,max ;
int a,b,c;
cout<<"please enter three integer numbers:";
// cin>>a>>b>>c;
// temp=(a>b)?a:b; /* 将a和b中的大者存入temp中 */
// max=(temp>c)?temp:c; /* 将a和b中的大者与c比较,最大者存入max */
// cout<<"max="<<max<<endl;
cin>>a>>b>>c;
a=(a>b)?a:b; //max到a
a=(a>c)?a:c;
cout<<"max="<<a<<endl;
return 0;
}
3.10分段函数
#include <iostream>
using namespace std;
int main ( )
{int x,y;
cout<<"enter x:";
cin>>x;
if (x<1)
{y=x;
cout<<"x="<<x<<", y=x="<<y;
}
else if (x<10) // 1≤x<10
{y=2*x-1;
cout<<"x="<<x<<", y=2*x-1="<<y;
}
else // x≥10
{y=3*x-11;
cout<<"x="<<x<<", y=3*x-11="<<y;
}
cout<<endl;
return 0;
}
3.11百分制成绩输出等级ABCDE
#include <iostream>
using namespace std;
int main ()
{float score;
char grade;
cout<<"please enter score of student:";
cin>>score;
while (score>100||score<0)
{cout<<"data error,enter data again.";
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;
}
3.12给出一个不多于五位数的整数,求出是几位数,打印出每一位数字,逆序打出各位数字
#include <iostream>
#include <cmath>
using namespace std;
int main ()
{
int i=1,x;
cout<<"input x: ";
cin>>x;
cout<<endl;
/*位数*/
int n;
n=x;
if(n>99999||n<=0)
cout<<"error"<<endl;
else
{
while(n>=10)
{
i++;
n=n/10;
}
cout<<"整数位数为: "<<i<<endl;
}
/*正序输出*/
int a,b,c;
cout<<"顺序输出: ";
a=pow(10,(i-1)); //pow为10的几次幂
b=a*10;
while(a>=1)
{
c=(x%b-x%a)/a;
cout<<c<<" ";
a=a/10;
b=b/10;
}
cout<<endl;
/*逆序输出*/
int m;
m=x;
cout<<"逆序输出: ";
while(m!=0)
{
cout<<m%10<<" ";
m/=10;
}
cout<<endl;
return 0;
}
3.13 企业发放的奖金根据利润提成 分别用if 和switch
#include <iostream>
using namespace std;
int main ()
{ long i; //i为利润
float bonus,bon1,bon2,bon4,bon6,bon10;
bon1=100000*0.1; //利润为10万元时的奖金
bon2=bon1+100000*0.075; //利润为20万元时的奖金
bon4=bon2+100000*0.05; //利润为40万元时的奖金
bon6=bon4+100000*0.03; //利润为60万元时的奖金
bon10=bon6+400000*0.015; //利润为100万元时的奖金
cout<<"enter i:";
cin>>i;
if (i<=100000)
bonus=i*0.1; //利润在10万元以内按10%提成奖金
else if (i<=200000)
bonus=bon1+(i-100000)*0.075; //利润在10万元至20万时的奖金
else if (i<=400000)
bonus=bon2+(i-200000)*0.05; //利润在20万元至40万时的奖金
else if (i<=600000)
bonus=bon4+(i-400000)*0.03; //利润在40万元至60万时的奖金
else if (i<=1000000)
bonus=bon6+(i-600000)*0.015; //利润在60万元至100万时的奖金
else
bonus=bon10+(i-1000000)*0.01; //利润在100万元以上时的奖金
cout<<"bonus="<<bonus<<endl;
return 0;
}
#include <iostream>
using namespace std;
int main ()
{long i;
float bonus,bon1,bon2,bon4,bon6,bon10;
int c;
bon1=100000*0.1;
bon2=bon1+100000*0.075;
bon4=bon2+200000*0.05;
bon6=bon4+200000*0.03;
bon10=bon6+400000*0.015;
cout<<"enter i:";
cin>>i;
c=i/100000;
if (c>10) c=10;
switch(c)
{case 0: bonus=i*0.1; break;
case 1: bonus=bon1+(i-100000)*0.075; break;
case 2:
case 3: bonus=bon2+(i-200000)*0.05;break;
case 4:
case 5: bonus=bon4+(i-400000)*0.03;break;
case 6:
case 7:
case 8:
case 9: bonus=bon6+(i-600000)*0.015; break;
case 10: bonus=bon10+(i-1000000)*0.01;
}
cout<<"bonus="<<bonus<<endl;
return 0;
}
3.14 输入四个整数,由小到大
#include <iostream>
#include <string>
#define m 4
using namespace std;
int main() {
int n[m-1];
int i, j;
int temp; //用于缓存需要交换的数字
cout << "请输入4个数字!" << endl;
for (i = 0; i < m; i++) {
cin >> n[i];
}
for (i = 0; i < m-1;i++) { //共进行9步
for (j = 0; j < m-1 - i;j++) { //在每一步进行10-i次两两比较
if (n[j] > n[j + 1]) {
temp = n[j];
n[j] = n[j + 1];
n[j + 1] = temp;
}
}
}
cout << "排序后的数据是:" << endl;
for (i = 0; i < m; i++)
{
cout << n[i] << ' ';
}
cout << endl;
return 0;
}
3.15 输入两个正整数mn,求最大公约数最小公倍数
#include <iostream>
using namespace std;
int main ()
{int p,r,n,m,temp;
cout<<"please enter two positive integer numbers n,m:";
cin>>n>>m;
if (n<m)
{temp=n;
n=m;
m=temp; //把大数放在n中, 小数放在m中
}
p=n*m; //先将n和m的乘积保存在p中, 以便求最小公倍数时用
while (m!=0) //求n和m的最大公约数
{r=n%m;
n=m;
m=r;
}
cout<<"HCF="<<n<<endl;
cout<<"LCD="<<p/n<<endl; // p是原来两个整数的乘积
return 0;
}
3.16输入一行字符,统计出英文字母 空格 数字 其他字符 的个数
#include <iostream>
using namespace std;
int main ()
{char c;
int letters=0,space=0,digit=0,other=0;
cout<<"enter one line:" <<endl;
while((c=getchar())!='\n')
{if (c>='a' && c<='z'||c>='A' && c<='Z')
letters++;
else if (c==' ')
space++;
else if (c>='0' && c<='9')
digit++;
else
other++;
}
cout<<"letter:"<<letters<<", space:"<<space<<", digit:"<<digit<<", other:"<<other<<endl;
return 0;
}
3.17求a+aa+aaa+……+aa……a的值,输入n
#include <iostream>
using namespace std;
int main ()
{
int a,n,i=1,sn=0,tn=0;
cout <<"input a & n ";
cin >>a>>n;
while(i<=n)
{
tn=tn+a;
sn=sn+tn;
a=a*10;
++i;
}
cout<<"a+aa+aaa+...= "<<sn<<endl;
return 0;
}
3.18 求
#include <iostream>
using namespace std;
int main ()
{float s=0,t=1;
int n;
for (n=1;n<=20;n++)
{
t=t*n; // 求n!
s=s+t; // 将各项累加
}
cout<<"1!+2!+...+20!="<<s<<endl;
return 0;
}
3.19输出所有水仙花数(三位数,各个数字立方和 等于 数字本身)
#include <iostream>
using namespace std;
int main ()
{int i,j,k,n;
cout<<"narcissus numbers are:"<<endl;
for (n=100;n<1000;n++)
{i=n/100;
j=n/10-i*10;
k=n%10;
if (n == i*i*i + j*j*j + k*k*k)
cout<<n<<" ";
}
cout<<endl;
return 0;
}
3.20 1000以内完数。(数值=因子之和)
#include <iostream>
using namespace std;
int main()
{int m,s,i;
for (m=2;m<1000;m++)
{s=0;
for (i=1;i<m;i++)
if ((m%i)==0) s=s+i;
if(s==m)
{cout<<m<<" is a完数"<<endl;
cout<<"its factors are:";
for (i=1;i<m;i++)
if (m%i==0) cout<<i<<" ";
cout<<endl;
}
}
return 0;
}
3.21
#include <iostream>
using namespace std;
int main()
{int i,t,n=20;
double a=2,b=1,s=0;
for (i=1;i<=n;i++)
{s=s+a/b;
t=a;
a=a+b; // 将前一项分子与分母之和作为下一项的分子
b=t; // 将前一项的分子作为下一项的分母
}
cout<<"sum="<<s<<endl;
return 0;
}
3.22
#include <iostream>
using namespace std;
int main()
{int day,x1,x2;
day=9;
x2=1;
while(day>0)
{x1=(x2+1)*2; // 第1天的桃子数是第2天桃子数加1后的2倍
x2=x1;
day--;
}
cout<<"total="<<x1<<endl;
return 0;
}
//递归函数(第四章)
#include<iostream>
using namespace std;
int peach(int);
int main()
{
cout << peach(10) << endl;
return 0;
}
int peach(int n)
{
int c;
if (n == 1)
c = 1;
else
c = (peach(n-1)+1)*2;
return c;
}
3.23迭代法求x=sqrt(a)
#include <iostream>
#include <cmath>
using namespace std;
int main()
{float a,x0,x1;
cout<<"enter a positive number:";
cin>>a; // 输入a的值
x0=a/2;
x1=(x0+a/x0)/2;
do
{x0=x1;
x1=(x0+a/x0)/2;
}
while(fabs(x0-x1)>=1e-5);
cout<<"The square root of "<<a<<" is "<<x1<<endl;
return 0;
}
3.24输出
*
***
*****
*******
*****
***
*
#include <iostream>
using namespace std;
int main()
{int i,k;
for (i=0;i<=3;i++) // 输出上面4行*号
{for (k=0;k<=2*i;k++)
cout<<"*"; // 输出*号
cout<<endl; //输出完一行*号后换行
}
for (i=0;i<=2;i++) // 输出下面3行*号
{for (k=0;k<=4-2*i;k++)
cout<<"*"; // 输出*号
cout<<endl; // 输出完一行*号后换行
}
return 0;
}
(心形图像)
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
float x, y;
for (y = 1.5f; y >-1.5f; y -= 0.1f)
{
for (x = -1.5f; x <1.5f; x += 0.05f)
{
float a = x*x + y*y - 1;
if ((a*a*a- x*x*y*y*y)<=0)//心形方程
cout << '*';
else cout << " ";
}
cout << endl;
}
return 0;
}
3.25两个乒乓球队进行比赛,各出3人。甲队为ABC三人,乙队为XYZ三人。已抽签决定比赛名单。
A不和X比,C不和XZ比,找出名单。
#include<iostream>
using namespace std;
int main()
{
char i,j,k;
for (i='X';i<='Z';i++)
for(j='X';j<='Z';j++)
if(i!=j)
for(k='X';k<='Z';k++)
if(i!=k&&j!=k)
if(i!='X'&&k!='X'&&k!='Z')
cout<<"A-"<<i<<" B-"<<j<<" C-"<<k<<endl;
return 0;
}
零基础C++,有很多不完善的地方和不想改网上参考答案的地方
有问题可留言,反正我也不会