c++ day05

作者: __method__ | 来源:发表于2021-02-01 22:28 被阅读0次

    全局变量

    定义在所有函数外的变量, 均为静态存储, 作用域是定义处到源文件结束处, 可以使用 extern 和 static 对其作用域进行扩展和限制

    • extern 是扩展
    1. 将 全局变量扩展定义到定义之前
    #include <iostream>
    
    using namespace std;
    
    int min(int a, int b)            //定义min函数
    {
        int c;
    
        c = a < b ? a : b;
        return (c);
    }
    extern int a, b;
    
    int main()
    {
    
        cout<<min(a, b)<<endl;
    }
    
    int a = 4, b = 7;
    
    
    1. 将全局变量扩展到其它文件
    #include <iostream>
    using namespace std;
    int a;         //定义全局变量
    int main()
    {
        int power(int);     //对调用函数作声明
        int b=3, c, d, m;
    
        cout<<"enter the number a and its power m:"<<endl;
        cin>>a>>m;
        c=a*b;
        cout<<a<<"*"<<b<<"="<<c<<endl;
        d=power(m);
        cout<<a<<" ** "<<m<<"="<<d<<endl;
    }
    
    extern int a;        //声明a是一个已定义的全局变量
    
    int power (int n)
    {
        int i, y=1;
    
        for(i=1; i<=n; i++)
            y=y*a;
        return (y);
    }
    
    • static 是限制
      有时候可能需要限制某些全局变量,不让别的文件使用, 可以用static做限制

    外部函数和内部函数
    内部函数只能在本文件中使用
    外部函数可以被其他文件引用

    数组

    为什么需要数组? 节省变量的声明个数

    • 数组的定义
    #include <iostream>
    # include <iomanip>
    using namespace std;
    int main()
    {
        //    数据类型  数组名[容量]
        int a[10];
        for (int i = 0; i <= 9 ; i++) {
            a[i] = -i;
        }
    
        for (int i = 0; i < 10 ; ++i) {
            cout << setw(4) << a[i] ;
        }
        return 0;
    }
    

    数组的声明

    #include <iostream>
    # include <iomanip>
    using namespace std;
    int main()
    {
    
        // 数组的创建形式
        int a[5] = {11, 22, 33, 44, 55};
        cout << "a[5] = ";
        for (int i = 0; i < 5 ; ++i) {
            cout<< a[i] << setw(4)  ;
        }
        cout <<endl;
        // 部分赋值 没有分到的给默认值 0
        cout << "b[10] = ";
        int b[10] =  {111, 222, 333, 444};
        for (int i = 0; i < 10 ; ++i) {
            cout<< b[i] << setw(4)  ;
        }
    
        // 赋值一样的
        cout <<endl;
        cout << "w[10] = ";
        int w[5] = {9};
        for (int i = 0; i < 15 ; ++i) {
            cout<< w[i] << setw(4)  ;
        }
    
        //  不指定容量, 但是编译创建是为该数组开辟4 个内存空间
        int d[] = {1, 2, 3,4};
    
        
    }
    
    

    不同声明下数组的初始值

    #include <iostream>
    # include <iomanip>
    using namespace std;
    int x[5];           //全局数组,静态型,各元素初值为0
    int a;  // 类比全局数组
    int main()
    {
        static int y[5];    //局部数组,静态型,各元素初值为0
        int z[5];       //局部数组,动态型,各元素初值不确定
        int b;
        for(int i=0; i<5; i++)
            cout<<x[i]<<'\t';
        cout<<endl;
        cout<<"---------------------------"<<endl;
        for(int i=0; i<5; i++)
            cout<<y[i]<<'\t';
        cout<<endl;
        cout<<"---------------------------"<<endl;
        for(int i=0; i<5; i++)
            cout<<z[i]<<'\t';
        cout<<endl;
        cout<<a<<'\t'; // 0
        cout<<b<<'\t'; //  6422352 很大值
    }
    

    示例

    用数组求Fibonacci数列的前20项和前20项之和

    #include <iostream>
    # include <iomanip>
    using namespace std;
    int main()
    {
        int fibo[20] = {1, 1};
        int sum = fibo[0] + fibo[1];
        for (int i = 2; i < 20 ; ++i) {
            fibo[i] =  fibo[i-1] + fibo[i-2];
            sum += fibo[i];
        }
        // 遍历
        for (int i = 0; i < 20 ; ++i) {
            cout << fibo[i] << "\t";
            if ((i+1)%5==0)
                cout << "\n";
        }
        cout<< " 20 nums = "<< sum<<endl;
    }
    

    数字作为参数

    • 数组中元素作为参数
    #include <iostream>
    using namespace std;
    
    int large (int x, int y)
    {
        int flag;
        if (x>y)
            flag=1;
        else if (x<y)
            flag=-1;
        else flag=0;
        return(flag);
    }
    int main()
    {
        int a[4] = {2223, 166 , 33 , 55};
        int b[4] = {323, 166 , 3 , 5335};
    
        int g = 0, e = 0, l = 0; //g代表  a 中 比b 大的数量; e是等, l是少
        for (int i = 0; i < 4; ++i) {
            int r = large(a[i], b[i]);
            if (r==1) g++;
            else if(r == 0) e++;
            else l++;
        }
    
        cout<<" a[i] > b[i] counts "<<g<<endl;
        cout<<" a[i] = b[i] counts "<<e<<endl;
        cout<<" a[i] < b[i] counts "<<l<<endl;
    
    }
    
    • 数组作为参数(即数组名)
    #include <iostream>
    using namespace std;
    void add100(int b[]){
        for (int i = 0; i < 4; ++i) {
            b[i] = b[i] + 100;
        }
    }
    int main()
    {
        int a[4] = {1, 2, 3, 4};
        add100(a);
        for (int i = 0; i < 4 ; ++i) {
            cout << a[i] << "\t";
        }
    
    }
    

    相关文章

      网友评论

          本文标题:c++ day05

          本文链接:https://www.haomeiwen.com/subject/uoustltx.html