C++ 作业题

2078232090一、 分析下列程序的输出结果:

第一部分
Lx2_1.cpp

1
2
3
4
5
6
7
8
9
10
using namespace std;
main()
{
int a,b,c;
a=123;
b=0123;
c=0x123;
cout<<"a="<<a<<" b="<<b<<" c="<<c<<endl;
system("pause");
}

Lx2_2.cpp

1
2
3
4
5
6
7
8
9
10
11
#include<iostream>
using namespace std;
main()
{
bool f1,f2,f3;
f1=3>2;
f2=3==2;
f3=10;
cout<<"f1="<<f1<<" f2="<<f2<<" f3="<<f3<<endl;
system("pause");
}

Lx2_3.cpp

1
2
3
4
5
6
7
8
9
#include<iostream>
using namespace std;
main()
{
char s1[10]="abcdefgh";
s1[5]='\0';
cout<<s1<<endl;
system("pause");
}

Lx2_4.cpp

1
2
3
4
5
6
7
8
9
10
11
12
#include<iostream>
using namespace std;
main()
{
char c1='\123';
char c2='\x45';
cout<<"c1="<<c1<<" c2="<<c2<<endl;
cout<<"abcd\nefgh"<<endl;
cout<<"abcd\tefgh"<<endl;
cout<<"abcd\"xyz\"efgh"<<endl;
system("pause");
}

Lx2_5.cpp

1
2
3
4
5
6
7
8
9
10
11
12
13
#include<iostream>
using namespace std;
main()
{
int i(10),j(5);
cout<<(++i-j--)<<endl;
i=10;j=5;
int k=(i=i*=j);
cout<<k<<endl;
cout<<(i=3/2*(j=3-2))<<endl;
cout<<(i+i&0xff)<<endl;
system("pause");
}

第二部分

(1)

1
2
3
4
5
6
7
8
9
10
#include<iostream>
using namespace std;
#define M 1.5
#define A(a) M*a
main()
{
int x=5,y=6;
cout<<A(x+y)<<endl;
system("pause");
}

(2)

1
2
3
4
5
6
7
8
9
10
#include<iostream>
using namespace std;
#define MAX(a,b) (a)>(b)?(a):(b)
main()
{
int m=1,n(2),p(0),q;
q=MAX(m,n+p)*10;
cout<<q<<endl;
system("pause");
}

(3)

1
2
3
4
5
6
7
8
9
10
#include<iostream>
using namespace std;
#define MAX(a,b) a>b?a:b
main()
{
int m=1,n(2),p(0),q;
q=MAX(m,n+p)*10;
cout<<q<<endl;
system("pause");
}

注意(2)和(3)的不同特点和结果

(4)

1
2
3
4
5
6
7
8
9
10
11
12
#include<iostream>
using namespace std;
#define M(m) m*m
main()
{
int a=3;
int x=5;
int s=-M(x+a);
cout<<"s="<<s<<endl;
system("pause");

}

(5)

1
2
3
4
5
6
7
8
9
10
11
12
#include<iostream>
using namespace std;
#define M(m) m*m
main()
{
int a=3;
int x=5;
int s=-M(a+x);/-a+x*a+x 实际上是-m*m
cout<<"s="<<s<<endl;
system("pause");

}

(6)

1
2
3
4
5
6
7
8
9
10
11
12
#include<iostream>
using namespace std;
#define M(m) (m)*(m)
main()
{
int a=3;
int x=5;
int s=-M(x+a);/-(m)*(m) -(5+3)*(5+3)
cout<<"s="<<s<<endl;
system("pause");

}

(816) 395-3096二、程序编写题

1、编程求两个数的最小值

1
2
3
4
5
6
7
8
9
10
11
12
13
#include<iostream>
using namespace std;
main()
{
int a,b,min;
cout<<"请输入数a:";
cin>>a;
cout<<"请输入数b:";
cin>>b;
min=a>b?b:a;
cout<<"两个数的最小数为:"<<min<<endl;
system("pause");
}

2、从键盘上输入一个int型数,一个浮点型数比较其大小,并输出其中大的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<iostream>
using namespace std;
main()
{
int a;
float b;
cout<<"请输入数a:";
cin>>a;
cout<<"请输入数b:";
cin>>b;
if(a>b)
cout<<"两个数的最大数为:"<<a<<endl;
else
cout<<"两个数的最大数为:"<<b<<endl;
system("pause");
}

3、 输入一摄氏温度,编程输出华氏温度。已知:华氏温度转换为摄氏温度的计算公式如下:C=(F-32)*5/9 其中,F表示华氏温度,C表示摄氏温度。

1
2
3
4
5
6
7
8
#include <iostream.h>
void main()
{
float c,f;
cout<<”华氏温度:”; cin>>f;
c=(f-32)*5/9;
cout<<” 摄氏温度:”<<c<<endl;
}

4、编程实现输入公里数,输出显示其英里数。已知:1英里=1.60934公里(用符号常量)。

1
2
3
4
5
6
7
8
9
10
#include <iostream.h>
const float r=1.60934;
void main()
{
float m,I;
cout<<” 公里数:”;
cin>>m;
I=r*m;
cout<<”英里数:”<<I<<endl;
}

有一函数如下所示:编写一个程序,输入一个x的值,输出y的值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<iostream>
using namespace std;
main()
{
double x,y;
cout<<"请输入一个实数:";
cin>>x;
if(x<0)
y=-1;
else if(x==0)
y=0;
else
y=1;
cout<<"\ny="<<y<<endl;
system("pause");
}

有一函数如下所示:编写一个程序,输入一个x的值,输出y的值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<iostream>
using namespace std;
main()
{
double x,y;
cout<<"请输入一个实数:";
cin>>x;
if(x<1)
y=x;
else if(x<10)
y=x+5;
else
y=x-5;
cout<<"\ny="<<y<<endl;
system("pause");
}

利用带参数的宏定义求任意三个数的最大值。

1
2
3
4
5
6
7
8
9
10
11
#include<iostream>
#define MAX(a,b) (a)>(b)?(a):(b)
using namespace std;
main()
{
int x,y,z,max;
cin>>x>>y>>z;
max=MAX(MAX(x,y),z);
cout<<"max="<<max<<endl;
system("pause");
}

编写程序,将输入的百分制成绩按以下规定转换成相应的等级。利用switch语句编写。

成绩 等级
100~90 优秀
89~80 良好
79~70 中等
69~60 及格
59~0 不及格
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
main()
{
float score;
cout<<"请输入成绩:";
cin>>score;
if(score>=0 && score<=100)
switch(int(score)/10)
{
case 10:
case 9: cout<<score<<"分:优秀"<<endl;break;
case 8: cout<<score<<"分:良好"<<endl;break;
case 7: cout<<score<<"分:中等"<<endl;break;
case 6: cout<<score<<"分:及格"<<endl;break;
default:cout<<score<<"分:不及格"<<endl;
}
else
cout<<"输入数据有误!"<<endl;
system("pause");
}

利用if elseif语句编写编写程序,将输入的百分制成绩按以下规定转换成相应的等级

成绩 等级
100~90 优秀
89~80 良好
79~70 中等
69~60 及格
59~0 不及格
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
main()
{
float score;
cout<<"请输入成绩:";
cin>>score;
if(score>=0 && score<=100)
if(score>=90)
cout<<score<<"分:优秀"<<endl;
else if(score>=80)
cout<<score<<"分:良好"<<endl;
else if(score>=70)
cout<<score<<"分:中等"<<endl;
else if(score>=60)
cout<<score<<"分:及格"<<endl;
else
cout<<score<<"分:不及格"<<endl;
else
cout<<"输入数据有误!"<<endl;
system("pause");
}

输入一个自然数,将该数的每一位数字按反序输出。例如:输入12345,输出54321。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
main()
{
unsigned long int num,digital;
cout<<"请输入一个自然数:";
cin>>num;
do
{
digital=num%10;
num/=10;
cout<<digital;
}while(num>0);
cout<<endl;
system("pause");
}

求1~100之间的素数。 (双重循环,continue)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <cmath>
using namespace std;
main()
{
int n, i,primes=0;
double k;
for (n=2; n<=100; n++)
{
k=sqrt(n);
for (i=2; i<=k; i++)
if (n%i==0) break;
if (i<=k) continue;
primes++;
cout<<n<<'\t';
if (primes%5==0) cout<<endl;
}
system("pause");
}

百元买百鸡问题。假定小鸡每只5角,公鸡每只2元,母鸡每只3元,现在有100元要求买100只鸡,编程列出所有可能的购鸡方案。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
main()
{
int x,y,z;
cout<<"公鸡数\t"<<"母鸡数\t"<<"小鸡数\t"<<endl;
for(x=1;x<=19;x++) /公鸡最多买(100-3-1/3)/5只
for(y=1;y<=31;y++) /母鸡最多买(100-5-1/3)/3只
{
z=100-x-y;
if(5*x+3*y+z/3.0==100)
cout<<x<<'\t'<<y<<'\t'<<z<<endl;
}
system("pause");
}

编写程序,求∑i!(i=1,. . .,10)(即求1!+2!+3!+4!+5!+6!+7!+8!+9!+10!之和)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<iostream>
using namespace std;
main()
{
long int s=0;
long int p=1;
for(int i=1;i<=10;i++)
{
p=p*i;
s=s+p;
}
cout<<"s="<<s<<endl;
system("pause");
}

求下列分数序列的前15项之和 2/1,3/2,5/3,8/5,13/8,21/13,. . .

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<iostream>
using namespace std;
main()
{
double n=1;
double m=2;
double z;
double s=0;
for(int i=1;i<=15;i++)
{
s=s+m/n;
z=m;
m=z+n;
n=z;
}
cout<<"s="<<s<<endl;
system("pause");
}

编写程序,输入两个正整数,求最大公约数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
void main()
{
int m,n,t,r;
cout<<"请输入两个正整数:";
cin>>m>>n;
if(m<n){t=m;m=n;n=t;} / 使得m>=n
while((r=m%n)!=0)
{
m=n;
n=r;
}
cout<<"最大公约数为: "<<n<<endl;
}

利用函数编写一个程序能求各种类型的盒子的体积:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<iostream>
using namespace std;
double getBoxVolume(double l,double w,double h)
{
return l*w*h;
}
double getBoxVolume(double l,double w)
{
return l*w*w;
}
double getBoxVolume(double w)
{
return w*w*w;
}

main()
{
double v1,v2,v3;
v1=getBoxVolume(3,5,4);
v2=getBoxVolume(3,5);
v3=getBoxVolume(4);
cout<<"v1="<<v1<<"\nv2="<<v2<<"\nv3="<<v3<<endl;
system("pause");
}

编写一个程序,利用函数判断一个数是否为素数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <math.h>
using namespace std;

bool prime(int n)
{
int i,j;
bool flag=true;
j=sqrt(n);
for(i=2;i<=j;i++)
{
if(n%i==0)
{
flag = false;
break;
}
}
return flag;
}
void main()
{
int x;
cout << "请输入一个整数" ;
cin >> x;
if(prime(x)) cout << "它是素数" <<endl;
else cout << "它不是素数" <<endl ;
}

编写一个程序,利用递归函数求一个数的阶乘

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<iostream>
using namespace std;
long int fac(int n);
main()
{
long p=fac(10);
cout<<"p="<<p<<endl;
system("pause");
}
long int fac(int n)
{
long int p;
if(n==0) p=1;
else
p=n*fac(n-1);
return p;
}

定义一个求长方形面积的(Rect)类,该类有二个double类型的成员变量,分别表示长方形的长、宽,在该类中定义一个成员方法getRectArea,用于返回长方型面积,在该类中定义一个构造方法,能在定义对象时初始化成员变量。在main方法中定义一个长方形对象,并输出长方形的面积。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include<iostream>
using namespace std;
class Rect
{
private:
double length,width;
public:
double getRectArea();
Rect(double l,double w);
};
Rect::Rect(double l,double w)
{
length=l;
width=w;
}
double Rect::getRectArea()
{
return length*width;
}
main()
{
Rect r1(4.5,5.5);
double s=r1.getRectArea();
cout<<"s="<<s<<endl;
system("pause");

}

定义一个求盒子(BOX)类,该类有三个double类型的成员变量,分别表示盒子的长、宽、高,在该类中定义二个方法,一个用于返回盒子的体积,一个用于给变量赋值。在main方法中定义一个盒子对象,输入盒子的长、宽、高,输出盒子的体积。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include<iostream>
using namespace std;
class Box
{
public:
double length,width,height;
public:
void setBoxLWH(double l,double w,double h)
{
length=l;width=w;height=h;
}
double getBoxVolume()
{
return length*width*height;
}
};
main()
{
Box box1;
box1.setBoxLWH(5,6,7);
double v;
v=box1.getBoxVolume();
cout<<"v="<<v<<endl;
system("pause");
}

定义一个Box类,利用构造器求各种类型的盒子的体积

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include<iostream>
using namespace std;
class Box
{
public:
double length,width,height;
public:
Box(double l,double w,double h)
{
length=l;
width=w;
height=h;
}
Box(double l,double w)
{
length=l;
width=w;
height=w;
}
Box(double l)
{
length=l;
width=l;
height=l;
}
double getBoxVolume()
{return length*width*height;}

};

main()
{
Box box1(4,5,6);
Box box2(3,4);
Box box3(4);
double v1,v2,v3;
v1=box1.getBoxVolume();
v2=box2.getBoxVolume();
v3=box3.getBoxVolume();
cout<<"v1="<<v1<<"\nv2="<<v2<<"\nv3="<<v3<<endl;
system("pause");
}

Hello World

Welcome to (737) 236-3374! This is your very first post. Check 858-481-5813 for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on (641) 999-7544.

Quick Start

6282099259Create a new post

1
$ hexo new "My New Post"

More info: 8669967820

Run server

1
$ hexo server

More info: Server

423-363-3077Generate static files

1
$ hexo generate

More info: (773) 703-7508

8182050891Deploy to remote sites

1
$ hexo deploy

More info: Deployment