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

| 2份
| 30页
| 83人阅读
| 1人下载

内容正文:

湖南省职教高考《编程语言—C语言》45分钟专题训练专辑,共43份试卷。试卷命题与高考紧密相关,精选具有代表性和典型性的高考常考题。旨在帮助学生系统地复习和巩固计算机类理论知识,熟悉高考题型和命题规律,提高解题能力和应试技巧,为高考取得优异成绩打下坚实的基础,本训练卷适用于即将参加计算机类高考的学生。与本专辑配套的还有湖南省职教高考《计算机应用基础》《计算机组装与维护》《计算机网络技术》45分钟专题训练专辑,欢迎同学和老师们下载使用。 《编程语言—C语言》 项目五: 函数 第26卷: 局部变量的作用域和生存期 时间:45分钟 总分:100分 班级___________ 姓名__________ 学号__________ 成绩________ 一、选择题(共23小题,每小题2分,共46分) 1.下列叙述中,正确的一项是( ) A. 全局变量的作用域一定比局部变量的作用域范围大 B. 静态(static)类别变量的生存期贯穿于整个程序的运行期间 C. 函数的形参都属于全局变量 D. 未在定义语句中赋初值的auto变量和static变量的初值都是随机值 2.下列叙述中,正确的一项是( ) A. 局部变量说明为static 存储类,其生存期将得到延长 B. 全局变量说明为static 存储类,其作用域将被扩大 C. 任何存储类的变量在未赋初值时,其值都是不确定的 D. 形参可以使用的存储类说明符与局部变量完全相同 3.在C语言中,形参的缺省存储类别是( ) A. auto B. register C. static D. extern 4.如果在函数中的复合语句内定义了一个变量,则改变量( ) A.只在该复合语句中有效 B.在整个函数中有效 C.在整个程序范围内有效 D.在整个文件内有效 5.下列叙述中,不正确的一项是( ) A.在不同函数中可以使用相同的变量名 B.形式参数是局部变量 C.在函数内定义的变量只在本函数内有效 D.在函数内复合语句中定义的变量在本函数内有效 6.执行以下程序段的输出结果是( ) void local_value() {int a=1,b=2; printf("%d%d",a,b);} main() {int a=5,b=6; printf("%d%d",b,a);getch();} A.1,2 B.5,6 C.6,5 D.6,8 7.执行以下程序段的输出结果是( ) main() {int i; for(i=1;i<=3;i++) {int a=10; printf("%d,",a);} printf("%d",a);getch();} A.10,10,10 B.10,10,10,10 C.10,10 D.不能通过编译 8.下列叙述中,正确的一项是( ) A.局部变量说明为static,其生存期将得到缩短 B.全局变量说明为extern,其作用域将被扩大 C.任何存储类的变量在未赋初值时,其值都是不确定的 D.形参可以使用的存储类说明符与局部变量完全相同 9.以下只有在使用时才为该类型变量分配内存的存储类说明是( ) A.auto、static B.auto、register C.static、register D.extern、auto 10.执行以下程序段的输出结果是( ) int f(int x) {static int a=3; a+=x; return a;} main() {int k=2,n; n=f(k);n=f(n); printf("%d",n); getch();} A.10 B.8 C.6 D.4 11.执行以下程序段的输出结果是( ) unsigned fun6(unsigned num) {unsigned k=1; do {k*=num%10; num/=10;}while(num); return k;} main() {unsigned n=42; printf("%d ",fun6(n));getch();} A.8 B.10 C.12 D.14 12.执行以下程序段的输出结果是( ) void func(int x) {x=11; printf("%d,",x);} main( ) {int x=10; printf("%d", x); func(x); printf("%d", x);getch();} A.11,10,10 B.10,10,10 C.10,10,11 D.10,11,10 13.执行以下程序段的输出结果是( ) int func(int a,int b) {static int z=1; int y=2; return (a+b)*z+++y; } main() {int x=3,y=7,z=9,r; r=func(func(x,y),z); printf("%d ",r);getch();} A.23 B.44 C.32 D.45 14.执行以下程序段的输出结果是( ) int fun(int x, int y) {static int m=1,i=2; i+=m*1; m=i+x+y; return m;} main() {int j=1,m=2,k; k=fun(j,m); printf("%d,",k); k=fun(j,m); printf("%d ",k); getch();} A.6,12 B.12,6 C.7,12 D.12,7 15.执行以下程序段的输出结果是( ) int fun(int x[],int n) {static int sum=0,i; for(i=0;i<n;i++) sum+=x[i]; return sum;} main() {int a[]={1,2,3,4,5},b[]={6,7,8,9,},s=0; s=fun(a,5)+fun(b,4); printf("%d ",s);getch();} A.45 B.50 C.55 D.60 16.执行以下程序段的输出结果是( ) int fun3(int x) {static int a=3; a+=x; return(a);} main() {int k=5,m=6,n; n=fun3(k); n=fun3(m); printf("%d ",n); getch();} A.10 B.12 C.14 D.16 17.执行以下程序段的输出结果是( ) void fun() { static int a=0; a+=2; printf("%d",a);} main() { int cc; for(cc=1;cc<4;cc++) fun(); printf(" ");getch();} A.246 B.C.D. 18.执行以下程序段的输出结果是( ) main() {register int i,sum=0; int n=10; for(i=1;i<=n;i++) sum=sum+i; printf("%d",sum);getch();} A.10 B.55 C.45 D.50 19.执行以下程序段的输出结果是( ) int fun(int x, int y) {static int m=0,i=2; i+=m+1; m=i+x+y; return m;} main() {int j=1,m=1,k; k=fun(j,m); printf("%d,",k); k=fun(j,m); printf("%d ",k);getch();} A.5,5 B.5,11 C.11,11 D.11,5 20.执行以下程序段的输出结果是( ) int f(int a) {int b=0; static int c=3; b++;c++; return (a+b+c);} main() {int a=2,i; for(i=0;i<3;i++) printf("%d,",f(a));getch();} A.7,8,9, B.7,7,7, C.24 D.21 21.执行以下程序段的输出结果是( ) main() {int func(int a,int b); int k=4,m=1,p; p=func(k,m); printf("%d,",p); p=func(k,m); printf("%d ",p); getch();} int func(int a,int b) {static int m=0,i=2; i+=m+1; m=i+a+b; return(m);} A.8,16 B.8,20 C.8,8 D.8,17 22.执行以下程序段的输出结果是( ) main() {int i,sum; for(i=1;i<6;i++) sum+=i; printf("%d ",sum);} A.15 B.14 C.0 D.不定值 23.执行以下程序段的输出结果是( ) int fun3(int x) {static int a=3; a+=x;return(a);} main() {int k=2, m=1, n; n=fun3(k);n=fun3(m); printf("%d ",n);} A.3 B.4 C.6 D.9 二、程序运行结果题(本题共7小题,每题3分,共21分) 24.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> int fun(int x[],int n) {static int sum=0,i; for(i=0;i<n;i++) sum+=x[i]; return sum;} main() {int a[]={1,2,3,4,5},b[]={6,7,8,9,},s=0; s=fun(a,5)+fun(b,4); printf("%d ",s); getch();} 25.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> int i; void sub() {int a=0; static int b=0; a++;b++; printf("%d:a=%d,b=%d ",i,a,b);} main() {for(i=1;i<=3;i++) sub();getch();} 26.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> int f1(int a) { int b=0; static int c=3; b+=1; c++; return(a+b+c);} main() { int a=1,i; char s1[10]="java",s2[10]="basic",s[10]; for(i=0;i<3;i++) printf("%d ",f1(a)); if(strcmp(s1,s2)) { strcpy(s,s1); puts(s);} printf("%d,%s ",strlen(s2),strcat(s2,s1));getch();} 27.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> void myfun() {static int m; m=m+5; printf("%d ",m);} main() {int n; for(n=1;n<5;n++) myfun(); printf(" "); getch();} 28.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> int f(int a); main() {int a=2,i; for(i=0;i<3;i++) printf("%d ",f(a)); getch();} int f(int a) {int b=0; static int c=3; b++;c++; return a+b+c;} 29.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> int func(int a,int b) {static int m=0,i=2; i+=m+1; m=i+a+b; return m;} main() {int k=4,m=1,p; p=func(k,m); printf("%d,",p); p=func(k,m); printf("%d",p); getch();} 30.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> main() {int j,k; static int x[2][2],y[2][2]; for(j=0;j<2;j++) for(k=j;k<2;k++) x[j][k]=j+k; for(j=0;j<2;j++) for(k=j;k<2;k++) y[k][j]=x[j][k]; for(j=0;j<2;j++) for(k=0;k<2;k++) printf("%d,",y[j][k]);getch();} 三、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。每处3分,共9分) 31.下列函数的功能是:根据一维数组的值按照下列规律输出结果,设一维数组的值为1,2,3,4,调用函数后将输出以下方阵。程序中有三处错误,请改正。 4 1 2 3 3 4 1 2 2 3 4 1 1 2 3 4 L1 #include <stdio.h> L2 #include<conio.h> L3 void fun(int a[ ]) L4 {int i,j,k; L5 for(i=0;i<4;i++) L6 {k=a[4-1]; L7 for(j=4-1;j>0;j++) L8 a[j]=a[j+1]; L9 a[0]=k; L10 for(j=0;j<4;j++) L11 printf("%d ",a[j]); L12 printf(" ");}} L13 main() L14 {int i,a[4]; L15 printf("请输入%d个整数:",4); L16 for(i=0;i<4;i++) L17 scanf("%d",&a[i]); L18 fun(i); L19 getch();} 四、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分) 32.该程序的功能是:计算主函数给出的年、月、日属于这一年的第几天。请填空。 #include <stdio.h> #include<conio.h> main() {int sum_day(int month,int day); int leap(int year); int year,month,day,days; printf("input data(year,month,day):"); scanf("%d,%d,%d",&year,&month,&day); printf("%d-%d-%d",year,month,day); days=sum_day(month,day); if(【1】) days=days+1; printf(" is the %dth day in this year. ",days); getch();} int sum_day(int month,int day) {int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int i; for(i=1;【2】;i++) day=day+【3】; return day;} int leap(int year) {int leap; leap=【4】; return leap;} 33.下列程序的功能是将数组中的n个整数按照相反顺序存放。请填空。 #include <stdio.h> #include<conio.h> main() {int n,i,a[100]; void reverse(【1】); printf("请输入n:"); scanf("%d",&n); printf("请输入n个数:"); for(i=0;i<n;i++) scanf("%d",&a[i]); 【2】; printf("反序后数组元素的值: "); for(i=0;i<n;i++) printf("%d ",a[i]); printf(" "); getch();} void reverse(int p[ ],int m) {int i,t; for(i=0;【3】;i++) {t=p[i]; 【4】; p[m-i-1]=t;}} 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$ 湖南省职教高考《编程语言—C语言》45分钟专题训练专辑,共43份试卷。试卷命题与高考紧密相关,精选具有代表性和典型性的高考常考题。旨在帮助学生系统地复习和巩固计算机类理论知识,熟悉高考题型和命题规律,提高解题能力和应试技巧,为高考取得优异成绩打下坚实的基础,本训练卷适用于即将参加计算机类高考的学生。与本专辑配套的还有湖南省职教高考《计算机应用基础》《计算机组装与维护》《计算机网络技术》45分钟专题训练专辑,欢迎同学和老师们下载使用。 《编程语言—C语言》 项目五: 函数 第26卷: 局部变量的作用域和生存期 时间:45分钟 总分:100分 班级___________ 姓名__________ 学号__________ 成绩________ 一、选择题(共23小题,每小题2分,共46分) 1.下列叙述中,正确的一项是( ) A. 全局变量的作用域一定比局部变量的作用域范围大 B. 静态(static)类别变量的生存期贯穿于整个程序的运行期间 C. 函数的形参都属于全局变量 D. 未在定义语句中赋初值的auto变量和static变量的初值都是随机值 【答案】B 2.下列叙述中,正确的一项是( ) A. 局部变量说明为static 存储类,其生存期将得到延长 B. 全局变量说明为static 存储类,其作用域将被扩大 C. 任何存储类的变量在未赋初值时,其值都是不确定的 D. 形参可以使用的存储类说明符与局部变量完全相同 【答案】A 3.在C语言中,形参的缺省存储类别是( ) A. auto B. register C. static D. extern 【答案】A 4.如果在函数中的复合语句内定义了一个变量,则改变量( ) A.只在该复合语句中有效 B.在整个函数中有效 C.在整个程序范围内有效 D.在整个文件内有效 【答案】A 5.下列叙述中,不正确的一项是( ) A.在不同函数中可以使用相同的变量名 B.形式参数是局部变量 C.在函数内定义的变量只在本函数内有效 D.在函数内复合语句中定义的变量在本函数内有效 【答案】D 6.执行以下程序段的输出结果是( ) void local_value() {int a=1,b=2; printf("%d%d",a,b);} main() {int a=5,b=6; printf("%d%d",b,a);getch();} A.1,2 B.5,6 C.6,5 D.6,8 【答案】C 7.执行以下程序段的输出结果是( ) main() {int i; for(i=1;i<=3;i++) {int a=10; printf("%d,",a);} printf("%d",a);getch();} A.10,10,10 B.10,10,10,10 C.10,10 D.不能通过编译 【答案】D 8.下列叙述中,正确的一项是( ) A.局部变量说明为static,其生存期将得到缩短 B.全局变量说明为extern,其作用域将被扩大 C.任何存储类的变量在未赋初值时,其值都是不确定的 D.形参可以使用的存储类说明符与局部变量完全相同 【答案】B 9.以下只有在使用时才为该类型变量分配内存的存储类说明是( ) A.auto、static B.auto、register C.static、register D.extern、auto 【答案】B 10.执行以下程序段的输出结果是( ) int f(int x) {static int a=3; a+=x; return a;} main() {int k=2,n; n=f(k);n=f(n); printf("%d",n); getch();} A.10 B.8 C.6 D.4 【答案】A 11.执行以下程序段的输出结果是( ) unsigned fun6(unsigned num) {unsigned k=1; do {k*=num%10; num/=10;}while(num); return k;} main() {unsigned n=42; printf("%d ",fun6(n));getch();} A.8 B.10 C.12 D.14 【答案】A 12.执行以下程序段的输出结果是( ) void func(int x) {x=11; printf("%d,",x);} main( ) {int x=10; printf("%d", x); func(x); printf("%d", x);getch();} A.11,10,10 B.10,10,10 C.10,10,11 D.10,11,10 【答案】D 13.执行以下程序段的输出结果是( ) int func(int a,int b) {static int z=1; int y=2; return (a+b)*z+++y; } main() {int x=3,y=7,z=9,r; r=func(func(x,y),z); printf("%d ",r);getch();} A.23 B.44 C.32 D.45 【答案】B 14.执行以下程序段的输出结果是( ) int fun(int x, int y) {static int m=1,i=2; i+=m*1; m=i+x+y; return m;} main() {int j=1,m=2,k; k=fun(j,m); printf("%d,",k); k=fun(j,m); printf("%d ",k); getch();} A.6,12 B.12,6 C.7,12 D.12,7 【答案】A 15.执行以下程序段的输出结果是( ) int fun(int x[],int n) {static int sum=0,i; for(i=0;i<n;i++) sum+=x[i]; return sum;} main() {int a[]={1,2,3,4,5},b[]={6,7,8,9,},s=0; s=fun(a,5)+fun(b,4); printf("%d ",s);getch();} A.45 B.50 C.55 D.60 【答案】D 16.执行以下程序段的输出结果是( ) int fun3(int x) {static int a=3; a+=x; return(a);} main() {int k=5,m=6,n; n=fun3(k); n=fun3(m); printf("%d ",n); getch();} A.10 B.12 C.14 D.16 【答案】C 17.执行以下程序段的输出结果是( ) void fun() { static int a=0; a+=2; printf("%d",a);} main() { int cc; for(cc=1;cc<4;cc++) fun(); printf(" ");getch();} A.246 B.C.D. 【答案】A 18.执行以下程序段的输出结果是( ) main() {register int i,sum=0; int n=10; for(i=1;i<=n;i++) sum=sum+i; printf("%d",sum);getch();} A.10 B.55 C.45 D.50 【答案】B 19.执行以下程序段的输出结果是( ) int fun(int x, int y) {static int m=0,i=2; i+=m+1; m=i+x+y; return m;} main() {int j=1,m=1,k; k=fun(j,m); printf("%d,",k); k=fun(j,m); printf("%d ",k);getch();} A.5,5 B.5,11 C.11,11 D.11,5 【答案】B 20.执行以下程序段的输出结果是( ) int f(int a) {int b=0; static int c=3; b++;c++; return (a+b+c);} main() {int a=2,i; for(i=0;i<3;i++) printf("%d,",f(a));getch();} A.7,8,9, B.7,7,7, C.24 D.21 【答案】A 21.执行以下程序段的输出结果是( ) main() {int func(int a,int b); int k=4,m=1,p; p=func(k,m); printf("%d,",p); p=func(k,m); printf("%d ",p); getch();} int func(int a,int b) {static int m=0,i=2; i+=m+1; m=i+a+b; return(m);} A.8,16 B.8,20 C.8,8 D.8,17 【答案】D 22.执行以下程序段的输出结果是( ) main() {int i,sum; for(i=1;i<6;i++) sum+=i; printf("%d ",sum);} A.15 B.14 C.0 D.不定值 【答案】D。sum没有赋初值。 23.执行以下程序段的输出结果是( ) int fun3(int x) {static int a=3; a+=x;return(a);} main() {int k=2, m=1, n; n=fun3(k);n=fun3(m); printf("%d ",n);} A.3 B.4 C.6 D.9 【答案】C 二、程序运行结果题(本题共7小题,每题3分,共21分) 24.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> int fun(int x[],int n) {static int sum=0,i; for(i=0;i<n;i++) sum+=x[i]; return sum;} main() {int a[]={1,2,3,4,5},b[]={6,7,8,9,},s=0; s=fun(a,5)+fun(b,4); printf("%d ",s); getch();} 【答案】60 25.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> int i; void sub() {int a=0; static int b=0; a++;b++; printf("%d:a=%d,b=%d ",i,a,b);} main() {for(i=1;i<=3;i++) sub();getch();} 【答案】 1:a=1,b=1 2:a=1,b=2 3:a=1,b=3 26.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> int f1(int a) { int b=0; static int c=3; b+=1; c++; return(a+b+c);} main() { int a=1,i; char s1[10]="java",s2[10]="basic",s[10]; for(i=0;i<3;i++) printf("%d ",f1(a)); if(strcmp(s1,s2)) { strcpy(s,s1); puts(s);} printf("%d,%s ",strlen(s2),strcat(s2,s1));getch();} 【答案】 6 7 8 java 9,basicjava 27.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> void myfun() {static int m; m=m+5; printf("%d ",m);} main() {int n; for(n=1;n<5;n++) myfun(); printf(" "); getch();} 【答案】5 10 15 20 28.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> int f(int a); main() {int a=2,i; for(i=0;i<3;i++) printf("%d ",f(a)); getch();} int f(int a) {int b=0; static int c=3; b++;c++; return a+b+c;} 【答案】7 8 9 29.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> int func(int a,int b) {static int m=0,i=2; i+=m+1; m=i+a+b; return m;} main() {int k=4,m=1,p; p=func(k,m); printf("%d,",p); p=func(k,m); printf("%d",p); getch();} 【答案】8,17 30.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> main() {int j,k; static int x[2][2],y[2][2]; for(j=0;j<2;j++) for(k=j;k<2;k++) x[j][k]=j+k; for(j=0;j<2;j++) for(k=j;k<2;k++) y[k][j]=x[j][k]; for(j=0;j<2;j++) for(k=0;k<2;k++) printf("%d,",y[j][k]);getch();} 【答案】0,0,1,2, 三、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。每处3分,共9分) 31.下列函数的功能是:根据一维数组的值按照下列规律输出结果,设一维数组的值为1,2,3,4,调用函数后将输出以下方阵。程序中有三处错误,请改正。 4 1 2 3 3 4 1 2 2 3 4 1 1 2 3 4 L1 #include <stdio.h> L2 #include<conio.h> L3 void fun(int a[ ]) L4 {int i,j,k; L5 for(i=0;i<4;i++) L6 {k=a[4-1]; L7 for(j=4-1;j>0;j++) L8 a[j]=a[j+1]; L9 a[0]=k; L10 for(j=0;j<4;j++) L11 printf("%d ",a[j]); L12 printf(" ");}} L13 main() L14 {int i,a[4]; L15 printf("请输入%d个整数:",4); L16 for(i=0;i<4;i++) L17 scanf("%d",&a[i]); L18 fun(i); L19 getch();} 答案: L7 for(j=4-1;j>0;j--) L8 a[j]=a[j-1]; L18 fun(a); 四、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分) 32.该程序的功能是:计算主函数给出的年、月、日属于这一年的第几天。请填空。 #include <stdio.h> #include<conio.h> main() {int sum_day(int month,int day); int leap(int year); int year,month,day,days; printf("input data(year,month,day):"); scanf("%d,%d,%d",&year,&month,&day); printf("%d-%d-%d",year,month,day); days=sum_day(month,day); if(【1】) days=days+1; printf(" is the %dth day in this year. ",days); getch();} int sum_day(int month,int day) {int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int i; for(i=1;【2】;i++) day=day+【3】; return day;} int leap(int year) {int leap; leap=【4】; return leap;} 答案:①leap(year)&&month>=3 ②i<month ③day_tab[i] ④year%4==0&&year%100!=0||year%400==0 33.下列程序的功能是将数组中的n个整数按照相反顺序存放。请填空。 #include <stdio.h> #include<conio.h> main() {int n,i,a[100]; void reverse(【1】); printf("请输入n:"); scanf("%d",&n); printf("请输入n个数:"); for(i=0;i<n;i++) scanf("%d",&a[i]); 【2】; printf("反序后数组元素的值: "); for(i=0;i<n;i++) printf("%d ",a[i]); printf(" "); getch();} void reverse(int p[ ],int m) {int i,t; for(i=0;【3】;i++) {t=p[i]; 【4】; p[m-i-1]=t;}} 答案:①int p[ ],int m ②reverse(a,n) ③i<m/2 ④p[i]=p[m-i-1] 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$

资源预览图

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

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