一、上机题
1.求100内的自然数中奇数之和。
// 解法一
#include<iostream>
using namespace std;
int main(){
int sum=0,i;
for(i=1;i<100;i++) {
if(i%2 != 0) sum+=i;
}
cout<<sum<<endl;
}
//解法2
#include<iostream>
using namespace std;
int main(){
int sum=0,i;
for(i=1;i<100;i=i+2) {
sum+=i;
}
cout<<sum<<endl;
}
2.求输入两个正整数的最大公约数和最小公倍数
#include<iostream>
using namespace std;
int main(){
int m,n,t,r,a,b,y;
cin>>m>>n;
a=m;
b=n;
if(m<n) {
t=m;
m=n;
n=t;
}
while(n!=0){
y=m%n;
m=n;
n=y;
}
r=a*b/m;
cout<<"最大公约数是"<<m<<endl;
cout<<"最小公倍数"<<r<<endl;
}
3.熟悉类的定义和对象的定义。 P126
#include <iostream>
using namespace std;
class Date{
public:
void SetDate(int y,int m,int d){
year=y;month=m;day=d;
}
int IsLeapYear(){
return year%4==0&&year%100!=0||year%400==0;
}
int Print(){
cout<<year<<'/'<<month<<'/'<<day<<endl;
}
private:
int year,month,day;
};
int main(){
Date d1,d2,*pd=&d2;
d1.SetDate(2005,6,24);
pd->SetDate(2000,2,8);
cout<<d1.IsLeapYear()<<','<<d2.IsLeapYear()<<endl;
d1.Print();
d2.Print();
}
4.熟悉类的构造函数和析构函数的使用。 P128
#include <iostream>
using namespace std;
class Date1{
public:
Date1(int,int,int);
Date1(){
cout<<"Default constructor called.\n";
}
~Date1(){
cout <<"Dsetructor called.\t"<<day<<endl;
}
void print();
private:
int year,month,day;
};
Date1::Date1(int y,int m, int d){
year=y;
month=m;
day=d;
cout<<"Constructor callde.\n";
}
void Date1::print(){
cout << year <<'/'<<month<<'/'<<day<<endl;
}
int main(){
static Date1 d1;
Date1 d2(2005,6,25);
cout<<"d1 is";
d1.print();
cout<<"d2 is";
d2.print();
}
5. 熟悉函数重载的使用。 P131页
#include <iostream>
using namespace std;
class AB{
public:
AB(int i,int j){
a=i,b=j;
}
AB(int i){
a=i;b=i*i;
}
int Add(int x,int y);
int Add(int x);
int Add();
int aout(){
return a;
}
int bout(){
return b;
}
private:
int a,b;
};
int AB::Add(int x,int y){
a=x;b=y;
return a+b;
}
int AB::Add(int x){
a=b=x;
return a+b;
}
int AB::Add(){
return a+b;
}
int main(){
AB a(5,8),b(7);
cout<<"a="<<a.aout()<<','<<a.bout()<<endl;
cout<<'b='<<b.aout()<<','<<b.bout()<<endl;
int i=a.Add();
int j=a.Add(4);
int k=a.Add(3,9);
cout<<i<<endl<<j<<endl<<k<<endl;
}
7.熟悉对象指针的使用。 P152
#include<iostream>
using namespace std;
class A{
public:
A(int i,int j){
x=i;y=j;
}
A(){
x=y=0;
}
void Setxy(int i,int j){
x=i;y=j;
}
void Copy(A *pa);
void Print(){
cout <<x<<','<<y<<endl;
}
private:
int x,y;
};
void A::Copy(A *pa){
x=pa->x;y=pa->y;
}
void fun(A a1,A *pb){
a1.Setxy(10,15);
pb->Setxy(20,25);
}
int main(){
A a(5,8),b;
b.Copy(&a);
fun(a,&b);
a.Print();
b.Print();
}
8.熟悉对象数组的使用。 P158
#include <iostream>
using namespace std;
#include <string.h>
class Student{
char name[20];
long int stuno;
int score;
public :
Student(char name1[]="",long int no=0,int sco=0){
strcpy(name,name1);
stuno =no;
score =sco;
}
void Setscore(int n){
score=n;
}
void Print(){
cout<<stuno<<'\t'<<name<<'\t'<<score<<endl;
}
};
int main(){
Student stu[5]={ Student("Ma",5019001,94),
Student("Hu",5019002,95),
Student("Li",5019003,88)};
stu[3]=Student("Zhu",5019004,85);
stu[4]=Student("Lu",5019005,90);
stu[1].Setscore(98);
for(int i(0);i<5;i++){
stu[i].Print();
}
}
二、课后题
2-1 已知:int a=3,b=5;编程计算下列两个代数式的值,并比较它们是否相等。(a+b)2和a2+2ab+b^2
#include <iostream>
using namespace std;
int main(){
int t,n,a=3,b=5;
t=(a+b)*(a+b);
n=a*a+2*a*b+b*b;
cout<<"t="<<t<<endl;
cout<<"n="<<n<<endl;
cout<<(t==n)<<endl;
}
2-2已知:int x=5;编程求下列代数式的值。f(x)=3x3+2x2+5x+2
#include <iostream>
using namespace std;
int main(){
int x=5,f;
f=3*x*x*x+2*x*x+5*x+2;
cout<<f<<endl;
}
2-3 从键盘上输入两个 double 型数,编程输出其中最小者
#include <iostream>
using namespace std;
int main(){
double a,b;
cin>>a>>b;
if(a<=b) cout<<a<<endl;
else cout <<b<<endl;
}
2-4 华氏温度转换成摄氏温度的计算公式如下:C=(F?32)*5/9其中,C 表示摄氏温度,F 表示华氏温度。从键盘上输入一摄氏温度,编程输出对应的华氏温度。
#include <iostream>
using namespace std;
int main(){
double C,F;
cin>>C;
F=9.0/5.0*C+32.0;
cout <<F<<endl;
}
2-5 从键盘上输入 5 个浮点数,输出它们的和以及平均值。
#include <iostream>
using namespace std;
int main(){
double a,b,c,d,e,f,av;
cin>>a>>b>>c>>d>>e;
f=a+b+c+d+e;
av=f/5.0;
cout<<f<<','<<av<<endl;
}
2-6 将字符串"12345",逆向输出为"54321"。
解一:
#include <iostream>
using namespace std;
int main(){
char a[]="12345";
int i=4;
for(i=4;i>=0;i--){
cout<<a[i];
}
}
解二:
#include <iostream.h>
void main()
{
char a[]="12345";
cout<<a[4]<<a[3]<<a[2]<<a[1]<<a[0]<<endl;
}
3-1 求100内的自然数中奇数之和。
// 解法一
#include<iostream>
using namespace std;
int main(){
int sum=0,i;
for(i=1;i<100;i++) {
if(i%2 != 0) sum+=i;
}
cout<<sum<<endl;
}
//解法2
#include<iostream>
using namespace std;
int main(){
int sum=0,i;
for(i=1;i<100;i=i+2) {
sum+=i;
}
cout<<sum<<endl;
}
3-2 求输入两个正整数的最大公约数和最小公倍数
#include<iostream>
using namespace std;
int main(){
int m,n,t,r,a,b,y;
cin>>m>>n;
a=m;
b=n;
if(m<n) {
t=m;
m=n;
n=t;
}
while(n!=0){
y=m%n;
m=n;
n=y;
}
r=a*b/m;
cout<<"最大公约数是"<<m<<endl;
cout<<"最小公倍数"<<r<<endl;
}
3-3 求下列分数序列前 15 项之和。2/1,3/2,5/3,8/5,13/8,…
#include <iostream>
using namespace std;
int main(){
int a;
double sum=0,i=2,j=1,t;
for(a=1;a<15;a++){
sum+=i/j;
t=i;
i+=j;
j=t;
}
cout<<sum<<endl;
}
|