变量的存储类别题库_第1页
变量的存储类别题库_第2页
变量的存储类别题库_第3页
变量的存储类别题库_第4页
变量的存储类别题库_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第七章 变量的存储类别一、选择题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+; else static int a=5; t += a+; return t+a+;void main() int s=a, i;for( i=0; i<3; i+) s+=f(i);printf("%dn", s);程序运行后的输出结果是_。 A)26 B)28 C)29 D)24答案: C2. 凡是函数中未指定存储类别的局

2、部变量,其默认的存储类别是 。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) 在本函数范

3、围内有效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 ("%dn", t);int min(int a,int b)int

4、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,%dn",m,n,t);printf("%d,%d,%dn",m,n,t);A) 22,11,5 B)22,10,20 18,5,6 22,3,6C) 32,9,5 D) 16,21,6 10,10,20 22,3,9答案:B

5、9以下叙述中正确的是 。(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("%dn",n);(A)3 (B)4 (C

6、)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("%dn",s);执行后输出结果是 。(A)10 (B)9 (C)7 (D)8答案:C12以下只有在使用时才为该类型变量分配内存的存储类说明是 。(A)auto和static (B)auto和register (C)register和static (D)extern和register答案:B13.下

7、面叙述中正确的是 。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=

8、0;i<5;i+)a+=f( );printf("%dn",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,%dn", 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. 以下程

9、序:#include <stdio.h>void fun (int *s) static int j=0;dosj+=sj+1;while (+j<2);void main( ) int k, a10=1,2,3,4,5;for (k=1;k<3;k+) fun(a);for(k=0;k<5;k+) printf("%d",ak);其输出结果是A)34756 B)23445 C)35745 D)12345答案:C)18. 以下程序的输出结果是 。#include <stdio.h>int a=1;int fun(int k)stat

10、ic int a=5;a+=k; printf("%d ",a);return(a);void main( )int b=3;printf("%dn",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=%dn",*x,y,c);void

11、 main ( ) int a=1,b=4;test(&a,b);printf ("a=%d,b=%d,c=%dn",a,b,c);(A)x=1,y=7,c=3 (B)x=3,y=7,c=1 a=3,b=4,c=1 a=4,b=3,c=1(C)x=3,y=7,c=1 (D)x=3,y=4,c=1 a=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

12、main ( )int a=3;fun(a);d+=a+;printf ("%dn",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全局变量可以为其它

13、函数所共用,它的有效范围为:从_【_1_】_的位置开始到文件结束。答案:【1】定义7建议不在必要时不要使用全局变量,因为它使函数的_【_1_】_降低了。答案:【1】通用性或可靠性8外部变量的定义只能有_【_1_】_次,而外部变量的说明可以有_【_2_】_次。答案:【1】一;【2】多9对外部变量的初始化只能在_【_1_】_时进行。答案:【1】定义10如果在局部变量的作用范围内与外部变量同名,则_【_1_】_变量不起作用。答案:【1】外部11从变量的_【_1_】_(即从空间)角度来分,可以分为全局变量和局部变量。答案:【1】作用域12从变量值存在的时间(即_【_1_】_)角度来分,可以分为静态存储

14、变量和动态存储变量。答案:【1】生存期13在C语言中每一个变量和函数有两个属性:_【_1_】_和数据的存储类别。答案:【1】数据类型14存储类别指的是数据在_【_1_】_中的存储方法。答案:【1】内存15在C语言中,存储方法分为两大类:静态存储类和动态存储类,具体包含四种:自动的、_【_1_】_、静态的、_【_2_】_。前两种属于动态存储类,后两种属于静态存储类。答案:【1】寄存器的;【2】外部的16静态存储是整个程序运行时间都存在,而动态存储则是在调用函数时临时分配单元。所以,形式参数属于_【_1_】_存储类。答案:【1】动态17自动变量、寄存器变量、形式参数都属于局部变量,在离开函数时,其

15、值_【_1_】_,而静态局部变量在离开函数时,其值_【_2_】_。答案:【1】就消失;【2】仍保留18如果需要保留函数上一次调用结束时的值,或变量初始化后只被引用而不改变其值,则这时采用_【_1_】_变量比较方便,以免每次调用时重新赋值。答案:【1】静态19如不必要,不要多用静态局部变量。不仅长期占用内存不释放,浪费空间,而且当调用次数多时往往弄不清其当前值是什么,降低了程序的_【_1_】_。答案:【1】可读性20对自动变量如果不赋初值,则它的值是一个_【_1_】_值。答案:【1】不确定的21对静态变量和外部变量是在编译时赋初值的,即只赋初值一次。如果在定义时不赋初值的话,则系统自动对数值型变

16、量赋初值_【_1_】_或对字符型变量赋初值_【_2_】_。答案:【1】0;【2】'0'22全局变量包括外部变量和静态外部变量,两者的区别是:_【_1_】_变量只限于本文件引用,而_【_2_】_变量允许其它文件引用。答案:【1】静态外部;【2】外部23函数本质上是全局的,因为一个函数要被另外的函数调用,但是,根据函数能否被其它源文件调用,将函数区分为_【_1_】_函数和_【_2_】_函数。答案:【1】内部;【2】外部24如果在定义函数时省略关键字_【_1_】_,则隐含为外部函数。答案:【1】extern25在定义内部函数时,需在函数类型前面加上关键字_【_1_】_。答案:【1】s

17、tatic26. 以下程序的正确运行结果是_。#include <stdio.h>int f(int a);void main() int a=2,k;for(k=0;k<3;k+) printf("%d", f (a);int f(int a) int b=0; static int c=3;b+; c+; return (a+b+c);答案:78927. 以下程序的正确运行结果是_。#include <stdio.h>int a=4,b=6;int max(int a,int b)int c;c=a>b?a:b;return(c);v

18、oid main()int a=8;printf("%dn",max(a,b);答案:828. 以下程序的正确运行结果是_。#include <stdio.h>int f(int a)auto int b=0;static c=2;b+;c+;return(a+b+c);void main()int a=1,n;for(n=0;n<=2;n+)printf("%d",f(a);答案:56729. 以下程序的正确运行结果是_。#include <stdio.h>int n=1;void f();void main( )stat

19、ic int x=10;int y;y=n;f();printf ("main:%d,%d,%dn", x,y,n);void f()static int x=5;int y=4;x=x+1;n=n+10;y=y+n;printf ("f:%d,%d,%dn", x,y,n);答案:f:6,15,11main:10,1,1130. 以下程序的正确运行结果是_。#include <stdio.h>int m=1;int n=2;int mul(int a,int b);void main( )int m=5,n=10,s;s=mul(m,n);

20、printf ("m+n=%dn", s);int mul(int a,int b)int c;c=a*b;return(c);答案:m+n=5031下列程序的输出结果为 #include <stdio.h>int a=0,b=0;void fun( ) int a=5;printf("%d,%d",a,b);void main( ) b=5;fun( );printf("%d,%dn",a,b);答案:5,50,532以下程序的输出结果是 。#include <stdio.h>int fun(int x,in

21、t y) static int m=0,i=2;i+=m+1;m=i+x+y;return m;void main( ) int j=4,m=1,k;k=fun(j,m);printf("%d,",k);k=fun(j,m);printf("%dn",k);答案: 8,1733以下程序的执行结果是 。#include <stdio.h>void func(int a);void main( ) int k=4; func(k); func(k);void func(int a) static int m=0;m+=a;printf("

22、;x=%d,",m); 答案:x=4, x=8,34下面程序运行后的输出结果是 。#include <stdio.h>int x=3;void incre( );void main( ) int i;for(i=1;i<x;i+) incre( ); void incre( ) static int x=1;x*=x+1;printf("%d",x);答案:2635. 以下程序的输出结果是 。#include <stdio.h>void main( ) int a=3,b=2,c=1;c-=+b;b*=a+c; int b=5, c=

23、12;c/=b*2;a -=c;printf("%d,%d,%d,",a,b,c);a += -c;printf("%d,%d,%dn",a,b,c);答案:2,5,1,2,3,-236. 要使一个局部变量在两次函数调用中保持其值,必须说明成是 存储类型的。答案:Static37. 以下程序的运行结果为 。#include <stdio.h>void as();void main ( )int i;for (i=0;i<2;i+)as ( );void as ( )int lv=0;static int sv=0;printf (&qu

24、ot;lv=%d,sv=%d",lv,sv);lv+;sv+;return;答案:lv=0,sv=0lv=0,sv=1三、编程题页:15编程题是新加入的,请审查1.编写程序,统计从键盘上输入的字符包含的单词数,单词之间用空格分隔。【要求】分析题意,建立数据模型,设计算法。编程答案:#include <stdio.h>main()char arrstr100,ch1,ch2=' 'int i,num;i=0;num=0;gets(arrstr);while(arrstri!='0')ch1=arrstri;if(i=0) ch2='

25、'else ch2=arrstri-1;if(ch1!=' '&&ch2=' ') num+;i+;printf("There are %d words.n",num);2.编写程序。将二维数组的行列互换后存到另一个二维数组中。【要求】分析题意,建立数据模型,设计算法。编程答案:main()int arr123=1,2,3,4,5,6; int arr232,i,j;printf("arr1:n");for(i=0;i<=1;i+) for(j=0;j<=2;j+) printf(&qu

26、ot;%6d",arr1ij);arr2ji=arr1ij; printf("n"); printf("arr1:n");for (i=0;i<=2;i+) for(j=0;j<=1;j+) printf("%6d",arr2ij); printf("n"); 3.编写程序。输出两个数值中较大者。(1)自定义函数max(x,y),返回值为x,y中较大者。【要求】分析题意,建立数据模型,设计算法。编程(2)在主函数main中输出。【要求】分析题意,建立数据模型,设计算法。编程答案:int y=5;main()int x=10;printf("%d",max(x,y);max(x,y)int z;z=x>y? x:y;return(z);4.编写程序。计算英文句子中最长单词包含的字符数。(该句中只包含字符和空格,各单词间

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论