• 关于全局变量


    全局变量是在整个文件里面可以供其他函数调用的变量。是不用当做变量传进函数里面的,直接调用就可以了!

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cmath>
    #include<cstring>
    using namespace std;
    int a100=0,a50=0,a20=0,a10=0,a5=0,a1=0;
    void digui(int n);
    
    int main(void)
    {
        int n;
        cin>>n;
        digui(n);
        //cout<<"cout"<<a100<<endl;
        printf("%d
    %d
    %d
    %d
    %d
    %d",a100,a50,a20,a10,a5,a1);
    }
    
    
    void digui(int n)
    {
        if(n-100>=0) {n=n-100;a100++;digui(n);}
        else if(n-50>=0) {n=n-50;a50++;digui(n);}
        else if(n-20>=0) {n=n-20;a20++;digui(n);}
        else if(n-10>=0) {n=n-10;a10++;digui(n);}
        else if(n-5>=0) {n=n-5;a5++;digui(n);}
        else if(n-1>=0) {n=n-1;a1++;digui(n);}
    
    }

    上面这个代码是http://noi.openjudge.cn/ch0113/13/,13:人民币支付问题的AC代码。这里就是容易犯这个错误,如果代码改成下面这样:

    void digui(int n,int a100,int a50,int a20,int a10,int a5,int a1)
    {
        if(n-100>=0) {n=n-100;a100++;digui(n);}
        else if(n-50>=0) {n=n-50;a50++;digui(n);}
        else if(n-20>=0) {n=n-20;a20++;digui(n);}
        else if(n-10>=0) {n=n-10;a10++;digui(n);}
        else if(n-5>=0) {n=n-5;a5++;digui(n);}
        else if(n-1>=0) {n=n-1;a1++;digui(n);}
    
    }

    这样的话就是错误的,因为你的递归函数返回类型是void空类型,a100,a50等这些变量是作为参数传进去的,这些就不是全局变量,事实上,你可以把a100,a50这些变量改成a,b,c这样的变量,结果是一样的,因为这些都是传进去的参数,而不是全局变量。

  • 相关阅读:
    请假两时间的小时数差
    Python3之旅
    python语法总结1
    关于命令行的小结
    从Java到C#再到python
    数据库知识
    Visual Studio高低版本的问题(以2008和2015为例)
    web api
    readoney和const
    null
  • 原文地址:https://www.cnblogs.com/myxdashuaige/p/8453151.html
Copyright © 2020-2023  润新知