zoukankan      html  css  js  c++  java
  • 学堂在线TsinghuaX: 00740043X C++语言程序设计基础 第四章Lab

    第一题:最大公约数

    题目描述

    求两个正整数a 和 b的最大公约数。

    要求使用c++ class编写程序。可以创建如下class

    #include <iostream>
    using namespace std;
    class Integer {
    private:
        int _num;
    public:
    //构造函数
        Integer(int num) {
        }
    //计算当前Integer 和 b之间的最大公约数
        int gcd(Integer b) {
        }
    };
    int main(){
        int a, b;
        cin >> a >> b;
        Integer A(a);
        Integer B(b);
        cout << A.gcd(B) << endl;
        return 0;
    }

    输入描述

    两个正整数a,b,并且1=<a,b <=10000

    输出描述

    a和b的最大公约数

    样例输入

    1000 1000

    样例输出

    1000
    #include <iostream>
    using namespace std;
    class Integer {
    private:
        int _num;
    public:
    //构造函数
        Integer(int num) {
            _num=num;
        }
    //计算当前Integer 和 b之间的最大公约数
        int gcd(Integer b) {
            int c=b._num,d;
            _num>c?d=c:d=_num;
            while((_num%d!=0)||(c%d!=0))
                    d--;
             return d;
        }
    };
    int main(){
        int a, b;
        cin >> a >> b;
        Integer A(a);
        Integer B(b);
        cout << A.gcd(B) << endl;
        return 0;
    }

    第二题:反转整数

    题目描述

    对于输入的一个正整数,输出其反转形式 

    要求使用c++ class编写程序。可以创建如下class

    #include <iostream>
    using namespace std;
     
    class Integer{
    private:
        int _num;
    //getLength()函数获取_num长度
        int getLength(){
        }
    public:
    //Integer类构造函数
        Integer(int num){
        }
    //反转_num
        int inversed(){
        }
    };
     
    int main() {
        int n;
        cin >> n;
        Integer integer(n);
        cout << integer.inversed() << endl;
    }

    输入描述

    一个正整数a ,且1=<a<=1,000,000,000

    输出描述

    a的反转形式

    样例输入

    1011

    样例输出

    1101
    #include <iostream>
    using namespace std;
    class Integer{
    private:
        int _num;
    //getLength()函数获取_num长度
        int getLength(){
             int x=_num;
             int len=0;
             while(x!=0||x%10!=0)
             {
                  len++;
                  x/=10;
             }
             return len;
        }
    public:
    //Integer类构造函数
        Integer(int num){
             _num=num;
        }
    //反转_num
        int inversed(){
             int len = getLength();
             int tmp=_num;
             int s=0;
             for(int i=0;i<len;i++)
             {
                  s=s*10+tmp%10;
                  tmp/=10;
             }
             return s;
        }
    };
     
    int main() {
        int n;
        cin >> n;
        Integer integer(n);
        cout << integer.inversed() << endl;
    }

    第三题:一元二次方程求解

    题目描述

    对于一元二次方程ax^2 + bx + c = 0,解可以分为很多情况。

    若该方程有两个不相等实根,首先输出1,换行,然后从小到大输出两个实根,换行;

    若该方程有两个相等实根,首先输出2,换行,然后输出这个这个实根,换行;

    若该方程有一对共轭复根,输出3,换行;

    若该方程有无解,输出4,换行;

    若该方程有无穷个解,输出5,换行;

    若该方程只有一个根,首先输出6,换行,然后输出这个跟,换行;

    要求使用c++ class编写程序。可以创建如下class

    #include <iostream>
    #include <cmath>
    using namespace std;
    class Equation{
    private:
        int _a, _b, _c;
    public:
        Equation(int a, int b, int c){
        }
        void solve(){
        }
    };
    int main(){
        int a, b, c;
        cin >> a >> b >> c;
        Equation tmp(a, b, c);
        tmp.solve();
    }

    输入描述

    该一元二次方程的系数a,b,c,且-100=<a,b,c<=100

    输出描述

    解的情况。输出解的时候保留两位小数

    样例输入

    1 4 3

    样例输出

    1
    -3.00 -1.00
    #include <iostream>
    #include <cmath>
    #include <cstdio>
    using namespace std;
    class Equation {
    private:
        int _a, _b, _c, _x;
    public:
        Equation(int a, int b, int c) {
            _a = a, _b = b, _c = c;
            _x = _b * _b - 4 * _a * _c;
        }
        void solve() {
            if (_x > 0 && _a != 0)
            {
                cout << 1 << endl;
                double x = -_b / 2.0 / (double)_a;
                double y = sqrt(_x) / 2.0 / (double)_a;
                printf("%.2f %.2f
    ", x - y, x + y);
            }
            else if(_x==0&&_a!=0)
            {
                cout << 2 << endl;
                double x = -_b / 2.0 / (double)_a;
                printf("%.2f
    ", x);
            }
            else if(_x<0&&_a!=0)
            {
                cout<<3<<endl;
            }
            else if(_a==0&&_b==0&&_c!=0)
            {
                cout<<4<<endl;
            }
            else if(_a==0&&_b==0&&_c==0)
            {
                cout<<5<<endl;
            }
            else if(_a==0&&_b!=0)
            {
                cout<<6<<endl;
                double x = -_c /(double)_b;
                printf("%.2f
    ", x);
            }
        }
    };
    
    int main() {
        int a, b, c;
        cin >> a >> b >> c;
        Equation tmp(a, b, c);
        tmp.solve();
    }
  • 相关阅读:
    005 Eureka的HA机制和保护模式
    004 完善微服务信息
    003 注册微服务
    002 搭建单机的Eureka服务端
    001 项目的基础配置
    002 分支操作
    001 GIt的基本操作
    004 流程历史
    签名时出错: 未能对 binDebugapp.publishxxxx .exe 签名
    远程桌面无法复制粘贴传输文件解决办法
  • 原文地址:https://www.cnblogs.com/Konayuki2015/p/4520680.html
Copyright © 2011-2022 走看看