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