zoukankan      html  css  js  c++  java
  • 变量的一些理解

    程序中变量也有不同的使用范围,称为变量的作用域。变量的作用域决定变量的可访问性.

    其分为局部变量和全局变量

    局部变量:在函数内声明的变量,其作用范围仅限于该函数内

    1.主函数中定义的变量也只能在主函数中使用,不能在其他函数中使用

    2允许在不同的函数中使用相同的变量名,它们代表不同的变量,分配不同的存放单元,互不相干,不会发生混淆

    3复合语句中定义的变量,也是复合语句的局部变量,所谓复合语句就是用{}包含起来的语句块

    #include <stdio.h>

    void m();

    void main()

    {

    int a=1,b=2;

    {

      int a=3,b=4;

      printf("复合语句的变量a=%d,b=%d\n",a,b);

    }

      printf("main函数的变量a=%d,b=%d\n",a,b);

    m();

    }

    void m()

    {

    int a=5,b=6;

      printf("m函数的变量a=%d,b=%d\n",a,b);

    }

    全局变量:在任何函数外部声明的变量,叫全局变量。它的作用域是从声明时刻开始,到程序结束。

    1.全局变量定义必须在所有的函数之外。

    2.全局变量可加强函数模块之间的数据联系, 但是又使函数要依赖这些变量,因而使得函数的独立性降低。

    3. 在同一源文件中,允许全局变量和局部变量同名。在局部变量的作用域内,同名的全局变量不起作用。

    #include <stdio.h>

    int sum=0;//全局变量

    void addNumbers()

    {

    int sum;//局部变量

    int num1,num2;

    printf("\n 请输入两个数:");

    scanf("%d %d",&num1,&num2);

    sum=num1+num2;

    printf(" 子函数中 sum 的值是 %d \n",sum);

    }

    void main()

    {

    int sum=0;//局部变量

    addNumbers();

    printf("\n 主函数中 sum 的值是 %d \n ",sum);

    }

    计算N的阶乘:5!=5*4*3*2*1

    #include <stdio.h>

    int  fun(int n);

    void main(){

    int n;

    printf("请输入您要计算阶乘的数:\n");

      scanf("%d",&n);

    int sum=fun(n);

      printf("%d的阶乘是%d",n,sum);

    }

    //计算阶乘

    int  fun(int n){

    int sum=1;

        while(n>1){

      sum*=n;

      n--;

    }

    return sum;

    }

    //博客评选大赛,10为评为为选手打分,去掉一个最高分和一个最低分,计算选手的最后得分。

    #include <stdio.h>

    void  showMenu();

    void  getScores();

    float calcAvg();

    float scores[10];//定义全局变量,用于保存评委的打分

    void main(){

        float avg;

       //1.打印菜单

        showMenu();

        //2.获取评委打分

    getScores();

    //3.计算选手最后得分

      avg = calcAvg();

        printf("该选手去掉一个最高分和一个最低分最终得分为%.2f分\n",avg);

    }

    //1.打印菜单

    void showMenu()

    {

    printf("************************************************\n");

    printf("*************郑州杯博客大赛***************\n");

    printf("************************************************\n");

    }

    //2.获取10个评委打分

    void  getScores()

    {

    int i;

    for(i=0;i<10;i++){

    printf("请%d号评委打分:\n",i+1);

      scanf("%f",&scores[i]);//将评委的打分获取并保存到数组中

    }

    printf("评委打分完毕,分数正在紧张统计中.....\n");

    }

    //3.统计评委成绩去掉一个最高分和一个最低分,计算选手平均得分

    float calcAvg()

    {

    float max,min,avg,sum=0;

    int i;

      max=scores[0];//假设第一个分数最高

        min=scores[0];//假设第一个分数最低

      for(i=0;i<10;i++){//计算总分

    sum+=scores[i];

         if(scores[i]>max){//获取最高分

         max=scores[i];

         }

    if(scores[i]<min){//获取最低分

      min=scores[i];

      }

    }

    //去除最低分和最高分计算平均分

    avg=(sum-max-min)/8;

    return avg;

    }

  • 相关阅读:
    Linux入门-ssh scp rsync
    Linux入门-samba
    Linux入门-vsftp
    Linux入门-nfs
    MySQL卸载(rpm)
    rust_3_所有权
    rust_1_入门指南与猜猜看游戏
    vscode首次ssh remote linux连不上
    vbox新装ubuntu虚拟机注意事项
    IBM Rational Rose和Start UML的c++逆向工程自动生成UML类图组件
  • 原文地址:https://www.cnblogs.com/jiawenxu/p/6606703.html
Copyright © 2011-2022 走看看