实验二

一.验证性实验

1 .函数声明

函数的声明是对函数调用的准备,是告诉编译器存在这么一个函数,这个函数会在后面提到,这样在便编译过程中编译器就会自动向下寻找函数。

2 .函数定义

函数定义是告知函数的类型,如果把函数的声明比作告知编译器有这么一个函数,那函数的定义就是说有一个什么样的函数,相当于提前写出该函数。

3 .函数的调用

函数的调用即将一个写好的函数带入到main函数中,执行所需的功能。

4 .形参,实参,返回值及其做用

形参可以理解为编译函数时赋予的参数,是而实参和它的字面意思一样,是在函数中实际存在的值,实际调用函数时传递给的形参,返回值就是函数运行后所得的参数。

就好像函数z=x+y,x,y就是形参,4=1+3中的1和3就是实参

5.值传递和引用传递的区别

值传递是将实参的内容复制一份赋予形参,函数结束时对原本的实参没有影响,而引用传递是说实参和形参等价,对形参的影响等价于对实参的影响。

习题2-28

#include<iostream>
#include<iostream>
using namespace std;
int main()
{
    char A,D,S,Q,m;
    cout<<"Menu A(DD) D(elete) S(ort) Q(uit),Select ont:"<<endl;
    cin>>m;
    if(m!='Q')
    {
    if(m=='A')
    {
        cout<<"数据已增加";
    }
    else if(m=='D')
    {
        cout<<"数据已删除";
    }
    else if(m=='S')
    {
        cout<<"数据已排序";
    }
    }
    else
    {
        break;
    }
    return 0;
}
#include<iostream>
using namespace std;
int main()
{
    char A,S,D,Q,m;
    cout<<"Menu A(DD) D(elete) S(ort) Q(uit),Select ont:";
    cin>>m;
    switch(m)
    {
        case 'A':
            cout<<"数据已添加"<<endl;
            break;
        case 'S':
            cout<<"数据已排序"<<endl;
            break;
        case 'D':
            cout<<"数据已删除"<<endl;
            break;
        case 'Q':
            return 0;
            break;
    }
    return 0;
 } 

结果如图

 

习题2-29

for形式

#include<iostream>
using namespace std;
int main()
{
    int m,n;
    for(m=3;m<100;m++)
    {
        for(n=2;n<m;n++)
        {if(m%n==0)
        {
            break;
        }
        if(n==(m-1))
        {
            cout<<m<<"是质数"<<endl;
        }
        }
    }
    return 0;
}

while形式

#include<iostream>
using namespace std;
int main()
{
    int m,n;
    for(m=3;m<100;m++)
    {
        for(n=2;n<m;n++)
        {if(m%n==0)
        {
            break;
        }
        if(n==(m-1))
        {
            cout<<m<<"是质数"<<endl;
        }
        }
    }
    return 0;
}
#include<iostream>
using namespace std;
int main()
{
    int m=3,n;
    while(m<100)
    {
        for(n=2;n<m;n++)
        {
            if(m%n==0)
        {
            break;
        }
        if(n==(m-1))
        {
            cout<<m<<"是质数"<<endl;
        }
        }
        m++;
    }
    return 0;
}

do while 形式

#include<iostream>
using namespace std;
int main()
{
    int m=3,n;
    do
    {
        for(n=2;n<m;n++)
        {
            if(m%n==0)
        {
            break;
        }
        if(n==(m-1))
        {
            cout<<m<<"是质数"<<endl;
        }
        }
        m++;
    }while(m<100);
    return 0;
}

 

 习题2-32

while形式

int main()
{
    int m,n,x;
    unsigned seed;
    srand((unsigned int) seed);                               //调用时间函数传送不同的seed值
    x = 1 + rand() % 100;                                        //生成每次不同的随机数
    cout<<"请输入种子数"<<endl;
    cin>>seed;
    srand(seed);
    while(rand()<1&&rand()>100);
    {
        srand(seed);
        seed++;
    }
    cout<<"请输入猜测值"<<endl;
    cin>>n;
    while(n!=m)
    {
        if(n>m)
        {
            cout<<"n大于m"<<endl;
            cin>>n;
            continue;
        }
        else if(n<m)
        {
            cout<<"n小于m"<<endl;
            cin>>n;
            continue;
        }        
    }
    return 0;    
}

do while形式

#include<iostream>
#include<cstdlib>
using namespace std;
int main()
{
    int m,n,x;
    unsigned seed;
    srand((unsigned int) seed);    
    x = 1 + rand() % 100;     
    cout<<"请输入种子数"<<endl;
    cin>>seed;
    srand(seed);
    while(rand()<1&&rand()>100);
    {
        srand(seed);
        seed++;
    }
    cout<<"请输入猜测值"<<endl;
    cin>>n;
    do
    {
        if(n>m)
        {
            cout<<"n大于m"<<endl;
            cin>>n;
            continue;
        }
        else if(n<m)
        {
            cout<<"n小于m"<<endl;
            cin>>n;
            continue;
        }        
    }while(n!=m);
    return 0;    
}

 

 习题2-34

 

#include <iostream>
using namespace std;       
enum color{Red,Yellow,Blue,White,Black};     

int main()
{
    int i, j, k, n = 0;         
    for (i = Red; i<=Black; i++)
        for (j = i + 1; j<=Black; j++)
            for (k = j + 1; k <=Black; k++)
            {
                if (i != j && j != k && k != i)   
                    cout << i << " " << j << " " << k<<endl;
                n++;
            }
    cout << n << endl;
    return 0;
}

 这道题有点像数学里的排列组合问题,我将袋子中的球设为一个枚举类型,将所有的可能列举出来,便得出答案。

 

实验总结与体会

只有在编程的过程中自己发现问题,水平才能提高。我在编程的过程中遇到了许多不懂的,不会的地方,要自己去翻书,去百度,去问同学才得到解决,虽然很麻烦,但是看着自己写出的简单的小程序,还是挺有成就感的。

 

posted @ 2018-03-25 20:03  春风十里五千米  阅读(108)  评论(3编辑  收藏  举报