实验1 C++基础

来源:互联网 发布:淘宝买家可以贷款吗 编辑:程序博客网 时间:2024/05/16 07:46

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


原创粉丝点击