当前位置:   article > 正文

华中农业大学C++实验题_在华农校园里,没有自行车,上课办事会很不方便。但实际上,并非去办任何事情都是骑

在华农校园里,没有自行车,上课办事会很不方便。但实际上,并非去办任何事情都是骑


华中农业大学的C++实验题,难度较低,对于初学者可以有较大的锻炼提升作用,帮助熟悉编程思维和提高写code能力。

itc具有查重功能,望大家以此为参考形成自己的编程思维

求天数

【问题描述】
输入日期的年份和月份,求该月有多少天。提示:对于月份为1、3、5、7、8、10、12的月份天数为31,月份为4、6、9、11的月份天数为30,月份为2时要结合年份考虑闰年的情况。

#include <iostream>
using namespace std;
int main(){
int y,m;
cin>>y>>m;
if(y<3000&&y>=1900)
switch(m)
{
case 1:
case 3:
case 5:
case 8:
case 7:
case 10:
case 12:
cout<<31;break;
case 4:
case 6:
case 9:
case 11:
cout<<30;break;
case 2:
if((y%4==0&&y%100!=0)||(y%400==0))
cout<<29;
else
cout<<28;break;
default :
cout<<"Input error!\n"<<endl;break;
}
else cout << "Input error!" << endl;
return 0;
}
  • 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

学校录取情况

【问题描述】
某高校录取研究生的要求是,新生的每门课成绩不低于60分,总成绩不低于340分,370分以下为自费。编一程序实现输入一个学生的四门课成绩,试判断该生为该校录取的情况
(“没有通过”、“自费生”、“公费生”三种情况)。

#include <iostream>
using namespace std ;
int main ()
{
    int a,b,c,d;
    cin>>a>>b>>c>>d;
      int t=a+b+c+d;
    if(a<60||b<60||c<60||d<60||t<340)
       cout<<"No pass";
    else{
        if(t>=340&&t<370)
        cout<<"Self-supported student";
       else cout<<"Government-supported student";
        }
return 0;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

骑车快还是走路快

【问题描述】
在华农校园里,没有自行车,上课办事会很不方便。但实际上,并非去办任何事情都是骑车快,因为骑车总要找车、开锁、停车、锁车等,这要耽误一些时间。假设找到自行车,开锁并骑上自行车的时间为27秒;停车锁车的时间为23秒;步行每秒行走1.2米,骑车每秒行走3.0米。请判断走不同的距离去办事,是骑车快还是走路快。

#include<iostream>
using namespace std;
int main()
{
 float a,b,c;
  cin >> a;
  b=50+a/3.0;
  c=a/1.2;
  if(b>c) cout<<"Walk";
  if(b==c) cout<<"All";
  if(b<c) cout<<"Bike";
return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

停车费

【问题描述】
一个停车场的标准收费是3小时之内收5元,超过3小时,每增加1小时加收2元;如果时间不是整数,按比例收取,例如:如果输入为3.6小时,则费用为5 + (3.6-3)*2 = 6.2 元。最高收费为40元。假设任何车辆的停车时间都不超过24小时。编写程序,计算每辆车的停车费。

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
    double a,cost;
    cin >> a;
    if(a<=3)
    cost=5;
    else if(a<20.5)
    cost=5+(a-3)*2;
    else cost=40;
    cout<<fixed<<setprecision(2)<<cost<<endl;
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

输出运算结果

【问题描述】
模拟计算器的功能,能根据用户输入的两个运算数和运算符(’+’、 ‘-’、 ‘*’ 或‘/ ’),对两个数进行相应的运算,输出运算结果。注意:除法运算‘/ ’的除数不能为0。

#include<iostream>
#include<cmath>
using namespace std;

int main()
{
    float a,b;
    char c;
    cin>>a>>b>>c;
    switch(c)
    {
      case'+':cout<<a+b<<endl;break;
      case'-':cout<<a-b<<endl;break;
      case'*':cout<<a*b<<endl;break;
      case'/':
              if(b<fabs(1e-6))
            cout<<"Error: divisor is 0!"<<endl;
            else
            cout<<a/b<<endl;
            break;
      default:
    cout<<"Operator error!"<<endl;
    break;
    }
    return 0;
  • 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

整数和

【问题描述】
给定一个正整数a,以及另外的5个正整数,问题是:这5个整数中,小于a的整数的和是多少?

#include<iostream>
using namespace std;
int main()
{
    int a,b,s,n;
    cin>>a;
    n=1,s=0;
    while(n<=5)
    {
      cin>>b;
      if(b<a)
        s=s+b;
      else s=s+0;
      n++;
    }
    cout<<s;
    return 0;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

反弹路径总和

【问题描述】
一球从某一高度落下(整数,单位米),每次落地后反跳回原来高度的一半,再落下。编程计算气球在第5次落地时,共经过多少米? 第5次反弹多高?

#include<iostream>
using namespace std;
int main()
{
    double s,h,n;
    cin>>h;
    n=1,s=0-h;
    while(n<=5)
    {
         s=s+2*h;
    h=h/2;
    n++;
    }
cout<<s<<" "<<h;
return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

前n项之和

【问题描述】
有一个分数序列 2/1,3/2,5/3,8/5,13/8,21/13,… 求这个分数序列的前n项之和。

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
    int m;
    double a,b,n,s,i;
    cin>>n;
    a=2,b=1,s=0,m=1;
    while(m<=n)
    {
        s=a/b+s;
        i=b;b=a,a=a+i;
    m++;
    }
    cout<<fixed<<setprecision(4)<<s<<endl;
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

判断正方形

【问题描述】
在平面坐标系中,有一个正方形,四个角的坐标(x,y)分别是(1,-1),(1,1),(-1,-1),(-1,1),x是横轴,y是纵轴。写一个程序,判断给定的多个点是否在这个正方形内。

#include<iostream>
using namespace std;
int main()
{
double x,y;
cin>>x>>y;
while(x!=0&&y!=0)
{
    if((x<=1&&x>=-1)&&(y<=1&&y>=-1))
        cout<<"yes"<<endl;
    else
        cout<<"no"<<endl;
    cin>>x>>y;
}
cout<<"yes"<<endl;
return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

根据线索求出车号

【问题描述】
一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:四位的车号所构成的数字正好等于某一个整数的平方。请根据以上线索求出车号。

#include<iostream>
using namespace std;
int main()
{
int a,b,c,d,e,m;
for(a=0;a<10;a++)
   {
    for(b=0;b<10;b++)
    {
        for(c=0;c<10;c++)
        {
            for(d=0;d<10;d++)
            {
               for(e=0;e<100;e++)
               {
                    if(a==b&&c==d&&b!=c&&a*1000+b*100+c*10+d==e*e)
                        m=a*1000+b*100+c*10+d;
               }
            }
        }
    }
   }
cout<<m;
return 0;
}
  • 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

摘到的苹果的数目

【问题描述】
陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。

#include<iostream>
using namespace std;
int main()
{
    int i,m,n,a[10];
    m=0;
    for(i=0;i<10;i++)
    cin>>a[i];
    cin>>n;
    for(i=0;i<10;i++)
    if(a[i]<=n+30)
        m++;
    cout<<m<<endl;
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

求唱歌比赛最大值

【问题描述】
歌唱大赛选手成绩这样计算:去掉一个最高分,去掉一个最低分,将剩下分数的平均值作为选手的最后得分。现假设共有6位评委,都是按百分制打分,请编程计算选手的成绩。

#include<iostream>
using namespace std;
int main()
{
    int i;
    double score[6],max,min,a,b;
    a=0;
    for(i=0;i<6;i++)
        {cin>>score[i];
        a=a+score[i];
        }
        max=score[0];
    for(i=1;i<6;i++)
        if(score[i]>max) max=score[i];
        min=score[0];
    for(i=1;i<6;i++)
        if(score[i]<min) min=score[i];
    a=a-max-min;
    b=a/4;
    cout<<b<<endl;
    return 0;

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

翻译密文

【问题描述】
插入式加密法是信息加密中一种简单的加密技术,其方法是在明文字符中插入一些无意义的字母来形成密文单词。例如,对于明文:China,在间隔为1的位置依次插入一个字母而形成密文:Coheifnia。因此,其解密过程与加密过程相反,即从密文中首字符开始取,每间隔1个位置依次取出字符,就得到原始的明文。请编程实现插入式加密法所对应的解密算法,将密文翻译成明文。
提示:定义两个字符数组ci和pl,分别存放密文字符串和明文字符串。解密过程即在字符串ci中,从下标0的字符(首字符)开始,将偶数下标的字符(’\0’之前的)依次取出赋值到字符数组pl中,最后即得到明文字符串。

#include<iostream>
using namespace std;
int main()
{
    int i;
    char ci[100],pl[100];
    cin>>ci;
    for(i=0;i<100;i++)
    {if(ci[i]=='\0')
        break;
    if(i%2==0)
        pl[i/2]=ci[i];
    }
        cout<<pl;
        return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

处理字符串

【问题描述】
输入一个长度小于20的不含空格的字符串,然后对该字符串做如下处理:对字符串中的每个字符,如果是大写字母,将其转化为小写;如果是小写字母,将其转化为大写,最后将处理后的字符串输出。
要求用指针对字符串进行处理。

#include<iostream>
using namespace std;
int main()
{
    char ci[20],*p;
    int i;
    cin>>ci;
    p=&ci[0];
    for(i=0;i<20;i++)
    {
    if(*(p+i)>='a'&&*(p+i)<='z')
        *(p+i)=*(p+i)-'a'+'A';
    else if(*(p+i)>='A'&&*(p+i)<='Z')
        *(p+i)=*(p+i)-'A'+'a';

    }
        cout<<p;
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

求极值点

【问题描述】
在一个整数数组上,对于下标为i的整数,如果它大于所有它相邻的整数,或者小于所有它相邻的整数,则称为该整数为一个极值点,极值点的下标就是i。
注意:数组中的第一个数(下标为0)只要和第二个数(下标为1)不相等,第一个数(下标为0)就是极值点;同理,数组中的最后一个数只要和倒数第二个数不相等,最后一个数也是极值点。

#include<iostream>
using namespace std;
int main()
{
int k,i;
cin>>k;
int a[k];
for(i=0;i<k;i++)
    cin>>a[i];
if(a[0]!=a[1])
    cout<<0<<' ';
    i=1;
while(i>=1&&i<(k-1))
{
if(a[i]>a[i-1]&&a[i]>a[i+1]||a[i]<a[i-1]&&a[i]<a[i+1])
    cout<<i<<' ';
    i++;
}
 if(a[k-2]!=a[k-1])
    cout<<k-1<<' ';
return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

判断完数

【问题描述】
判断正整数n是否为完数。已知一个数如果恰好等于除它本身外的所有因子之和,这个数就称为完数。此程序要求编写函数bool wanshu(int n),判断n是否为完数,若n是,则函数返回true;否则返回false。然后主函数通过该函数的返回值,在屏幕上输出判断结果。

#include<iostream>
using namespace std;
bool wanshu(int n)
{
    int b=0;
    for(int a=2;a<=n;a++)
    {
       if(n%a==0)
        b=b+n/a;
    }
    if(b==n)
        return true;
    else
        return false;
}
int main()
{
    int x;
    cin>>x;
   if(wanshu(x)==true)
    cout<<"yes";
   else
    cout<<"no";
    return 0;
}
  • 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

求倒数天数

【问题描述】
假定现在已是2012年,请编写程序,计算2012年伦敦奥运会倒计时的天数并输出。已知伦敦奥运会的开幕日期是2012年7月27日。用户输入日期的范围必须是2012年1月1日— 2012年7月26日。要求程序中编写函数int CountDown(int year,int month,int day),来计算从用户输入的日期year-month-day到伦敦奥运会开幕日之间的倒数天数。
提示:所求天数= month这个月的总天数-day+(month+1到6月所有这些月份天数之和)+27。

#include<iostream>
using namespace std;
int main()
{
    int CountDown(int year,int month,int day);
    int a,b,c;
    cin>>a>>b>>c;
    if(a!=2012||b>7||(b==7&&c>27)) cout<<"ERROR!";
    else    cout<<CountDown(a,b,c);
   return 0;
}
int CountDown(int year,int month,int day)
{
    int x;
        switch(month)
    {
    case 1:
        x=31-day+178;break;
    case 2:
        x=29-day+149;break;
    case 3:
        x=31-day+118;break;
    case 4:
        x=30-day+88;break;
    case 5:
        x=31-day+57;break;
    case 6:
        x=30-day+27;break;
    case 7:
        x=27-day;break;
    }
    return x;
}
  • 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

求回文词

【问题描述】
许多英语单词无论是顺读还是倒读,其词形完全一样,都是同一个单词,如dad(爸爸)、noon(中午)、level(水平)等,这样的词称为回文词。在最权威的《牛津英语大词典》里,最长的回文词是tattarrattat,是个象声词,表示敲门的声音。英语的回文句更有趣味(忽略其中的标点符号)。最著名的一句为:“Madam,I’m Adam.”(小姐,我是亚当。)据说,这是亚当在伊甸园里初见夏娃作自我介绍时说的话。
现要求编写一个函数bool huiwen(char *p),判断输入的一个单词是否为回文词。p是指向要输入的字符串的指针,如果是返回true,否则返回false。

#include<iostream>
#include<cstring>
using namespace std;
char a[20];
int main()
{
    char m;
    cin>>a;
    char *p=a;
    bool huiwen(char *p);
    m=huiwen(p);
    if(m==true) cout<<"yes";
    else cout<<"no";
    return 0;
}
bool huiwen(char *p)
{
    int len=strlen(p);
    char b[20];
    int i,j;
    for(i=0,j=len-1;i<=len-1;i++,j--) {b[i]=a[j];}
    i++;
    b[i]='\0';
    if(strcmp(a,b)==0) return true;
    else return false;
}
  • 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

输出字符串

【问题描述】
编写一个函数,用于生成一个由若干个指定字符构成的字符串,其原型为:
void mystr(char c,int n, char *p);其中,参数c是构造字符串的字符,n是字符串中字符的个数,p是生成的字符串的首地址。
要求:编写主函数,在主函数中进行字符和字符个数的输入,然后再调用mystr函数生成字符串,最后在主函数中将生成的字符串输出。

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
void mystr(char c,int n,char *p)
{
    int i;
    for(i=0;i<n;i++) cout<<c;
}
int main()
{
    char c,*p;
    int n;
    cin>>c>>n;
    mystr(c,n,p);
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

Fibonacci数列

【问题描述】
有一个有趣的古典数学问题:有一对兔子,从出生后第3个月起每个月都生1对兔子,小兔子长到第3个月后每个月又生1对兔子。假设所有兔子都不死,问每个月兔子的总对数为多少?
提示:不满1个月的为小兔子,满1个月不满2个月的为中兔子,满3个月以上的为老兔子。每对老兔子每个月会生1对小兔子。因此,每个月的兔子总数依次为1,1,2,3,5,8,13,…。这就是Fibonacci数列。该数列的递归定义如下:f(n)=1 (n等于1或2);f(n)= f(n-1)+ f(n-2) (n>2)
请编写递归函数int fib(int n),求出第n个月兔子的总对数。

#include<iostream>
using namespace std;
int fib(int n)
{
    int a;
    if(n>=3) a=fib(n-1)+fib(n-2);
    else a=1;
    return a;
}
int main()
{
    int n,a;
    cin>>n;
    a=fib(n);
    cout<<a;
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

实现友元函数的功能

【问题描述】
仿照本次实验预习的程序填空题1,将以上Distance函数定义为类piont的友元函数,实现程序的功能。并在主函数中增加输入两点作为友元函数的实参。
其主函数如下:

int  main()
{ 
  float p1_x,p1_y,p2_x,p2_y;
  //输入四个点
  cin>>p1_x>>p1_y>>p2_x>>p2_y;
  point p1(p1_x,p1_y),p2(p2_x,p2_y);
  cout<<Distance(p1,p2)<<endl; 
  return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
#include<iostream>
#include<cmath>
using namespace std;
class point
{
public:
    point(float p1_xp2_x=0,float p1_yp2_y=0) { X=p1_xp2_x; Y=p1_yp2_y; }
     friend float Distance(point &a,point &b);

private:
    float X,Y;
};
 float Distance(point &a,point &b)
    {
        float dx=a.X-b.X;
        float dy=a.Y-b.Y;
        return (float)sqrt(dx*dx+dy*dy);
    }
int  main()

{

  float p1_x,p1_y,p2_x,p2_y;

  cin>>p1_x>>p1_y>>p2_x>>p2_y;

  point p1(p1_x,p1_y),p2(p2_x,p2_y);

  cout<<Distance(p1,p2)<<endl;

  return 0;

}
  • 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

设计日期类

【问题描述】
根据以下主函数的功能来设计日期类CDateInfo,使其能正确运行。类CDateInfo中应该具有描述年、月、日的三个数据成员和相应的成员函数。

int main()
{
    CDateInfo data1,data2(2011,10,10);  //定义对象data1和data2
    //分别调用类的不带参数的构造函数和带3个参数的构造函数对其数据成员进行初始化
    //date1的数据成员未初始化时,其年月日用默认值2000,1,1来继续初始化。
    int y,m,d;
    cin>>y>>m>>d;   //输入年月日值
    data1.SetDate(y,m,d);  //设置data1的年月日为y,m,d
    data1.GetDate();   //按year-month-day的格式显示data1的年月日
    data2.GetDate();    //按year-month-day的格式显示data2的年月日为“2011-10-10”
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
#include<iostream>
using namespace std;
class CDateInfo
{
public:
   CDateInfo(int y=2000,int m=1,int d=1){year=y,month=m,day=d;}
   void SetDate(int y,int m,int d)
   {
       year=y,month=m,day=d;
   }
   void GetDate()
   {
       cout<<year<<"-"<<month<<"-"<<day<<endl;
   }
private:
    int year,month,day;
};
int main()

{

    CDateInfo data1,data2(2011,10,10);
    int y,m,d;

    cin>>y>>m>>d;

    data1.SetDate(y,m,d);

    data1.GetDate();

    data2.GetDate();

    return 0;

}
  • 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

设计日期类

【问题描述】
根据以下主函数的功能来设计日期类Student,使其能正确运行。类Student中应该具有描述学生姓名、性别、年龄的三个数据成员和相应的成员函数。

int main()
{
    Student Zhang_San;  //创建Student类对象Zhang_San
    char*chOne;
    int iSex;
    unsigned iOld;
    chOne=new char[11]; //创建动态字符数组用来存放姓名,指针chOne指向该数组
    cin>>chOne; //输入姓名,存放在chOne所指向的动态字符数组中
    cin>>iSex;  //输入性别,输入1表示性别为“男”,输入0表示性别为“女”
    cin>>iOld;  //输入年龄
    Zhang_San.SetName(chOne);   //用输入的姓名设置对象Zhang_San用来表示姓名的数据成员
    Zhang_San.SetGender(iSex);  //设置对象Zhang_San用来表示性别的数据成员
    Zhang_San.SetAge(iOld); //设置对象Zhang_San用来表示年龄的数据成员
    cout<<endl;
    Zhang_San.GetName(chOne);   //调用GetName(char *)成员函数将对象Zhang_San表示姓名的数据成员值
                                //存放到chOne所指向的动态字符数组中
    cout<<"Zhang_San's name is "<<chOne<<endl;  //显示姓名
    cout<<"Zhang_San's gender is "<<Zhang_San.GetGender()<<endl;   //显示性别:1(男),0(女)
    cout<<"Zhang_San's age is "<<Zhang_San.GetAge()<<endl;  //显示年龄
    delete []chOne;
    return 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;
class Student
{
private:
    char *name;
    int sex,age;
    unsigned old;
public:
    void SetName(char *p)
    {
        name=p;
    }
    void SetGender(int iSex)
    {
        sex=iSex;
    }
    void SetAge(int iOld)
    {
        age=iOld;
    }
    void GetName(char *p)
    {
        p=name;
    }
    int GetGender()
    {
        return sex;
     }
    int GetAge()
    {
        return age;
    }
};
int main()

{

    Student Zhang_San;  //创建Student类对象Zhang_San

    char*chOne;

    int iSex;

    unsigned iOld;

    chOne=new char[11]; //创建动态字符数组用来存放姓名,指针chOne指向该数组

    cin>>chOne; //输入姓名,存放在chOne所指向的动态字符数组中

    cin>>iSex;  //输入性别,输入1表示性别为“男”,输入0表示性别为“女”

    cin>>iOld;  //输入年龄

    Zhang_San.SetName(chOne);   //用输入的姓名设置对象Zhang_San用来表示姓名的数据成员

    Zhang_San.SetGender(iSex);  //设置对象Zhang_San用来表示性别的数据成员

    Zhang_San.SetAge(iOld); //设置对象Zhang_San用来表示年龄的数据成员

    cout<<endl;

    Zhang_San.GetName(chOne);   //调用GetName(char *)成员函数将对象Zhang_San表示姓名的数据成员值

                                //存放到chOne所指向的动态字符数组中

    cout<<"Zhang_San's name is "<<chOne<<endl;  //显示姓名

    cout<<"Zhang_San's gender is "<<Zhang_San.GetGender()<<endl;   //显示性别:1(男),0(女)

    cout<<"Zhang_San's age is "<<Zhang_San.GetAge()<<endl;  //显示年龄

    delete []chOne;

    return 0;

}
  • 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
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77

设计计算器类

【问题描述】
根据以下主函数的功能来设计计算器类Calculator,使其能正确运行。类Calculator中应该具有描述运算数的a和b及其表示a和b运算结果的三个数据成员和相应计算并显示结果的成员函数。

int main( )
{
    float  a, b;
    cin>>a>>b; //从键盘输入运算数a、b
    Calculator  cal( a , b );   //用a和b初始化创建的Calculator类对象cal
    cal.add( ); //计算a+b并显示结果
    cal.subtract( );
    cal.multiply( );
    cal.divide( );
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
#include<iostream>
#include<cmath>
using namespace std;
class Calculator
{
public:
    Calculator(float ,float );
     float add( );
     float subtract( );
     float multiply( );
     float divide();
    private:
    float a,b,r;
};
Calculator::Calculator(float x,float y)
{
    a=x;
    b=y;
}
float Calculator:: add()
{
    r=a+b;
    cout<<a<<"+"<<b<<"="<<r<<endl;
}
float Calculator::subtract()
{
    r=a-b;
    cout<<a<<"-"<<b<<"="<<r<<endl;
}
float Calculator:: multiply()
{
    r=a*b;
    cout<<a<<"*"<<b<<"="<<r<<endl;
}
float Calculator::divide()
{
    r=a/b;
     cout<<a<<"/"<<b<<"="<<r<<endl;
}
int main( )

{

    float  a, b;

    cin>>a>>b; //从键盘输入运算数a、b

    Calculator  cal( a , b );   //用a和b初始化创建的Calculator类对象cal

    cal.add( ); //计算a+b并显示结果

    cal.subtract( );

    cal.multiply( );

    cal.divide( );

    return 0;

}
  • 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
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60

设计复数类

【问题描述】
根据以下主函数的功能来设计复数类Imaginary,使其能正确运行。类Imaginary中应该具有描述复数的实部和虚部的私有数据成员a和b,还有相应的构造函数和按照“a±bi”格式显示复数的成员函数print()。设计类Imaginary的2个友元函数分别进行复数的加、减运算,并在这些函数调用类Imaginary的成员函数print()显示结果。

int main()
{
    float x1,y1,x2,y2;
    cin>>x1>>y1>>x2>>y2;    //输入4个数据,分别表示进行运算的两个复数的实部和虚部
    Imaginary imag1(x1,y1),imag2(x2,y2);    //用x1、y1创建Imaginary类对象imag1
    Add(imag1,imag2);   //调用友元函数求两个复数之和,按a±bi的格式显示运算结果(a和b均为实数)
    Sub(imag1,imag2);   //求两个复数之差并显示运算结果
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
#include<iostream>
using namespace std;
class Imaginary
{
public:
    Imaginary(float a,float b){x=a;y=b;}
    friend float Add(Imaginary c1,Imaginary c2);
    friend float Sub(Imaginary c1,Imaginary c2);
private:
    float x,y;
};
float Add(Imaginary c1,Imaginary c2)
{
 cout<<c1.x+c2.x<<"+"<<c1.y+c2.y<<"i"<<endl;
}
float Sub(Imaginary c1,Imaginary c2)
{
     cout<<c1.x-c2.x<<c1.y-c2.y<<"i"<<endl;
}
int main()

{

    float x1,y1,x2,y2;

    cin>>x1>>y1>>x2>>y2;    //输入4个数据,分别表示进行运算的两个复数的实部和虚部

    Imaginary imag1(x1,y1),imag2(x2,y2);    //用x1、y1创建Imaginary类对象imag1

    Add(imag1,imag2);   //调用友元函数求两个复数之和,按a±bi的格式显示运算结果(a和b均为实数)

    Sub(imag1,imag2);   //求两个复数之差并显示运算结果

    return 0;

}
  • 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
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/222949
推荐阅读
相关标签
  

闽ICP备14008679号