变量的存储类别题库-25页word资料
第七章变量的存储类别一、选择题1.有以下程序#include <stdio.h>int a=2;int f(int n)static int a=3;int t=0;if(n%2)static int a=4; t += a++;elsestatic int a=5; t += a++;return t+a++;void main()int s=a, i;for( i=0; i<3; i++) s+=f(i);printf("%d\n", s);程序运行后的输出结果是______。
A)26 B)28 C)29 D)24答案: C2. 凡是函数中未指定存储类别的局部变量,其默认的存储类别是。
A) auto B) register C) extern D) static答案:A3. 以下不正确的说法是。
A)在不同的函数中可以使用名称相同的变量B)在函数内定义的变量只在本函数范围内有效C)形式参数是局部变量D)在函数内的复合语句中定义的变量在本函数范围内有效答案:D4. 在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是。
A) auto B) register C) extern D) static答案:D5.如果在一个函数中的复合语句中定义了一个变量,则以下说法正确的是。
A)在本函数范围内有效B)在本程序范围内有效C)只在复合语句中有效D)非法变量答案:C6. 下列变量定义错误的是。
A) int x,y;B) register static int a,b,c;C) auto int x,y;D) extern int A;答案:B7. 以下程序的正确运行结果是_____________。
#include <stdio.h>int m=1;int n=5;int min(int a,int b);void main( )int m=100,n=10,t;t=min(m,n);printf ("%d\n", t);int min(int a,int b)int c;c=(a<=b)? a:b;return(c);A) 1 B) 5 C) 10 D) 0答案:C8. 以下程序的正确运行结果是_____________。
#include <stdio.h>void main( )int m=1,n=2,t=3;++m;t+=++n;int n=10,t;t=n*2;m+=t;printf("%d,%d,%d\n",m,n,t);printf("%d,%d,%d\n",m,n,t);A) 22,11,5 B)22,10,2018,5,6 22,3,6C) 32,9,5 D) 16,21,610,10,20 22,3,9答案:B9.以下叙述中正确的是。
(A)全局变量的作用域一定比局部变量的作用域范围大(B)静态(static)类别变量的生存期贯穿于整个程序的运行期间(C)函数的形参都属于全局变量(D)未在定义语句中赋初值的auto变量和static变量的初值都是随机值答案:B10.下面程序的输出是。
#include <stdio.h>int fun3 (int x)static int a=3;a+=x;return(a);void main( )int k=2,m=1,n;n=fun3(k);n=fun3(m);printf("%d\n",n);(A)3 (B)4 (C)6 (D)9答案:C11.有以下程序#include <stdio.h>int a=2;int f(int *a)return(*a)++;void main( )int s=0;int a=5;s+=f(&a);s+=f(&a);printf("%d\n",s);执行后输出结果是。
(A)10 (B)9 (C)7 (D)8答案:C12.以下只有在使用时才为该类型变量分配内存的存储类说明是。
(A)auto和static (B)auto和register(C)register和static (D)extern和register 答案:B13.下面叙述中正确的是。
A)全局变量的作用域一定比局部变量的作用域范围大B)静态(static)类别变量的生存期贯穿于整个程序的运行期间C)函数的形参都属于全局变量D)未在定义语句中赋初值的auto变量和static变量的初值都是随机值答案:B14.在C语言中,形参的缺省存储类型是。
A)auto B)register C)static D)extern答案:A15.下面程序运行后的输出结果是。
#include <stdio.h>int f()static int i=0;int s=1;s+=i;i++;return s;void main( )int i,a=0;for(i=0;i<5;i++)a+=f( );printf("%d\n",a);A)20 B)24 C)25 D)15答案:D16. 以下程序:#include <stdio.h>void main( )int i=1,j=3;printf("%d,",i++);int i=0;i+=j*2;printf("%d,%d,", i ,j);printf("%d,%d\n", i ,j);其输出结果是A)1,6,3,1,3 B)1,6,3,2,3 C)1,6,3,6,3 D)1,7,3,2,3答案:B)17. 以下程序:#include <stdio.h>void fun (int *s)static int j=0;dos[j]+=s[j+1];while (++j<2);void main( )int k, a[10]={1,2,3,4,5};for (k=1;k<3;k++) fun(a);for(k=0;k<5;k++) printf("%d",a[k]);其输出结果是A)34756 B)23445 C)35745 D)12345答案:C)18. 以下程序的输出结果是。
#include <stdio.h>int a=1;int fun(int k)static int a=5;a+=k; printf("%d ",a);return(a);void main( )int b=3;printf("%d\n",fun(b+fun(a)));(A)6 9 9 (B)6 6 9 (C)6 15 15 (D)6 6 15答案:C19. 下列程序的输出结果为。
#include <stdio.h>int c=6;void test(int *x, int y)*x=3* (*x);y=*x+y;c=y%(*x);printf ("x=%d,y=%d,c=%d\n",*x,y,c);void main ( )int a=1,b=4;test(&a,b);printf ("a=%d,b=%d,c=%d\n",a,b,c);(A)x=1,y=7,c=3 (B)x=3,y=7,c=1a=3,b=4,c=1 a=4,b=3,c=1(C)x=3,y=7,c=1 (D)x=3,y=4,c=1a=3,b=4,c=1 a=3,b=7,c=1答案:C20. 以下程序的运行结果是。
#include <stdio.h>int d=1;void fun (int p)int d=5;d+=p++;printf ("%d ",d);void main ( )int a=3;fun(a);d+=a++;printf ("%d\n",d);A)5 3 B)8 4 C)5 8 D)5 4答案:B二、填空题1.只有在函数内才能使用的变量称为_【_1_】_变量。
答案:【1】内部或局部2.主函数也_【_1_】_使用其它函数中定义的局部变量。
答案:【1】不能3.不同函数中可以使用相同名字的变量,它们代表不同的对象,互不干扰。
此说法正确吗?_【_1_】_。
答案:【1】正确4.在所有函数之外定义的变量称为_【_1_】_变量。
答案:【1】外部或全局5.设全局变量的作用是:增加了_【_1_】_间数据联系的渠道。
答案:【1】函数6.全局变量可以为其它函数所共用,它的有效范围为:从_【_1_】_的位置开始到文件结束。
答案:【1】定义7.建议不在必要时不要使用全局变量,因为它使函数的_【_1_】_降低了。
答案:【1】通用性或可靠性8.外部变量的定义只能有_【_1_】_次,而外部变量的说明可以有_【_2_】_次。
答案:【1】一;【2】多9.对外部变量的初始化只能在_【_1_】_时进行。
答案:【1】定义10.如果在局部变量的作用范围内与外部变量同名,则_【_1_】_变量不起作用。
答案:【1】外部11.从变量的_【_1_】_(即从空间)角度来分,可以分为全局变量和局部变量。
答案:【1】作用域12.从变量值存在的时间(即_【_1_】_)角度来分,可以分为静态存储变量和动态存储变量。
答案:【1】生存期13.在C语言中每一个变量和函数有两个属性:_【_1_】_和数据的存储类别。
答案:【1】数据类型14.存储类别指的是数据在_【_1_】_中的存储方法。
答案:【1】内存15.在C语言中,存储方法分为两大类:静态存储类和动态存储类,具体包含四种:自动的、_【_1_】_、静态的、_【_2_】_。
前两种属于动态存储类,后两种属于静态存储类。
答案:【1】寄存器的;【2】外部的16.静态存储是整个程序运行时间都存在,而动态存储则是在调用函数时临时分配单元。
所以,形式参数属于_【_1_】_存储类。
答案:【1】动态17.自动变量、寄存器变量、形式参数都属于局部变量,在离开函数时,其值_【_1_】_,而静态局部变量在离开函数时,其值_【_2_】_。
答案:【1】就消失;【2】仍保留18.如果需要保留函数上一次调用结束时的值,或变量初始化后只被引用而不改变其值,则这时采用_【_1_】_变量比较方便,以免每次调用时重新赋值。
答案:【1】静态19.如不必要,不要多用静态局部变量。
不仅长期占用内存不释放,浪费空间,而且当调用次数多时往往弄不清其当前值是什么,降低了程序的_【_1_】_。
变量类型练习题
变量类型练习题在计算机编程中,变量是存储数据的一种方式。
不同类型的变量可以存储不同类型的数据,例如整数、浮点数、布尔值等。
理解不同变量类型的特点和使用方法对于编程非常重要。
本文将通过练习题的方式帮助读者巩固对变量类型的理解。
练习一:整数变量请声明一个整数变量,命名为"num1",并赋予其任意整数值。
然后,在屏幕上打印出这个整数的值。
解答如下:```num1 = 10print(num1)```练习二:浮点数变量请声明一个浮点数变量,命名为"num2",并赋予其任意浮点数值。
然后,在屏幕上打印出这个浮点数的值。
解答如下:```num2 = 3.14print(num2)```练习三:字符串变量请声明一个字符串变量,命名为"str1",并赋予其任意字符串值。
然后,在屏幕上打印出这个字符串的值。
解答如下:```str1 = "Hello World!"print(str1)```练习四:布尔变量请声明一个布尔变量,命名为"bool1",并赋予其任意布尔值(True 或False)。
然后,在屏幕上打印出这个布尔值的值。
解答如下:```bool1 = Trueprint(bool1)```练习五:类型转换请将练习一中的整数变量"num1"转换为浮点数类型,并将结果存储在一个新的变量"num3"中。
然后,在屏幕上打印出"num3"的值以及其类型。
解答如下:```num3 = float(num1)print(num3)print(type(num3))```练习六:字符串拼接请将练习一中的整数变量"num1"和练习三中的字符串变量"str1"进行拼接,将结果存储在一个新的变量"str2"中。
第04章 变量的存储类型11页
第4章变量的存储类型4.1 概述C语言中的变量具有两种属性:根据变量所持有数据的性质不同而分为各种数据类型;根据变量的存储方式不同而分为各种存储类型.变量的数据类型决定了该变量所占内存单元的大小及形式;变量的存储类型规定了该变量所在的存储区域,因而规定了该变量作用时间的长短,即寿命的长短,这种性质又称为"存在性".变量在程序中说明的位置决定了该变量的作用域,即在什么范围内可以引用该变量,"可引用"又称为"可见",所以这种性质又称为"可见性".计算机的内存和CPU中的寄存器都可以存放数据,变量究竟存放在何处则由存储类来决定.存储类型用来说明变量的作用域,生存期,可见性和存储方式.下面解释几个概念:1 作用域:是该变量在其上有定义的程序部分,通俗的说,即该变量起作用的某个程序区域。
2 变量的生存期:是指它从产生到消亡的存在时间,即变量从定义开始到它所占有的存储空间被系统收回为止的这段时间。
3 变量的可见性的含义:在某个程序区域,可以对变量进行访问(或称存取)操作,我们则称该变量在该区域为可见的,否则为不可见的。
再引入几个概念:4 全局变量和局部变量在一个函数内部或复合语句内部定义的变量叫内部变量,又称为"局部变量"。
在函数外定义的变量称为外部变量,又称为"全局变量"。
如:int x ;void main( )int a, b;float c;x 定义在函数外,是全局int 型变量a,b定义在main()函数内是局部int 型变量c 定义在main()函数内是局部float 型变量6 动态存储变量和静态存储变量。
在程序运行期间,所有的变量均需占有内存,有的是临时占用内存,有的是整个程序运行过程中从头到尾占用内存。
对于在程序运行期间根据需要进行临时性动态分配存储空间的变量称为"动态存储变量",对于在程序运行期间永久性占用内存的变量称为"静态存储变量".一个正在运行的程序可将其使用内存的情况分为如下三类(如下图):程序代码区: 程序的指令代码存放在程序代码区。
变量的存储类型_C语言程序设计(第2版)_[共3页]
885.6.2 变量的存储类型变量的存储类型是指编译器为变量分配内存的方式,它决定变量的生存期,即变量何时生成,何时消失。
变量有4种不同的存储类型,一般以4个不同的关键字来标识。
(1)auto:自动存储类型标识,也是定义变量时缺省的存储类型。
(2)static:静态存储类型标识,用于变量定义中,表明该变量位于静态存储区。
(3)extern:外部存储类型标识,仅用于变量声明中,表示该变量在本文件的后面给出定义,或该变量来自于同一个程序的另一个文件中。
(4)register:寄存器存储类型标识,用于变量定义中,表明该变量位于CPU的寄存器区域,加快了访问变量的速度。
C语言中的变量有存储类型和数据类型两个属性,因此,变量的完整定义格式:[存储类型关键字] 变量类型名变量名1 [ ,变量名2 , ......变量名n ] ;之前的变量定义,其存储类别为自动存储类型,缺少了关键字auto。
关键字auto是唯一可被缺省的存储类型关键字。
下面将介绍4种不同存储类型的变量。
1.用auto定义自动变量之前所用的所有变量(包括形式参数变量)均为自动变量,缺省了关键字auto。
用auto定义自动存储类别的变量的完整形式为:auto 变量类型名变量名1 [ ,变量名2 , ......变量名n ] ;例如:auto int sum=0,i ;在函数内定义的自动局部变量,其“自动”的含义:在程序运行进入函数体或语句块时该变量自动获得内存空间,退出函数体或语句块时所占内存空间被自动回收。
其生命期就是所在的函数或语句块被执行时。
自动局部变量占用的是内存中的栈空间,读者可以查阅相关资料深入了解。
自动局部变量在生存期内均起作用,因此作用域是其所在的函数或语句块。
正因为如此,就不难解释,例5.9中在main和sumDigit函数中同名的自动局部变量sum,不会互相干扰,因为它们各自在不同的时机占用着不同的存储单元,并且有着不同的作用域。
变量类型存储方法
变量类型存储方法在程序设计中,变量是用来存储数据的一种形式。
变量类型可以决定变量可以存储的数据以及对这些数据进行的操作。
常见的变量类型包括整数(int)、浮点数(float)、布尔值(bool)、字符串(string)等。
每种类型都有不同的存储方法和限制。
1. 整数(int)类型:整数是没有小数部分的数值,可以是正数、负数或零。
整数类型在内存中通常被表示为固定长度的二进制补码。
它的存储方法取决于它的长度,如8位、16位、32位或64位。
整数类型可以进行算术运算,如加减乘除和取模等。
2. 浮点数(float)类型:浮点数是带有小数部分的数值,用于存储具有更高精度和范围的实数。
浮点数类型在内存中通常被表示为浮点数格式,如IEEE754标准。
它的存储方法采用一种指数和尾数的表示方法,可以进行基本的数学运算,如加减乘除。
3. 布尔值(bool)类型:布尔值只有两个取值,即True和False。
在内存中通常用一个字节存储,其中True表示1,False表示0。
布尔类型可以进行逻辑运算,如与(and)、或(or)和非(not)等。
4. 字符串(string)类型:字符串是由字符组成的文本。
在内存中通常使用字符数组或指针来表示字符串。
每个字符通常占用一个字节的存储空间。
字符串类型可以进行拼接、截取和比较等操作。
除了以上常见的类型,还有很多其他类型,如数组、列表、元组、字典等。
它们各自有不同的存储方法和特点。
1. 数组(array)类型:数组是一种存储多个相同类型元素的数据结构。
在内存中通常按连续的位置存储,可以通过下标访问和修改数组中的元素。
2. 列表(list)类型:列表是一种存储多个元素的数据结构,可以包含不同类型的元素。
在内存中通常使用链表或数组实现,可以通过索引访问和修改列表中的元素。
3. 元组(tuple)类型:元组类似于列表,是一种存储多个元素的数据结构,但与列表不同的是,元组是不可变的(immutable),即不能修改它们的元素。
变量存储类型_预编译_全局
变量存储类型
变量存储类型为:
5.
volatile:(可变变量)不能对变量进行优 volatile:(可变变量)不能对变量进行优 化,每次必须取原地址数据; 如: void add(void) { volatile int i; for( for(i=0;i< 30000;i++){...}; }
变量存储类型
变量存储类型
变量存储类型为:
4.
const:常数变量。变量的值只能在定义时赋 const:常数变量。变量的值只能在定义时赋 值(初始化),而且赋值后其值不能被改变; 值(初始化),而且赋值后其值不能被改变; 如: void add(void) { const int MAX=100; int i; i; for( for(i=0;i< MAX;i++){...}; }
只在局部变量定义的函数或定义的复合语句中有效超出此函数或定义的复合语句中有效超出此函数或复合语句时变量不能使用
全局变量与局部变量
武汉电力职业技术学院机电工程系 郭小进
全局变量和局部变量
局部变量:在函数内部或复合语句内部 局部变量:在函数内部或复合语句内部 定义,称为局部变量; 作用范围:只在局部变量定义的函数或 作用范围:只在局部变量定义的函数或 定义的复合语句中有效,超出此函数或 复合语句时变量不能使用;
局部变量示例
a、b、c只在 、 、 只在 只在main中有效 中有效 c只在函数 中有效 只在函数m中有效 只在函数
int m (int a,int b); main() { int a,b,c; scanf(“%d”,&a,&b); c=m(a,b); printf(“m=%d”,c); }
17变量存储属性17页
变量的存储属性
? 概述
? 变量是对程序中数据的存储空间的抽象
内存
main() { int a;
a=10; printf(“%d”,a);
}
2000
2001
10
程序中使用变量名对内存操作
上页
下页
主页 结束
…….
变量的存储属性
?概述
? 变量是对程序中数据的存储空间的抽象
? 变量的属性
– 数据类型:变量所持有的数据的性质(操作属性)
/*Input */
ave=average(score,10);
printf(max=%6.2f\nmin=%6.2f\n
average=%6.2f\n, max,min,ave); }
上页
下页
主页 结束
扩 展 后 c1,c2
的 作 用 范 围
扩 展 后 c1,c2
的 作 用 范 围
int p=1,q=5;
运行结果:max=13
extern int a,b; int max() { int z;
z=a>b?a:b; return(z); } main() { printf(max=%d,max()); } int a=13,b=-8;
上页
下页
主页 结束
例 外部变量与局部变量
/*ch7_17.c*/ int a=3,b=5; max(int a, int b) { int c;
– 存储属性
? 存储器类型:静态存储区、动态存储区
? 生存期:变量在某一时刻存在-------静态变量与动态变量
? 作用域:变量在某区域内有效-------局部变量与全局变量
? 变量的存储类型
