zoukankan      html  css  js  c++  java
  • 实验二

    1.函数声明和函数定义

      拿段代码举例哈:

    #include <iostream>
    using namespace std;
    
    int add(int, int);
    
    int main()
    {
    	int x, y;
    	
    	cin >> x >> y;
    	cout << add(x, y);
    	
    	return 0;
    } 
    
    int add(int a, int b)
    {
    	return a+b;
    }
    

      

                             

    函数声明,在我看来便是在系统中声明一个函数,告诉系统从现在开始,有了这个函数,可以对它进行调用,如上述函数中最上方的int add,即是声明add函数;

    而函数定义,则是向系统具体阐释这个函数是做什么的,功能是什么,如上述函数中最后的int add,是告诉系统add函数要求a+b的值,而我觉得,int main说白了也是对main函数的一种定义;

    还有,函数声明可以和函数定义结合在一起,即将函数声明删去,将函数定义移至上方主函数前即可。

    2.实参形参,函数参数与返回值的作用

      还是上面那串代码:

    #include <iostream>
    using namespace std;
    
    int add(int, int);
    
    int main()
    {
    	int x, y;
    	
    	cin >> x >> y;
    	cout << add(x, y);
    	
    	return 0;
    } 
    
    int add(int a, int b)
    {
    	return a+b;
    }
    

      形参,即形式参数,只是走个形式,在我看来就是一个一次性参数,只有在定义它的这个函数中,需要的时候,才会给它分配空间,使用结束即释放空间,这个函数结束后在主函数及其他函数中无法使用,正如上述代码中的a,b,add函数结束后就无法再使用;

           实参,是一个固定的值,可以是常量,变量,函数,表达式等等,一般是先通过赋值,输入等方法获得固定值,再传给形参,就如代码中的x和y,通过输入获得固定值,再传给形参a和b;

           函数的参数,就是函数从外界主函数中获得解决这个函数问题需要的条件的桥梁,代码中的a和b就是获得输入值的途径;

           函数的返回值,就是函数解决的问题的答案,通过这个返回值传回给主函数进行进一步加工处理,代码中就是通过返回值a+b将答案返回主函数。

    3.值传递

    #include <iostream>
    using namespace std;
    void swao(int,int);
    int main()
    {
    int x=1, y=2;
    cout << "x= " << x <<< ", " << "y= " << y << endl;
    swap(x,y);
    cout << "x= " << x << ", "<< "y= " << y;
    return 0;
    )
    void swap(int a, int b) { int m; m = a; a = b; b = m; )

    结果: x= 1, y= 2
    x= 1, y= 2

         像代码中a=b之类的都属于直接的值传递,是直接将一个值通过赋值传给另一个变量,并不会改变函数外的原值;

    #include <iostream>
    using namespace std;
    void swao(int *,int *);
    int main()
    {
        int *x=1, *y=2;
        cout << "x= " << x <<< ", " << "y= " << y << endl;  
        swap(*x,*y);
        cout << "x= " << x << ", "<< "y= " << y;
        return 0;
    )
    void swap(int *a, int *b)
    {
         int m;
         m = a;
         a = b;
         b = m;
    )

    结果: x= 1, y= 2
          x= 2, y= 1

      间接传递则是可以改变原变量的位置来改变它的值,可以影响函数外的原值;

    2-28

    //if else
    #include <iostream>
    using namespace std;
    
    void fun();
    
    int main()
    {
    	fun();
    	
    	return 0;
    }
    
    void fun()
    {
    	char ch;
    	
    	while(ch!='Q')
    	{
    	    cout<<"Menu: A(dd) D(elete) S(ort) Q(uit),Select one:";
    		cin>>ch;
    		if(ch=='A'){
    			cout<<"数据已经增加。"<<endl; 
                continue;
    		}
    		else if(ch=='D'){
    			cout<<"数据已经删除。"<<endl;
    			continue;
    		}
    		else if(ch=='S'){
    			cout<<"数据已经排序。"<<endl;
    			continue;
    		}
    		else if(ch=='Q'){
    			cout<<"输入结束"<<endl;
    			break;
    		}
    		else{
    			cout<<"输入错误,请重新输入"<<endl;
    			continue;
    		}  
    	}
    }
    

      

    //switch
    #include <iostream>
    using namespace std;
    
    void choose();
    
    int main()
    {
    	choose();
    	
    	return 0;
    }
    
    void choose()
    {
    	char ch;
    	
    	while(ch!='Q')
    	{
    	    cout<<"Menu: A(dd) D(elete) S(ort) Q(uit),Select one:";
    		cin>>ch;
    		switch (ch){
    		case 'A':
    			cout<<"数据已经增加。"<<endl; 
                break;
    	
    		case 'D':
    			cout<<"数据已经删除。"<<endl;
    			break;
    		
    		case 'S':
    			cout<<"数据已经排序。"<<endl;
    			break;
    		
    		case 'Q':
    			cout<<"输入结束。"<<endl;
    			break;
    		
    		default:
    			cout<<"输入错误,请重新输入"<<endl;
    			break;
    		} 
    		 
    	}
    }
    

      

    2-29

     判断素数:一个素数只有1和它本身两个因数,所以从2开始只有它本身一个因数。那么从2开始检索它的第一个因数,若为它本身,则它是素数,反之则不是;

    //for 
    #include <iostream>
    #include <cmath>
    using namespace std;
    
    void search();
    
    int main()
    {
    	search();
    	
    	return 0;
    }
    
    void search()
    {
    	int i,j;
    	
    	for(i=2; i<100; i++)
    	{	
    		for(j=2; j<=i; j++)
    		   if(i%j==0) break;
    		
    		if(j==i)
    		   cout<<i<<' ';
    		else
    		   continue;   
    	}
    }
    

      

    //while 
    #include <iostream>
    #include <cmath>
    using namespace std;
    
    void search();
    
    int main()
    {
    	search();
    	
    	return 0;
    }
    
    void search()
    {
    	int i=1,j;
    	
    	while(i++ < 100)
    	{
    		j=1;
    		while(++j <= i){
    		   if(i%j==0) break;}
    		
    		if(j==i)
    		   cout<<i<<' ';
    		else
    		   continue;   
    	}
    }
    

      

    //do while
    #include <iostream>
    #include <cmath>
    using namespace std;
    
    void search();
    
    int main()
    {
    	search();
    	
    	return 0;
    }
    
    void search()
    {
    	int i=2,j;
    	
    	do
    	{
    		j=2;
    		do{
    		if(i%j==0) break;
    		}while(j++ < i);
    		
    		if(j==i)
    		   cout<<i<<' ';
    		else
    		   continue;   
    	}while(i++ < 100);
    }
    

      

    显而易见,for循环最快,while循环次之,dowhile循环最慢。

    2-32

    //do while
    #include <iostream>
    #include <cstdlib>
    using namespace std;
    
    void game();
    
    int main()
    {
    	game();
    	 
    	return 0;
    }
    
    void game()
    {
    	int target, answer;
    	target = 1 + rand()%100;
    	cout << "Please enter the number you guess: ";
    	do{
    		cin >> answer;
    		if(answer == target)
    			cout << "Correct!";
    		else if(answer < target)
    			cout << "Please bigger!" << endl << "Enter again: ";
            else
                cout << "Please smaller!" << endl << "Enter again: ";
    	}while(answer != target);
    	
    }
    

      

    //while 
    #include <iostream>
    #include <cstdlib>
    using namespace std;
    
    void game();
    
    int main()
    {
    	game();
    	 
    	return 0;
    }
    
    void game()
    {
    	int target, answer = -1;
    	target = 1 + rand()%100;
    	cout << "Please enter the number you guess: ";
    	
    	while(answer != target)
    	{
    		cin >> answer;
    		if(answer < target)
    			{
    			    cout << "Please bigger!" << endl << "Enter again: ";
    			    continue;
    		    }
            else if(answer > target)
                {
    			    cout << "Please smaller!" << endl << "Enter again: ";
    			    continue;
    		    }
        }
        cout << "Correct!";
    	
    }
    

      

    3-34

    思路:高中时做过类似的摸球的概率计算,一共n个球,若摸可能不同颜色的,第一次n种可能,第二次n-1种,···,第x次n-(x-1)种,由于是1次摸完,所以再除去顺序,除以x!,得到结果

    //摸球游戏
    #include <iostream>
    using namespace std;
    
    void moqiu();
    
    int main()
    {
    	moqiu();
    	
    	return 0;
    } 
    
    void moqiu()
    {
    	int sum=1, aim, total;
    	cout << "The total number of kinds is: ";
    	cin >> total;
    	cout << endl << "The number of balls you choose is: ";
    	cin >> aim;
    	for(int i=1; i <= aim; i++ )
    	{
    		sum *= (total-(i-1));
    		sum /= i;//除去摸球顺序影响 
    	} 
    	cout << endl << "The number of posibility is: " << sum;
    }
    

      

  • 相关阅读:
    python处理yml
    awk命令笔记
    微信小程序wxml的数据传给js 点击事件 js获取view中的内容
    微信小程序js 字符串截取
    微信小程序 wx:if 多条件判断
    微信小程序 --- toast消息提示框
    微信小程序 点击事件获取到的 event.currentTarget.dataset.id 是空的 解决办法
    微信小程序页面跳转传参数
    微信小程序开发框架
    微信小程序获取当前时间
  • 原文地址:https://www.cnblogs.com/zhaoluolong/p/8641146.html
Copyright © 2011-2022 走看看