• 实验1 C++基础


    1.实验目的和要求

    目的:快速掌握C++语言编程的方法,了解C++的增强功能,主要内容有:(1)输入流、输出流的使用;(2)重载、默认参数;(3)引用;(4)new和delete运算符分配内存。

    2.实验内容:

    (1)       编写一个用输入和输出流运算符进行的输入和输出的程序。从键盘输入两个数,分别对两个数进行加,减,乘和除的运算。并输出计算结果,如: 23+123=146。

    #include<iostream>
    using namespace std;
    int main()
    {
        double a,b;
        cout<<"输入两个数"<<endl;
        cin>>a>>b;
        cout<<"a+b="<<(a+b)<<endl;
        cout<<"a-b="<<(a-b)<<endl;
        cout<<"a*b="<<(a*b)<<endl;
        if(b==0)
            cout<<"ERROR,除数不能为0"<<endl;
        else
            cout<<"a/b="<<(a/b)<<endl;
        return 0;
    }
    

    (2)       用new和delete运算符动态分配内存空间的方法编写程序。从键盘输入3´3整型数组的数据,并计算出所有元素之和,打印出最大值和最小值。输入输出要用流运算符实现。

    #include<iostream>
    using namespace std;
    int main()
    {
        int **a=(int**)new int*[3];//申请空间
        for(int i=0;i<3;i++)
            a[i]=new int[3];//申请行空间
        cout<<"输入9(3*3)个整数"<<endl;
        for(int i=0;i<3;i++)
            for(int j=0;j<3;j++)
                cin>>a[i][j];
    
        int max=a[0][0],min=a[0][0],sum=0;
        for(int i=0;i<3;i++)
            for(int j=0;j<3;j++)
            {
                sum+=a[i][j];
                if(max<a[i][j])
                    max=a[i][j];
                if(min>a[i][j])
                    min=a[i][j];
            }
        cout<<"sum="<<sum<<endl;
        cout<<"max="<<max<<endl;
        cout<<"min="<<min<<endl;
        delete []a;
    }
    


    (3)       编写C++风格的程序,解决百钱问题:将1元人民币兑换成1,2,5分的人民币,有多少种换法?

    #include<iostream>
    using namespace std;
    int main()
    {
        int i,j,k;
        int count=0;
        for(i=0; i*5<=100; i++)
            for(j=0; j*2<=100; j++)
                for(k=0; k<=100; k++)
                {
                    if(i*5+j*2+k==100)
                    {
                        cout<<"5 fen:"<<i<<" 2 fen:"<<j<<" 1 fen:"<<k<<endl;
                        count++;
                    }
                }
        cout<<"共有阅换方法 "<<count<<" 种"<<endl;
        return 0;
    }
    

    (4)       在主函数中定义2个整型元素a,b,用引用作函数参数的方法,在函数void swap(int & x, int & y)中实现将数据交换存放,并在主函数中打印出来。

    #include<iostream>
    using namespace std;
    void swap(int &x,int &y)//函数形参为引用
    {
        int temp;
        temp=x;
        x=y;
        y=temp;
    }
    int main()
    {
        int a=5,b=10;
        int &x=a,&y=b;//引用声明是必须进行初始化
        cout<<"a="<<a<<" b="<<b<<endl;
    
        cout<<"After swap"<<endl;
        swap(x,y);
        cout<<"a="<<a<<" b="<<b<<endl;
        return 0;
    }
    


    (5)       假设我们班有50名同学,每个同学都报出自己的生日, 每个同学的生日都不相重的概率只有0.0296,如果有100个同学,不相重的概率为3.0725´10-7。相重复的概率如此之大与我们主观想象不同。写一个程序,输入同学的人数n计算出其生日不重复的概率。然后在用彷真的方法, 利用随机数产生每个同学的生日,计算出生日不重复的概率并与前面的结果进行比较。

        [学生的生日可以用随机数产生,rand()产生0—32767之间的伪随机数,因为此需要一个种子,种子不同产生的随机数列不同,rand()产生的随机数也不同,可以调用srand(longint *)函数设置种子,比如我们可以获得计算机中的时间获得随机数种子, 以上函数需要包含头文件 stdlib.h] 

    #include<iostream>
    #include<stdlib.h>//使用rand()所需头文件
    using namespace std;
    int Judge(int *a,int n)//判断生日是否有重复的
    {
        for(int i=0;i<n;i++)
            for(int j=i+1;j<n;j++)
            {
                if(a[i]==a[j])
                    return 1;
            }
        return 0;
    }
    int main()
    {
        int n;
        cout<<"输入同学人数"<<endl;
        cin>>n;
        int *birthday=new int[n];
        long times=1000000;
        double count=0;
        for(int k=0;k<times;k++)
        {
            for(int i=0; i<n; i++)
            {
                birthday[i]=rand()%365+1;//随机产生生日
            }
            count+=Judge(birthday,n);
        }
        cout<<"生日不重复的概率为:"<<1-(count/times)<<endl;
    }
    


  • 相关阅读:
    Nginx 模块开发(1)—— 一个稍稍能说明问题模块开发 Step By Step 过程
    nginx上传模块—nginx upload module-
    解决nginx上传模块nginx_upload_module传递GET参数
    nginx upload module的使用
    Nginx Upload Module 上传模块
    产品需求分析神器:KANO模型分析法
    SpringBoot @ConditionalOnBean、@ConditionalOnMissingBean注解源码分析与示例
    BAT、网易、京东等如何做大数据风控的?
    springboot 2.x 集成 drools 7.x
    Drools介绍与使用
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3074163.html
Copyright © 2020-2023  润新知