任务27:全局变量的作用域和生存期 《编程语言-C语言》45分钟专题训练

| 2份
| 32页
| 93人阅读
| 1人下载

内容正文:

湖南省职教高考《编程语言—C语言》45分钟专题训练专辑,共43份试卷。试卷命题与高考紧密相关,精选具有代表性和典型性的高考常考题。旨在帮助学生系统地复习和巩固计算机类理论知识,熟悉高考题型和命题规律,提高解题能力和应试技巧,为高考取得优异成绩打下坚实的基础,本训练卷适用于即将参加计算机类高考的学生。与本专辑配套的还有湖南省职教高考《计算机应用基础》《计算机组装与维护》《计算机网络技术》45分钟专题训练专辑,欢迎同学和老师们下载使用。 《编程语言—C语言》 项目五: 函数 第27卷: 全局变量的作用域和生存期 时间:45分钟 总分:100分 班级___________ 姓名__________ 学号__________ 成绩________ 一、选择题(共23小题,每小题2分,共46分) 1.在C语言中,函数的隐含存储类别是( ) A. auto B. static C. extern D.register 2.下列叙述中,不正确的一项是( ) A.局部变量可以和全局变量同名,在局部变量的作用范围内,全局变量此时被屏蔽 B.全局变量可以被其作用域内的所有函数共享 C.全局变量可以用static关键字修饰,作用域是整个程序 D.全局变量增加了函数之间的耦合性,不利于模块化,应尽量避免使用 3.在一个源程序文件中定义的全局变量,其默认的有效范围是( ) A.本源程序文件的全部范围 B.所有源程序文件 C.从定义变量的位置开始到源程序文件结束 D.在整个main()函数内 4.执行以下程序段的输出结果是( ) int i; void prt( ) { for(i=5;i<8;i++) printf("%c",'*');} main( ) { for(i=5;i<=8;i++) prt( ); getch();} A.*** B.* * * C.*** *** D.*** *** *** *** 5.在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是( ) A.extern B.register C.auto D.static 6.下列有关全局变量的叙述中,不正确的一项是( ) A.全局变量的作用域是从定义位置开始至源文件结束 B.全局变量是在函数外部任意位置上定义的变量 C.用extern说明符可以限制全局变量的作用域 D.全局变量的生存期贯穿于整个程序的运行期间 7.执行以下程序段的输出结果是( ) int x=0; void func() {int x=30; printf("%d",x);} main() {printf("%d",x); func(); printf("%d",x); getch();} A.0300 B.1300 C.0310 D.0301 8.执行以下程序段的输出结果是( ) extern int a,b,n; int f() {int m,n; m=n=1;n+=a;a++; return m+n+a;} int a=2,b=3,n=4; main() {int k; for(k=0;k<2;k++) printf("%d",f()); printf(" ");getch();} A.77 B.67 C.78 D.79 9.执行以下程序段的输出结果是( ) int a=2; int f() {static int n; int m; m=n=0; n++;a++;m++; return m+n+a;} main() {int k; for(k=0;k<3;k++) printf("%d",f()); printf(" ");getch();} A.567 B.579 C.5811 D.555 10.执行以下程序段的输出结果是( ) int a=4,b=2; main() {int i; for(i=0;i<2;i++) printf("%d%d",a=a+b,a*b); getch();} A.612816 B.611628 C.611661 D.612612 11.执行以下程序段的输出结果是( ) int a=4,b=2; main() {printf("%d%d",a+++b,b/2); {int a=4,b=2; printf("%d%d",a,b);} getch();} A.6161 B.6142 C.6141 D.4261 12.执行以下程序段的输出结果是( ) int a=1,b=2; void fun1(int a,int b) {printf("%d%d",a++,++b);} main() {fun1(5,6); printf("%d%d",++a,b--); {int a=3,b=9; printf("%d%d",a,b);} getch();} A.572239 B.223957 C.573922 D.576823 13.执行以下程序段的输出结果是( ) int a=1,b=2; void fun1(int a,int b) {printf("%d,%d,",a,b);} main() {fun1(5,6); printf("%d,%d,",a,b); getch();} A.1,2,5,6, B.6,5,1,2, C.1,5,6,2, D.5,6,1,2, 14.执行以下程序段的输出结果是( ) int b=2; int fun(int k) {b=k+b; return b;} main() {int a[10]={1,2,3,4,5,6,7,8},i; for(i=3;i<5;i++) {b=fun(a[i])+b; printf("%d",b);} printf(" "); getch();} A.1234 B.1345 C.2345 D.1245 15.执行以下程序段的输出结果是( ) void fun2(char a,char b) {printf("%c%c",a,b);} char a='A',b='B'; void fun1() {a='B';b='d';} main() {fun1(); printf("%c%c",a,b); fun2('W','Y'); getch();} A.BDWY B.WYBD C.BdWY D.WYBd 16.执行以下程序段的输出结果是( ) int k=1; void fun(int m) {m+=k;k+=m; {char k='B'; printf("%d,",k-'A');} printf("%d,%d,",m,k);} main() {int i=3;fun(i); printf("%d",k); getch();} A.1,4,4,4 B.1,1,5,5, C.1,1,1,5 D.1,4,5,5 17.执行以下程序段的输出结果是( ) static int f=1; int func(int n) {f=f+n; return f;} main() {int i; for(i=2;i<=3;i++) printf("%d",func(i)); getch();} A.30 B.36 C.33 D.32 18.执行以下程序段的输出结果是( ) int n=0; int f(int m) {n+=m; return n;} main() {int n=1; printf("%d",f(++n)); printf("%d",f(n++)); getch();} A.24 B.23 C.12 D.25 19.执行以下程序段的输出结果是( ) main() {int max(int,int ); extern int A,B; printf("%d",max(A,B)); getch();} int A=12,B=10; int max(int x,int y) {int z; z=x>y?x:y; return z;} A.10 B.12 C.22 D.0 20.执行以下程序段的输出结果是( ) int i=5; main( ) { int i=3; { int i=10;i++; printf("%d ",i);} f1( ); i+=1; printf("%d ",i);getch();} int f1( ) { i=i+1; return(i);} A.11 4 B.10 3 C.3 10 D.4 11 21.执行以下程序段的输出结果是( ) void num() {int a=15,b=10; x=a-b;y=a+b;} int x,y; main() {int a=7,b=5; x=a+b; y=a-b; num(); printf("%d,%d ",x,y); getch();} A.12,2 B.5,25 C.1,12 D.有语法错误 22.执行以下程序段的输出结果是( ) main() {extern int a,b; ++a;b+=a; printf("a=%d,b=%d",a,b);getch();} int a=5,b=10; A.a=5,b=10 B.a=10,b=5 C.a=6,b=16 D.a=16,b=6 23.执行以下程序段的输出结果是( ) int a,b; void fun() {a=100;b=200;} main() {int a=5,b=7; fun(); printf("%d%d ",a,b);getch();} A.57 B.56 C.75 D.55 二、程序运行结果题(本题共7小题,每题3分,共21分) 24.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> int a=5,b=10; void modify() {a++; b--; printf("pos1:a=%d,b=%d ",a,b);} main() {modify(); printf("pos2:a=%d,b=%d ",a,b); getch();} 25.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> int x=5,y=10; void modify() {int x=5,y=10; x+=y; y-=x; printf("pos1:x=%d,y=%d ",x,y);} main() {modify(); printf("pos2:x=%d,y=%d ",x,y); getch();} 26.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> int a=4; int f(int n) {int t=0; static int a=5; if(n%2) {int a=6;t+=a++;} else {int a=7;t+=a++;} return t+a++;} main() {int s=a,i=0; for( ;i<2;i++) s+=f(i); printf("%d ",s);getch();} 27.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> int a=0,b=0; void fun() {int a=5; printf("%d,%d ",a,b);} main() {b=5; fun(); printf("%d,%d ",a,b); getch();} 28.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> void num() {extern int x,y; int a=15,b=10; x=a-b;y=a+b;} int x,y; main() {int a=7,b=5; x=a+b; y=a-b; num(); printf("%d,%d ",x,y); getch();} 29.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> int m=4; int func(int x,int y) { int m=1; return(x*y-m);} main() {int a=2,b=3; printf("%d,",m); printf("%d ",func(a,b)/m);getch();} 30.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> void sub(int x,int y); int xl=30,x2=40; main( ) {int x3=10,x4=20; sub(x3,x4); sub(x2,xl); printf("%d,%d,%d,%d ",x3,x4,xl,x2);getch();} void sub(int x,int y) { xl=x;x=y;y=xl;} 三、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。每处3分,共9分) 31.下列程序的功能是:统计由实参传来的一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串并输出统计信息。程序中有三处错误,请改正。 L1 #include <stdio.h> L2 #include<conio.h> L3 int letter,digit,space,others; L4 main() L5 {void count(char [ ]); L6 char text[80]; L7 printf("input string: "); L8 gets(text); L9 letter=0;digit=0;space=0;others=0; L10 count(text); printf("letter:%d digit:%d space:%d others:%d ",letter,digit,space,others); L11 getch();} L12 void count(char str[ ]) L13 {int i; L14 for(i=0;str[i]=='\0';i++) L15 if((str[i]>='a'||str[i]<='z')&&(str[i]>='A'||str[i]<='Z')) L16 letter++; L17 else if(str[i]>='0'&&str[i]<='9') L18 digit++; L19 else if(str[i]==33) L20 space++; L21 else others++;} 答案: L14 for(i=0;str[i]!='\0';i++) L15 if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z')) L19 else if(str[i]==32)或else if(str[i]== ' ') 四、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分) 32.下列程序的功能是:将一个5*5的二维数组的左下半三角元素全部置0,其他元素全部置1,在主函数中输出该数组的值。请填空。 #include <math.h> #include <stdio.h> #include<conio.h> #include<string.h> int 【1】; void fun(int a[ ][5]) {for(i=0;i<N;i++) for(j=0;j<N;j++) if(【2】) a[i][j]=0; else【3】;} main() {int a[5][5],i,j; fun(a); for(i=0;i<N;i++) {for(j=0;j<N;j++) printf("%d ",【4】); printf(" ");} getch();} 33.下列程序的功能是使用递归法将一个整数n转换成字符串,例如:输入483,应输出字符串“483”,n的位数不确定,可以是任意位数的整数。请填空。 #include <stdio.h> #include<conio.h> char str[100]; int【1】; void convert(int n); main() {int number; printf("请输入一个整数:"); scanf("%d",&number); printf("output:"); if(【2】) {str[k++]='-'; number=-number;} convert(number); printf("%s ",str); getch();} void convert(int n) {int i; if(【3】) convert(i); str[k++]=【4】;} 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$ 湖南省职教高考《编程语言—C语言》45分钟专题训练专辑,共43份试卷。试卷命题与高考紧密相关,精选具有代表性和典型性的高考常考题。旨在帮助学生系统地复习和巩固计算机类理论知识,熟悉高考题型和命题规律,提高解题能力和应试技巧,为高考取得优异成绩打下坚实的基础,本训练卷适用于即将参加计算机类高考的学生。与本专辑配套的还有湖南省职教高考《计算机应用基础》《计算机组装与维护》《计算机网络技术》45分钟专题训练专辑,欢迎同学和老师们下载使用。 《编程语言—C语言》 项目五: 函数 第27卷: 全局变量的作用域和生存期 时间:45分钟 总分:100分 班级___________ 姓名__________ 学号__________ 成绩________ 一、选择题(共23小题,每小题2分,共46分) 1.在C语言中,函数的隐含存储类别是( ) A. auto B. static C. extern D.register 【答案】C 2.下列叙述中,不正确的一项是( ) A.局部变量可以和全局变量同名,在局部变量的作用范围内,全局变量此时被屏蔽 B.全局变量可以被其作用域内的所有函数共享 C.全局变量可以用static关键字修饰,作用域是整个程序 D.全局变量增加了函数之间的耦合性,不利于模块化,应尽量避免使用 【答案】C。静态全局变量的作用与限于其所在文件,不能被其他文件中的函数使用。 3.在一个源程序文件中定义的全局变量,其默认的有效范围是( ) A.本源程序文件的全部范围 B.所有源程序文件 C.从定义变量的位置开始到源程序文件结束 D.在整个main()函数内 【答案】C 4.执行以下程序段的输出结果是( ) int i; void prt( ) { for(i=5;i<8;i++) printf("%c",'*');} main( ) { for(i=5;i<=8;i++) prt( ); getch();} A.*** B.* * * C.*** *** D.*** *** *** *** 【答案】A 5.在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是( ) A.extern B.register C.auto D.static 【答案】D 6.下列有关全局变量的叙述中,不正确的一项是( ) A.全局变量的作用域是从定义位置开始至源文件结束 B.全局变量是在函数外部任意位置上定义的变量 C.用extern说明符可以限制全局变量的作用域 D.全局变量的生存期贯穿于整个程序的运行期间 【答案】C 7.执行以下程序段的输出结果是( ) int x=0; void func() {int x=30; printf("%d",x);} main() {printf("%d",x); func(); printf("%d",x); getch();} A.0300 B.1300 C.0310 D.0301 【答案】A 8.执行以下程序段的输出结果是( ) extern int a,b,n; int f() {int m,n; m=n=1;n+=a;a++; return m+n+a;} int a=2,b=3,n=4; main() {int k; for(k=0;k<2;k++) printf("%d",f()); printf(" ");getch();} A.77 B.67 C.78 D.79 【答案】D 9.执行以下程序段的输出结果是( ) int a=2; int f() {static int n; int m; m=n=0; n++;a++;m++; return m+n+a;} main() {int k; for(k=0;k<3;k++) printf("%d",f()); printf(" ");getch();} A.567 B.579 C.5811 D.555 【答案】A 10.执行以下程序段的输出结果是( ) int a=4,b=2; main() {int i; for(i=0;i<2;i++) printf("%d%d",a=a+b,a*b); getch();} A.612816 B.611628 C.611661 D.612612 【答案】A 11.执行以下程序段的输出结果是( ) int a=4,b=2; main() {printf("%d%d",a+++b,b/2); {int a=4,b=2; printf("%d%d",a,b);} getch();} A.6161 B.6142 C.6141 D.4261 【答案】B 12.执行以下程序段的输出结果是( ) int a=1,b=2; void fun1(int a,int b) {printf("%d%d",a++,++b);} main() {fun1(5,6); printf("%d%d",++a,b--); {int a=3,b=9; printf("%d%d",a,b);} getch();} A.572239 B.223957 C.573922 D.576823 【答案】A 13.执行以下程序段的输出结果是( ) int a=1,b=2; void fun1(int a,int b) {printf("%d,%d,",a,b);} main() {fun1(5,6); printf("%d,%d,",a,b); getch();} A.1,2,5,6, B.6,5,1,2, C.1,5,6,2, D.5,6,1,2, 【答案】D 14.执行以下程序段的输出结果是( ) int b=2; int fun(int k) {b=k+b; return b;} main() {int a[10]={1,2,3,4,5,6,7,8},i; for(i=3;i<5;i++) {b=fun(a[i])+b; printf("%d",b);} printf(" "); getch();} A.1234 B.1345 C.2345 D.1245 【答案】A 15.执行以下程序段的输出结果是( ) void fun2(char a,char b) {printf("%c%c",a,b);} char a='A',b='B'; void fun1() {a='B';b='d';} main() {fun1(); printf("%c%c",a,b); fun2('W','Y'); getch();} A.BDWY B.WYBD C.BdWY D.WYBd 【答案】C 16.执行以下程序段的输出结果是( ) int k=1; void fun(int m) {m+=k;k+=m; {char k='B'; printf("%d,",k-'A');} printf("%d,%d,",m,k);} main() {int i=3;fun(i); printf("%d",k); getch();} A.1,4,4,4 B.1,1,5,5, C.1,1,1,5 D.1,4,5,5 【答案】D 17.执行以下程序段的输出结果是( ) static int f=1; int func(int n) {f=f+n; return f;} main() {int i; for(i=2;i<=3;i++) printf("%d",func(i)); getch();} A.30 B.36 C.33 D.32 【答案】B 18.执行以下程序段的输出结果是( ) int n=0; int f(int m) {n+=m; return n;} main() {int n=1; printf("%d",f(++n)); printf("%d",f(n++)); getch();} A.24 B.23 C.12 D.25 【答案】A 19.执行以下程序段的输出结果是( ) main() {int max(int,int ); extern int A,B; printf("%d",max(A,B)); getch();} int A=12,B=10; int max(int x,int y) {int z; z=x>y?x:y; return z;} A.10 B.12 C.22 D.0 【答案】B 20.执行以下程序段的输出结果是( ) int i=5; main( ) { int i=3; { int i=10;i++; printf("%d ",i);} f1( ); i+=1; printf("%d ",i);getch();} int f1( ) { i=i+1; return(i);} A.11 4 B.10 3 C.3 10 D.4 11 【答案】A 21.执行以下程序段的输出结果是( ) void num() {int a=15,b=10; x=a-b;y=a+b;} int x,y; main() {int a=7,b=5; x=a+b; y=a-b; num(); printf("%d,%d ",x,y); getch();} A.12,2 B.5,25 C.1,12 D.有语法错误 【答案】D 22.执行以下程序段的输出结果是( ) main() {extern int a,b; ++a;b+=a; printf("a=%d,b=%d",a,b);getch();} int a=5,b=10; A.a=5,b=10 B.a=10,b=5 C.a=6,b=16 D.a=16,b=6 【答案】C 23.执行以下程序段的输出结果是( ) int a,b; void fun() {a=100;b=200;} main() {int a=5,b=7; fun(); printf("%d%d ",a,b);getch();} A.57 B.56 C.75 D.55 【答案】A 二、程序运行结果题(本题共7小题,每题3分,共21分) 24.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> int a=5,b=10; void modify() {a++; b--; printf("pos1:a=%d,b=%d ",a,b);} main() {modify(); printf("pos2:a=%d,b=%d ",a,b); getch();} 【答案】 pos1:a=6,b=9 pos2:a=6,b=9 25.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> int x=5,y=10; void modify() {int x=5,y=10; x+=y; y-=x; printf("pos1:x=%d,y=%d ",x,y);} main() {modify(); printf("pos2:x=%d,y=%d ",x,y); getch();} 【答案】 pos1:x=15,y=-5 pos2:x=5,y=10 26.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> int a=4; int f(int n) {int t=0; static int a=5; if(n%2) {int a=6;t+=a++;} else {int a=7;t+=a++;} return t+a++;} main() {int s=a,i=0; for( ;i<2;i++) s+=f(i); printf("%d ",s);getch();} 【答案】28 27.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> int a=0,b=0; void fun() {int a=5; printf("%d,%d ",a,b);} main() {b=5; fun(); printf("%d,%d ",a,b); getch();} 【答案】5,5 0,5 28.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> void num() {extern int x,y; int a=15,b=10; x=a-b;y=a+b;} int x,y; main() {int a=7,b=5; x=a+b; y=a-b; num(); printf("%d,%d ",x,y); getch();} 【答案】5,25 29.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> int m=4; int func(int x,int y) { int m=1; return(x*y-m);} main() {int a=2,b=3; printf("%d,",m); printf("%d ",func(a,b)/m);getch();} 【答案】4,1 30.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> void sub(int x,int y); int xl=30,x2=40; main( ) {int x3=10,x4=20; sub(x3,x4); sub(x2,xl); printf("%d,%d,%d,%d ",x3,x4,xl,x2);getch();} void sub(int x,int y) { xl=x;x=y;y=xl;} 【答案】10,20,40,40 三、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。每处3分,共9分) 31.下列程序的功能是:统计由实参传来的一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串并输出统计信息。程序中有三处错误,请改正。 L1 #include <stdio.h> L2 #include<conio.h> L3 int letter,digit,space,others; L4 main() L5 {void count(char [ ]); L6 char text[80]; L7 printf("input string: "); L8 gets(text); L9 letter=0;digit=0;space=0;others=0; L10 count(text); printf("letter:%d digit:%d space:%d others:%d ",letter,digit,space,others); L11 getch();} L12 void count(char str[ ]) L13 {int i; L14 for(i=0;str[i]=='\0';i++) L15 if((str[i]>='a'||str[i]<='z')&&(str[i]>='A'||str[i]<='Z')) L16 letter++; L17 else if(str[i]>='0'&&str[i]<='9') L18 digit++; L19 else if(str[i]==33) L20 space++; L21 else others++;} 答案: L14 for(i=0;str[i]!='\0';i++) L15 if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z')) L19 else if(str[i]==32)或else if(str[i]== ' ') 四、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分) 32.下列程序的功能是:将一个5*5的二维数组的左下半三角元素全部置0,其他元素全部置1,在主函数中输出该数组的值。请填空。 #include <math.h> #include <stdio.h> #include<conio.h> #include<string.h> int 【1】; void fun(int a[ ][5]) {for(i=0;i<N;i++) for(j=0;j<N;j++) if(【2】) a[i][j]=0; else【3】;} main() {int a[5][5],i,j; fun(a); for(i=0;i<N;i++) {for(j=0;j<N;j++) printf("%d ",【4】); printf(" ");} getch();} 答案:①N=5,i,j ②j<=i ③a[i][j]=1 ④a[i][j] 33.下列程序的功能是使用递归法将一个整数n转换成字符串,例如:输入483,应输出字符串“483”,n的位数不确定,可以是任意位数的整数。请填空。 #include <stdio.h> #include<conio.h> char str[100]; int【1】; void convert(int n); main() {int number; printf("请输入一个整数:"); scanf("%d",&number); printf("output:"); if(【2】) {str[k++]='-'; number=-number;} convert(number); printf("%s ",str); getch();} void convert(int n) {int i; if(【3】) convert(i); str[k++]=【4】;} 答案:①k=0 ②number<0 ③(i=n/10)!=0 ④n%10+'0' 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$

资源预览图

任务27:全局变量的作用域和生存期  《编程语言-C语言》45分钟专题训练-第1页
1
任务27:全局变量的作用域和生存期  《编程语言-C语言》45分钟专题训练-第2页
2
任务27:全局变量的作用域和生存期  《编程语言-C语言》45分钟专题训练-第3页
3

由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。