华中科技大学C++上机实验答案(全)华中科技大学C++上机实验答案(全)
实验一
/*要求从键盘输入三个不等的整数后按ENTER键,在屏幕上由大到小的输出。*/
#include using namespace std; int main(){
int a,b,c,max,min;
cout>a>>b>>c;
if(a>b){
max=a;
min=b;
}
else{
max=b;
min=a;
}
if(c>max)
cout using namespace std; int main(){
int a,b,temp;
co...
华中科技大学C++上机实验答案(全)
实验一
/*要求从键盘输入三个不等的整数后按ENTER键,在屏幕上由大到小的输出。*/
#include
using namespace std; int main(){
int a,b,c,max,min;
cout<<"请输入三个不同的整数:"<>a>>b>>c;
if(a>b){
max=a;
min=b;
}
else{
max=b;
min=a;
}
if(c>max)
cout< using namespace std; int main(){
int a,b,temp;
cout<<"输入a,b:";
cin>>a>>b;
cout<<"a="< #include
using namespace std; int main(){
float a,b,c,s,area;
cout<<"a,b,c=";
cin>>a>>b>>c;
s=(a+b+c)/2.0;
area=sqrt(s*(s-a)*(s-b)*(s-c));
cout<<"area="<
#include
using namespace std;
int main(){
int a,b,c,s,area;
cout<<"a,b,c=";
cin>>a>>b>>c;
if(a
using namespace std;
int main(){
cout<<"sizeof(char)="<
using namespace std;
int main(){
cout<<"char"<<'\t'<表 输出
#include
using namespace std;
int main(){
char datatype[]="char\tshort\tint\tlong\tfloat\tdouble";
cout<
using namespace std;
int main(){
const double PI=3.14;
double r,s,v,m;
cout<<"输入球的半径r(单位dm):"<>r;
cout<<"r="<
using namespace std;
int main()
{
char a[20];
int i;
cout<<"请输入以下包含空格的字符串:It's a book."<>a[0]>> a[1]>> a[2]>> a[3]>> a[4]>> a[5]>> a[6]>> a[7]>> a[8]>> a[9];
a[10]='\0';
cout<<"保存的数组a是:"<
using namespace std;
int main(){
int input;
cout<<"Which number do you want to text:\n";
cin>>input;
if(input%2==0)
cout<<"The number"< 0,输出两个不等的实根;
若?=0,输出两个相等实根;若?<0,输出两个复数根。*/
#include
#include
using namespace std;
int main(){
float a,b,c,x1,x2,delta;
cout<<"请输入一元二次方程的三个系数:"<>a>>b>>c;
cout<<"a="<0){
cout<<"方程有两个不同的实根:"<
using namespace std;
int main(){
float score;
cout<<"输入分数(0--100):";
cin>>score;
if(score>=90)cout<<"A grade"<=80)cout<<"B grade"<=70)cout<<"C grade"<=60)cout<<"D grade"<
using namespace std;
int main(){
int score,n;
cout<<"输入分数(0--100):";
cin>>score;
n=score/10;
switch(n){
case 10: case 9:cout<<"A grade"<
using namespace std;
int main(){
int a;
cout<<"输入要测试的整数:";
cin>>a;
if(a%3==0&&a%7!=0)cout<
using namespace std;
int main(){
int i;
float f;
cout<<"请输入月收入i:";
cin>>i;
if(i<1200)
cout<<"不用征收个人所得税";
else if (i<1700){
f=(i-1200)*0.05;
cout<<"个人所得税为:"< using namespace std; int main(){
int n,i,result;
cout<<"请输入n:";
cin>>n;
if(n<1){
cout<<"输入错误~"<
#include
using namespace std; void main(){
long int i=0;
double sum,tem,pi;
sum=0,tem=0;
do{
i+=1;tem=1.0/(i*i);sum+=tem;
}
while(tem>=1e-12);
pi=sqrt(sum*6);
cout<<"pi="< using namespace std; int main(){
int i=0;
char x[10000];
cout<<"请输入一串英文小写字母:";
cin.getline(x,10000);
if(x[i]<'a'||x[i]>'z')cout<<"输入错误~"<设计 一个程序,输入一个日期,要求算出这一天是本年的第几天。
#include
using namespace std; int main()
{
int m[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int year,mouth,day,ip=0,all,i;
cout<<"请输入年、月、日:"<>year>>mouth>>day;
if(year%4==0&&year%100!=0||year%400==0)
m[1]=29;
for(i=0;i
using namespace std;
int main(){
int i,j,k,m,n,count=0;
for(i=1;i<=4;i++){
for(j=0;j<=4;j++){
if(j==i)continue;
for(k=0;k<=4;k++){
if(k==j||k==3||k==i)continue;
for(m=0;m<=4;m++){
if(m==k||m==3||m==i||m==j)continue;
for(n=0;n<=4;n++){
if(n==m||n==k||n==j||n==i)continue;
cout<
using namespace std;
int main(){
int a,n,i,sum=0,sum1=0;
cout<<"请输入a和n的值:"<>a>>n;
cout<<"a="<9||n<0)cout<<"输入错误~"<
using namespace std; int main(){
int x=100,m,n,k;
int count=0;
do{
m=x%10;
n=x/100;
k=(x-n*100-m)/10;
if(m*m*m+n*n*n+k*k*k==x){
cout<
using namespace std; int main(){
char x[]={'A','B','C','D','E'};
char y[]={'J','K','L','M','N'};
int i=0;
int j,k,l,m,n;
for(j=0;j<=4;j++){
if(j==0)continue;
for(k=0;k<=4;k++){
if(k==j)continue;
for(l=0;l<=4;l++){
if(l==k||l==j)continue;
for(m=0;m<=4;m++){
if(m==3||m==k||m==j||m==l)continue;
for(n=0;n<=4;n++){
if(n==m||n==l||n==k||n==j||n==3)continue;
i++;
cout<<"比赛名单为:"<
#include
using namespace std;
double sroot(double a);
int main(){
double a,x;
cout<<"Please input a value:\n";
cin>>a;
if(a<0)cout<<"Input error!"<
using namespace std;
double add(double a,double b){
return(a+b);
}
double minus(double a,double b){
return(a-b);
}
double muliti(double a,double b){
return(a*b);
}
double div(double a,double b){
return(a/b);
}
double Calculate(double a,double b,char c){
double d;
switch(c){
case'+':return add(a,b);
case'-':d=minus(a,b);return d;
case'*':d=muliti(a,b);return d;
case'/':d=div(a,b);return d;
case'#':return 0;
default:cout<<"输入有误~";
}
}
int main()
{
double a,b,d;
char c;
do {
cout<<"请输入运算式"<>c>>a>>b;
d=Calculate(a,b,c);
cout<<"结果为"<
using namespace std;
int max(int num1,int num2){
int min;
min=(num1>=num2?num2:num1);
for(;min>0;min--){
if(num1%min==0&&num2%min==0)break;
}
return min;
}
int min(int num1,int num2){
int max;
max=(num1>=num2?num1:num2);
for(;;max++){
if(max%num1==0&&max%num2==0)break;
}
return max;
}
int main(){
int num1,num2;
do{
cout<<"请输入两个整数:"<>num1>>num2;
cout<
#include
using namespace std;
int prime(int m)
{
int i,n;
if(m==1)return 0;
n=(int)sqrt((double)m);
for(i=2;i<=n;i++)
if(m%i==0)return 0;
return 1;
}
void main()
{
int count,i,number;
count=0;
for(number=4;number<=50;number=number+2)
{
for(i=2;i<=number/2;i=i+1)
if(prime(i)&&prime(number-i))
{
cout<
using namespace std;
long com(int,int),fac(int); int main(){
int m,n;
cout<<"Please input two numbers m,n(m<=n):"<>m>>n;
if(m<=n)cout<<"C(m,n)="<
using namespace std;
double num(int,double);
int main()
{
int n,double x;
cout<<"请输入两个数字n和x,其中n为非负整数\n";
cin>>n>>x;
if(n<0) cout<<"输入错误\n";
else cout<<"勒让德多项式Pn(x)="<
#include
using namespace std;
const double PI=3.14159;
double area(double rad=0);
double area(double a,double b);
double area(double a,double b,double h); double area(double a,double b,double c,int); int main(){
cout<<"Area of paint is "< 0.5) i=(int)a+1;
else i=(int)a;
if(b-(int)b>0.5) j=(int)b+1;
else j=(int)b;
return (i%j);}
实验十
//范例:设计并测试一个矩形类(Rectangle)。属性为矩形的左下角与右上角的坐标,矩形水平放置。操作为计算矩形的周长和面积。
#include
#include
using namespace std;
class Rectangle{
float left,top;
float right,bottom;
public:
Rectangle(float l=0,float t=0,float r=0,float b=0);
~Rectangle(){};
void Assign(float l,float t,float r,float b);
void Show();
float Area();
float Perimeter();
};
Rectangle::Rectangle(float l,float t,float r, float b){
left=l;
top=t;
right=r;
bottom=b;
}
void Rectangle::Assign(float l,float t,float r,float b){
left=l;
top=t;
right=r;
bottom=b;
}
void Rectangle::Show(){
cout<<"left-top point is("<方法 定义:
方法一: 要求属性为半径,操作为计算圆的周长和面积。
方法二: 要求属性为半径(radius)、圆周长和面积,操作为输入半径,并计算周长、面积,
输出半径、周长和面积。要求定义构造函数(以半径为参数,缺省值为0,周长和面积在构
造函数中生成)和拷贝构造函数。*/
#include
const double PI=3.14159; //方法一
class circle1{
private:
double radius;
public:
void Setradius(double a){
radius=a;}
double perimeter(){
return(2*PI*radius);}
double area(){
return(PI*radius*radius);} };
//方法二
class circle2{
private:
double radius,perimeter,area; public:
circle2(double a=0){
radius=a;
perimeter=2*PI*a;
area=PI*a*a;}
circle2(const circle2&a){
radius=a.radius;
perimeter=a.perimeter;
area=a.area;}
void Setcircle2(double a){
radius=a;
perimeter=2*PI*a;
area=PI*a*a;}
void result(){
cout<<"半径"<
#include
class person{
private:
string IdPerson,Name,Sex,Birthday,HomeAddress;
public:
void SetIdPerson(string a){
IdPerson=a;}
void SetName(string a){
Name=a;}
void SetSex(string a){
Sex=a;}
void SetBirthday(string a){
Birthday=a;}
void SetHomeAddress(string a){
HomeAddress=a;}
void coutIdPerson(){
cout<<"身份证号"<
using namespace std;
const int m=5;
void Index(int a[],int n,int & sub); int main(){
int b[25]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59
,61,67,71,73,79,83,89,97};
int n=25,k,sub;
for(k=0;k>sub;
Index(b,n,sub);
if(sub!=-1) cout<<"对应元素下标为:"<
using namespace std;
const int m=5;
int asub;
void Index(int a[],int n,int sub); int main(){
int b[25]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59
,61,67,71,73,79,83,89,97};
int n=25,k,sub;
for(k=0;k>sub;
Index(b,n,sub);
if(asub!=-1) cout<<"对应元素下标为:"<教材 的例4.2. rect.h
class Rectangle{
int left,top;
int right,bottom;
public:
Rectangle(int l=0,int t=0,int r=0,int b=0);
Rectangle(Rectangle & rec);
~Rectangle(){};
void Assign(int l,int t,int r,int b);
void SetLeft(int t){left=t;}
void SetRight(int t){right=t;}
void SetTop(int t){top=t;}
void SetBottom(int t){bottom=t;}
void Show();
};
rect.cpp
#include
#include"rect.h"
using namespace std;
Rectangle::Rectangle(int l,int t,int r,int b){
left=l;top=t;
right=r;bottom=b;}
Rectangle::Rectangle(Rectangle & rec){
left=rec.left;
top=rec.top;
right=rec.right;
bottom=rec.bottom;}
void Rectangle::Assign(int l,int t,int r,int b){
left=l;top=t;
right=r;bottom=b;}
void Rectangle::Show(){
cout<<"left-top point is("<
#include"rect.h"
using namespace std;
int main(){
Rectangle rect;
cout<<"由默认的构造函数生成的rect:"<
using namespace std;
int max_value(int array[][4],int k); int main(){
int a[3][4]={{1,3,6,7},{2,4,6,8},{15,17,34,12}};
cout<max)
max=array[i][j];
return (max);}
//修改后的结果
#include
using namespace std;
int main(){
int array[3][4]={{1,3,6,7},{2,4,6,8},{15,17,34,12}};
int i,j,m,n,max=array[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(array[i][j]>max){
max=array[i][j];
m=i+1;n=j+1;}
cout<
#include
using namespace std;
int main(){
int i,j;
int array[10][10];
for(i=0;i<10;i++)
if(i==0) cout<<"1"<
#include
using namespace std;
void trim(char s[]);
void lefstring(char s1[],char s2[],int n); int index(char s1[],char s2[]);
int main(){
char str1[]="I'm student.",str2[]="student",str3[4];
int n;
cout<<"包含尾部空格的串str1:"<
using namespace std;
void itoa0(int n,char s[],int b);
int main(){
int m;
char a[50];
cout<<"请输入一个十进制整数";
cin>>m;
itoa0(m,a,16);
cout<9){
s[i]+='A'-10;
}else{
s[i]+='0';
}
n/=b;
i++;
}while(n!=0);
s[i]='\0';
//将s数组逆转
for(int j=0; j
#include
using namespace std;
const SIZE=100;
int main(){
char carray[SIZE];
int i,len,is_palindrome=1;
cout<<"Please input a string.\n";
cin.get(carray,SIZE);
len=strlen(carray);
for(i=0;i
#include
using namespace std;
const SIZE=100;
int main(){
char carray[SIZE];
int i,len,is_palindrome=1;
cout<<"Please input a string..\n";
cin.get(carray,SIZE);
for(i=0;i90||carray[i]<97||carray[i]>122) carray[i]='\0';
len=strlen(carray);
for(i=0;i
#include
using namespace std;
const SIZE=100;
int main(){
char carray[SIZE];
int i,len,is_palindrome=1;
char *p;
p=carray;
cout<<"Please input a string..\n";
cin.get(carray,SIZE);
for(i=0;i90||p[i]<97||p[i]>122) p[i]='\0';
len=strlen(p);
for(i=0;i
using namespace std;
void secret(char s[]);
void desecret(char *s);
int main(){
char st[]="This is a secret code!";
cout<< st<< endl;
secret(st);
cout<< st<< endl;
desecret(st);
cout<< st<< endl;
return 0;
}
void secret(char s[]){
int i=0;
while( s[i]!='\0'){
if(s[i]>=97 && s[i]<122)
s[i]=s[i]++;
else if(s[i]==122) s[i]='a';
i++;
}
}
void desecret(char *s){
while (*s!='\0'){
if(*s>97 && *s<=122)
*s=(*s)--;
else if(*s==97) *s='z';
s++;
}
}
//问题(1)
#include
using namespace std; void secret(char s[]); void desecret(char *s); int main(){
char st[]="I am a boy ! !";
cout<< st<< endl;
secret(st);
cout<< st<< endl;
desecret(st);
cout<< st<< endl;
return 0;
}
void secret(char s[]){
int i=0;
while( s[i]!='\0'){
if(s[i]>=97 && s[i]<122)
s[i]=s[i]++;
if(s[i]==122) s[i]='a';
i++;
}
}
void desecret(char *s){
while (*s!='\0'){
if(*s>97 && *s<=122)
*s=(*s)--;
if(*s==97) *s='z';
s++;
}
}
//问题(2)
#include
using namespace std; void secret(char s[]); void desecret(char *s); int main(){
char st[]="I am a boy";
cout<< st<< endl;
secret(st);
cout<< st<< endl;
desecret(st);
cout<< st<< endl;
return 0;
}
void secret(char s[]){
int i=0;
while( s[i]!='\0'){
s[i]=(s[i]+150)%128;
i++;
}
}
void desecret(char *s){
while(*s!='\0'){
for(int i=0;i<2;i++){
char c=i*128+*s-150;
if(c>=65&&c<=90||c>=97&&c<=122||c==32){*s=c;
break;}
}
s++;
}
}
//编程:重新编写实验十三中题3的字符串处理函数,用指针作为参数。 #include
#include
using namespace std;
void trim(char s[]);
void leftstring(char *s1,char *s2,int n);
int index(char *s1,char *s2); int main(){
char str1[]="I'm a student. ",str2[]="student",str3[4];
int n;
cout<<"包含尾数空格的串str1:"<
#include
using namespace std;
const PI=3.14159;
class Point{
friend class Line;
protected:
double x,y;
public:
Point(){x=0;y=0;}
Point(double xv,double yv){x=xv;y=yv;}
double Area(){return 0;}
void Show(){
cout<<"x="<Point::operator=(cir);
radius=cir.radius;
return *this;
}
double Area(){
return PI*radius*radius;
}
void Show(){
cout<<"x="<练习 ,由上题Point 类和Circle 类继续派生出Cylinder 类。要求计算圆柱体的底面积、侧面积、全面积和体积。*/
#include
#include
using namespace std;
const PI=3.14159;
class Point{
friend class Line;
protected:
double x,y;
public:
Point(){x=0;y=0;}
Point(double xv,double yv){x=xv;y=yv;}
double Area(){return 0;}
void Show(){
cout<<"x="<Point::operator=(cir);
radius=cir.radius;
return *this;
}
double Area(){
return PI*radius*radius;
}
void Show(){
cout<<"x="<
using namespace std;
class figure{
protected:
double x,y;
public:
void set_dim(double i,double j=0)
{ x=i; y=j; }
virtual void show_area() { cout<<"No area computation defined for this class.\n";
}
};
class triangle:public figure{ public:
void show_area()
{ cout<<"Triangle with height "<< x<<" and base "<< y<<" has an area of "<<
x*0.5*y<< endl;
}
};
class square:public figure{ public:
void show_area()
{ cout<<"Square with dimensions "<< x<<" and "<< y<<" has an area of "<< x*y<<
endl;
}
};
class circle:public figure{ public:
void show_area()
{ cout<<"Circle with radius "<< x<<" has an area of "<<3.14159*x*x<< endl;
}
};
int main(){
figure *p;
triangle t;
square s;
circle c;
p=&t;
p->set_dim(10.0,5.0);
p->show_area();
p=&s;
p->set_dim(10.0,5.0);
p->show_area();
p=&c; p->set_dim(10.0); p->show_area();
return 0;
}