【2022年研究生入学考试中国海洋大学930大题答案】简答题1:什么是全局变量?什么是局部变量?两者的区别是什么?试通过实际案例说明两者各自的应用情况。(15分) 科目:程序设计基础

本文主要是介绍【2022年研究生入学考试中国海洋大学930大题答案】简答题1:什么是全局变量?什么是局部变量?两者的区别是什么?试通过实际案例说明两者各自的应用情况。(15分) 科目:程序设计基础,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目

本题是中国海洋大学2022年研究生入学考试930程序设计基础简答题第1题。
题目:
1.什么是全局变量?什么是局部变量?两者的区别是什么?试通过实际案例说明两者各自的应用情况。(15分)


以下是本篇文章正文内容,欢迎朋友们进行指正,一起探讨,共同进步。——来自考研路上的lwj。QQ:2394799692

一、解题思路

思路:
1,先分别答一下全局变量和局部变量各自的含义
2,再用文字说明一下两者的区别
3,举一个局部变量的例子,我举的是冒泡排序
4,举一个全局变量的例子,我举的是求一个字符串的小写字母个数和大写+小写字母的个数

二、全局变量和局部变量各自的含义

1.局部变量

局部变量,也称内部变量,是指在一个函数内部或复合语句内部定义的变量 。局部变量的作用域是定义该变量的函数或定义该变量的复合语句。局部变量的生存期是从函数被调用的时刻算起到函数返回调用处的时刻结束。

2.全局变量

全局变量可以被本程序所有对象或函数引用,一般定义在库函数下面,一定要定义在主函数外部的上面,定义全局变量可以减去很多繁琐的定义,比如在多个函数都需要用到这个变量时,就不用定义这么多次(反正考试的时候这道题我写了3页,我现在也忘了怎么答的了)

三、两者的区别

1). 作用域不同:全局变量的作用域为整个程序,而局部变量的作用域为当前函数或循环等
2). 内存存储方式不同:全局变量存储在全局数据区中,局部变量存储在栈区
3). 生命期不同:全局变量的生命期和主程序一样,随程序的销毁而销毁,局部变量在函数内部或循环内部,随函数的退出或循环退出就不存在了
4). 使用方式不同:全局变量在声明后程序的各个部分都可以用到,但是局部变量只能在局部使用。函数内部会优先使用局部变量再使用全局变量

四、举一个局部变量的例子,我举的是冒泡排序

1.引入库

代码如下(示例):

#include<stdio.h>

2.主函数部分

代码如下(示例):

void sort(int a[], int n)
{for (int i = 0; i < n - 1; i++)//原则上要进行n-1趟排序{int f = 0;//用于做标识for(int j=n-1;j>i;j--)//从最后一个到i遍历if (a[j - 1] > a[j])//左边大于右边时交换{int tmp = a[j - 1]; a[j - 1] = a[j]; a[j] = tmp;f = 1;}if (f == 0)break;//如果本趟排序未发送交换,说明表已有序}
}
void main()
{int a[] = { 1,4,7,3,6,9,2,5,8 };int n = sizeof(a) / sizeof(int);sort(a, n);for (int i = 0; i < n; i++)printf("%d ", a[i]);
}

3.文字描述一下

冒泡排序中的局部变量f,作用是使当当前趟数已有序时,提前退出循环,优化了算法,f的作用域只限于外层for循环内使用,所以需要定义局部变量(考场上写了很多现在都忘了)

五、举一个全局变量的例子,我举的是求一个字符串的小写字母个数和大写+小写字母的个数

1.引入库

代码如下(示例):

#include<stdio.h>

2.主函数部分

int count;
void small(char a[])
{while (*a){if (*a >= 'a' && *a <= 'z')count++;a++;}
}
void total(char a[])
{while (*a){if (*a >= 'A' && *a <= 'Z')count++;a++;}
}
void main()
{char a[50] = "QQ2394799692,i like OUC!";small(a);printf("小写字母个数:%d\n", count);total(a);printf("总共字母个数:%d\n", count);
}

3.执行结果

输入:

char a[50] = "QQ2394799692,i like OUC!";

输出:

小写字母个数:5
总共字母个数:10

在这里插入图片描述


六、个人感想

难易程度:简单
这道题属于基础题,占了15分,相信大家都能拿到这15分,我写的答案只做为参考。当时在考场上记得用了差不多15分钟做这道题。

这篇关于【2022年研究生入学考试中国海洋大学930大题答案】简答题1:什么是全局变量?什么是局部变量?两者的区别是什么?试通过实际案例说明两者各自的应用情况。(15分) 科目:程序设计基础的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/393914

相关文章

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

Go语言中make和new的区别及说明

《Go语言中make和new的区别及说明》:本文主要介绍Go语言中make和new的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 概述2 new 函数2.1 功能2.2 语法2.3 初始化案例3 make 函数3.1 功能3.2 语法3.3 初始化

java中新生代和老生代的关系说明

《java中新生代和老生代的关系说明》:本文主要介绍java中新生代和老生代的关系说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、内存区域划分新生代老年代二、对象生命周期与晋升流程三、新生代与老年代的协作机制1. 跨代引用处理2. 动态年龄判定3. 空间分

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

Java MQTT实战应用

《JavaMQTT实战应用》本文详解MQTT协议,涵盖其发布/订阅机制、低功耗高效特性、三种服务质量等级(QoS0/1/2),以及客户端、代理、主题的核心概念,最后提供Linux部署教程、Sprin... 目录一、MQTT协议二、MQTT优点三、三种服务质量等级四、客户端、代理、主题1. 客户端(Clien

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

MySQL之InnoDB存储引擎中的索引用法及说明

《MySQL之InnoDB存储引擎中的索引用法及说明》:本文主要介绍MySQL之InnoDB存储引擎中的索引用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1、背景2、准备3、正篇【1】存储用户记录的数据页【2】存储目录项记录的数据页【3】聚簇索引【4】二

mysql中的数据目录用法及说明

《mysql中的数据目录用法及说明》:本文主要介绍mysql中的数据目录用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、版本3、数据目录4、总结1、背景安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的

深度解析Spring Boot拦截器Interceptor与过滤器Filter的区别与实战指南

《深度解析SpringBoot拦截器Interceptor与过滤器Filter的区别与实战指南》本文深度解析SpringBoot中拦截器与过滤器的区别,涵盖执行顺序、依赖关系、异常处理等核心差异,并... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现

Python get()函数用法案例详解

《Pythonget()函数用法案例详解》在Python中,get()是字典(dict)类型的内置方法,用于安全地获取字典中指定键对应的值,它的核心作用是避免因访问不存在的键而引发KeyError错... 目录简介基本语法一、用法二、案例:安全访问未知键三、案例:配置参数默认值简介python是一种高级编