C期末复习09年12月_第1页
C期末复习09年12月_第2页
C期末复习09年12月_第3页
C期末复习09年12月_第4页
C期末复习09年12月_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、期末考试分值:一、选择题 (共20分,每小题1分)二、填空题(共20分,每空格1分)三、程序分析题(共18分,每小题3分)四、改错题(共10分,每行错1分)五、程序填空题(共12分,每空2分)六、编程题 (共20分,每小题5分)C期末复习(09/10 1)一、填空题1C语言中基本的数据类型有:整型 、实型 、字符型 。2有如下语句:char A =”I am a student”; 该字符串的长度是 14 ,A3=m 。3符号”a”和a的区别是“a”是字符串常量,a是字符常量。4所谓“指针”就是地址。 “&”运算符的作用是取地址运算符,取运算对象的地址 。 “*”运算符的作用是指针运算符,取指

2、针变量所指的内容 。5表达式7+82 & 25 %5的结果是_0_。6int *p 的含义是 定义一个指向整型数的指针变量p 。7数组 int a34;共定义了_12_个数组元素。8设有下列数据定义语句,则数组元素xi的值是_0_。int i3,x4= 1,2,3;9在C语言中,二维数组元素在内存中的存放顺序是 按行存放 。10下面f函数的功能是求两个参数的差,并将结果返回调用函数。函数中错误的部分是 void ,应改为 float 。 void f (float a,float b) float c; c=a-b; return c; 11二维数组A中元素A12的值是 5 。 A45=2,2

3、,4,4,6,5,6,0,0;12若有以下定义: int a8 则数组元素下标的上限为_7_ ,下限为_0_ 。 13 写一个定义字符数组a的语句,其长度为 20,并为其赋初值:“Good morning ” char a20= “Good Morning” ; 14有程序段:int a10=1,2,3,4,5,6,7,8,9,10,*p=&a3,b; b=p5; 则b中的值是 9 。15若自定义函数要求返回一个值,则应在该函数体中有一条_return_语句,若自定义函数要求不返回一个值,则应在该函数说明时加一个类型符_void _。16对二维数组 a 初始化如下: int a 34=5,10

4、,3,6,9,12,0; 则数组元素 a01 的值是_10_, a21 的值是_0_ 。 19设有以下宏定义:#define f(z) z*z,执行赋值语句k=f(44)/f(22);(k为int型变量)后,k的值是 28 。20函数中的形参和调用时的实参都是数组名时,传递方式为_传地址方式_;都是变量时,传递方式为_值传递方式_。21设有说明语句 int(*p)4 ;其中的标识符 p 是一个指向具有_4个_ 整型元素的 _指向一维数组_的指针。 22C 语言中不允许把一个_结构体_ 变量作为一个整体进行输入和输出。 23若有 int y , * P ; P = &y ; 那么 * &y =_

5、y_ & * P =_P_ 。 24运算符.称为_成员_运算符,运算符 - 称为_指向_运算符。25设struct student int num;char name20;st;写出printf语句: printf(“%d %s”,st.num,); 输出学生st的各个成员分量。要求按num、name的顺序输出,各成员之间使用空格分隔开。 26若有char x=32 , y=3 ; 则表达式 x&y的值为 3 。27能正确表示逻辑关系:“a=10或a0”的C语言表达式是 ( D )A a=10 or a=0|a=10 &a=10anext=q ; 和 p-next=r ; 二、选

6、择题1在一个文件中定义的全局变量的作用域为 ( D )A 本程序的全部范围 B 离定义该变量的位置最近的函数C 函数内全部范围 D 定义该变量的位置开始到本文件结束2一个函数返回值的类型是由 ( B )A return语句中的表达式类型决定 B 定义函数时所指定的函数类型决定C 调用该函数的主调函数的类型决定 D 在调用函数时临时指定3在C程序中有如下语句:char *func(int x,int y); 它是(C )。A. 对函数func的定义。 B. 对函数func的调用。C对函数func的原型说明。 D. 不合法的。4以下程序的输出结果是(D )。 char str15=”hello!”

7、;printf(“%dn”,strlen(str);A. 15 B. 14 C. 7 D. 65定义如下变量和数组:int i; int x33=1,2,3,4,5,6,7,8,9;则语句for(i=0;i3;i+) printf(%d ,xi2-i); 的输出结果是(C )。A. 1 5 9 B. 1 4 7 C. 3 5 7 D. 3 6 9 6不能把字符串:Hello!赋给数组b的语句是(B )。A.char b10=H,e,l,l,o,!; B. char b10; b=Hello!;C. char b10; strcpy(b,Hello!); D. char b10=Hello!;7

8、设变量定义为 int a3=1,4,7,*p=&a2, 则*p的值是 C 。 A&a2 B4 C7 D18设有数组定义:char array=”China”; 则数组所占的空间是_C_。A4个字节 B5个字节 C6个字节 D7个字节9用数组名作为函数调用时的实参,则实际上传递给形参的是 D 。 A 数组元素的个数 B 数组第一个元素的值 C 数组中全部元素的值 D 数组的首地址 10数组 a 和 b 中已分别存放字符串,则正确的输出形式是 B 。 A puts ( a,b) ; B printf(“%s, %s”, a ,b) ; C putchar (a ,b) ;Dputs ( a , b

9、) ; 11在 C 语言中,函数的数据类型是指 D 。 A函数形参的数据类型 B任意指定的数据类型 C调用该函数时的实参的数据类型 D函数返回值的数据类型 13在C语言中,要求参加运算的数必须是整数的运算符是 A 。A% B/ C! D*14设int a=1,则执行完循环while (a+5); a的值是_A_。A. 6 B. 5 C. 1 D. -26415有以下程序main() char p=a, b, c, q=abc; printf(%d %dn, sizeof(p),sizeof(q); ; 程序运行后的输出结果是A4 4 B3 3 C3 4 D4 3【答案】C16有定义语句:int

10、 b;char c10; 则正确的输入语句是_。 A scanf(%d%s,&b,&c); Bscanf(%d%s,&b, c); C scanf(%d%s,b, c); D scanf(%d%s,b,&c);【答案】B17有以下程序B main() int p8=11,12,13,14,15,16,17,18,i=0,j=0; while(i+7) if(pi%2) j+=pi; printf(%dn,j); 程序运行后的输出结果是_。 A42 B45 C56 D60【答案】B18有以下程序 main() char a7=a00a00; int i,j; i=sizeof(a); j=str

11、len(a); printf(%d %dn,i,j); 程序运行后的输出结果是_。 A2 2 B7 6 C7 2 D6 2【答案】C19以下能正确定义一维数组的选项是_。 Aint a5=0,1,2,3,4,5; Bchar a=0,1,2,3,4,5; Cchar a=A,B,C; Dint a5=0123;【答案】B20以下程序的输出结果是 main() char ch35=AAAA,BBB,CC; printf(%sn,ch1); A AAAA B BBB C BBBCC D CC【答案】B21有以下程序 main() int aa44=1,2,3,4,5,6,7,8,3,9,10,2,

12、4,2,9,6; int i,s=0 for(i=0;i4;i+) s+=aai1; printf(“%dn”,s); 程序运行后的输出结果是 A 11 B 19 C 13 D 20【答案】B22. 以下程序的输出结果是_。 main() int i, k, a10, p3; k5; for(i0;i10;i+) ai=i; for(i0;i3;i+) pi=ai*(i+1); for(i0;i=0&chi=9;i+=2) s=10*s+chi-0; printf(%dn,s); A12ba56 B6521 C6 D62【答案】C24以下程序的输出结果是 f(int b,int m,int n

13、) int i,s=0; for(i=m;in;i=i+2)s=s+bi;return s; main() int x,a=1,2,3,4,5,6,7,8,9; x=f(a,3,7); printf(%dn,x); A 10 B18 C 8 D 15【答案】A25当执行下面的程序时,如果输入ABC,则输出结果是 #include “stdio.h” #include “string.h” main() char ss10=“1,2,3,4,5”; gets(ss); strcat(ss, “6789”); printf(“%sn”,ss); A ABC6789 B ABC67 C 12345A

14、BC6 D ABC【答案】A26下列程序执行后的输出结果是 main() char arr24; strcpy (arr,you); strcpy(arr1,me); arr03=&; printf(%s n,arr); A) you&me B) you C) me D) err【答案】A27下列程序段正确的是A#include B #include ; main() main() int i,j; int(i)=j; C include D #include main() main() int i,j; 【答案】 D.28如下程序: #include max(int x,int y); ma

15、in() int a,b,c; scanf( %d,%d ,&a,&b); c=max(a,b); print( a=%d,b=%d,max=%dn ,a,b,c); int max(x,y) int x,y; int z; if(xy)z=x; else z=y; return(z);运行时,键入3,6并回车,可得到结果A. a=3,b=6,max=6 B.a=6,b=6,max=6C. a=3,b=3,max=6 D. a=3,b=6,max=3【答案】 A.29如下函数的调用语句为: fune(rec1,rec2+rec3,(rec4,rec5); 在该函数的调用语句中,语言的实参个数是

16、几个? A.1 B.2 C.3 D.4【答案】C.30以下程序运算的结果是_。 Int f2(int b) b=b*b; return b; void f1(int b) b=+b,b+f2(b); printf( %dn ,b); main() int a=1; f1(a);【答案】 231以下程序的输出结果是:main() int x=0; sub(&x,8,1); printf( %dn ,x);sub(int *a,int n,int k) if(k=n) sub(a,n/2,2*k) *a+=k; A. 1 B.8 C.7 D.4【答案】C.32阅读下列程序,则运行结果为#inclu

17、de stdio.hfun() static int x=5;x+return x;main() int i,x; for(i=0;i3;i+) x=fun(); printf(%dn,x);A. 5 B. 6 C. 7 D. 8【答案】 D.33下程序的运行结果为#include f(int a) auto int b=0; static c=3; b=b+1; c=c+1; return(a+b+c);main() int a=2,i; for(i=0;i3;i+) printf(%d,f(a); A. 6 7 8 B.7 8 9 C.5 6 7 D.无输出结果【答案】 B.34 以下程序

18、的运行结果 #include 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); A. 8,8 B. 17,17 C. 8,17 D. 17,8【答案】 C.35.设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是 。A.*p=*q; B)p=q; C.*p=&n1; D.p=*q;【答案】A36.若有定义:int

19、x=0, *p=&x;,则语句printf(%dn,*p);的输出结果是 。A.随机值 B.0 C.x的地址 D.p的地址【答案】B37.以下程序运行后,输出结果是 。main( ) char *s=abcde;s+=2;printf(%ldn,s);A.cde B.字符c的ASCII码值 C.字符c的地址 D.出错【答案】C38.有以下程序 main() int a10=1,2,3,4,5,6,7,8,9,10, *p=&a3, *q=p+2; printf(%dn, *p + *q); 程序运行后的输出结果是 A.16 B.10 C.8 D.6【答案】B39.以下程序段的输出结果是 。 i

20、nt *var,ab; ab=100; var=ab; ab=* var10; printf(%dn,*var); A.110 B.100 C.0D.出现出错 【答案】A40.以下程序的输出结果是 #include main() int k=2,m=4,n=6; int *ph=&k, *pm=&m, *p; *(p=&n)=*ph*(*pm); printf(%dn,n); A.4 B.6 C.8 D.10 【答案】C41.有以下程序main() int a=1,2,3,4,5,6,7,8,9,0,*p; for(p=a;pa+10;p+) printf(%d,*p);程序运行后的输出结果是

21、_。A.1,2,3,4,5,6,7,8,9,0, B.2,3,4,5,6,7,8,9,10,1, C.0,1,2,3,4,5,6,7,8,9, D.1,1,1,1,1,1,1,1,1,1,【答案】A42.有以下程序main() char s=159,*p; p=s; printf(%c,*p+);printf(%c,*p+); 程序运行后的输出结果是_。A.15 B.16 C.12 D.59【答案】A43.有以下程序 #include main()char str20=Hello, Beijing,*p=str;printf(%dn,strlen(p+20);程序运行后的输出结果是 。A.0

22、B.5 C.7 D.20【答案】C44.设有定义:int a,*pa=&a; 以下scanf语句中能正确为变量a读入数据的是 A. scanf(%d,pa) ; B. scanf(%d,a) ;C. scanf(%d,&pa) ; D. scanf(%d,*pa) ;【答案】A45.有以下定义 #include char a10,*b=a;不能给数组a输入字符串的语句是 。A. gets(a) B. gets(a0) C. gets(&a0); D. gets(b);【答案】B46.有以下程序 Amain ( ) char *p10= abc,aabdfg,dcdbe,abbd,cd; pri

23、ntf(%dn,strlen(p4);执行后输出结果是A. 2 B. 3 C. 4 D. 5【答案】A47以下符合语法规则的用户标识符是 ( D ) (A) break (B) 7ab (C) max yu (D) max48以下程序的输出结果是 (C )。#define f(x) x*xmain()int a=6,b=2,c;c=f(a)/f(b);printf(“%dn”,c); A. 9 B. 6 C. 36 D. 1849在函数中默认存储类型说明符的变量应该是_C_存储类型。 A内部静态 B. 外部 C自动 D. 寄存器三、读程序,写结果1#includemnyo main() cha

24、r s6; int i=0; for( ;i6;si=getchar(),i+); for(i=0;i6;putchar(si),i+); 在运行时分别输入: m n your2有以下程序段int y=1, x, *p, a =2,4,6,8,10;p=&a1;for(x=0;x3;x+)y + = * (p + x);printf(%dn,y); 程序的输出结果y的值是 19 。3写出下列程序的运行结果。 #include “stdio.h” main() int a=1,2,3,-4,5; int m,n,*p; p=&a0; p=&a0; m=*(p+2); n=*(p+4); prin

25、tf(“%d %d %d ”,*p,m,n); 1 3 54 fun(int, int); main()i=12;j=6;x=16i=6;j=12;x=8 int i=6,x=8,j=12; fun(j,6); printf(i=%d;j=%d;x=%dn,i,j,x); fun(int i,int j) int x=16; printf(i=%d;j=%d;x=%dn,i,j,x); 5 f(int d,int m) int j,s=1;a=48 for(j=0;jm;j+) s=s*dj; return s; main() int a,z=2,4,6,8,10; a=f(z,3); pri

26、ntf(“a=%dn”,a); 6程序#include #include /* 输入:Hello_my_name_is_ricky. */输出: Hlom_aei_ik.Hlmnesiymain()char str81, a81, b81;int n, i, j=0, k=0;gets( str );n=strlen( str );for ( i=0; in; i+ )if ( i%2=0 ) aj+ = stri;if ( i%3=0 ) bk+ = stri;aj = bk = 0;puts( a );puts( b );7. 程序#include #include int func( i

27、nt k )int x=1;static y=10;x+;y+;k+;return x+y+k;main()int k=100;printf( %dn, func(k+=100) );printf( %dn, func(k+=100) );printf( %dn, func(k+=100) );输出: 2143154168程序#include int gcd( int m, int n )if ( n=0 ) return m;return gcd( n, m%n );main()int m, n, x, y;scanf( %d%d, &m, &n );x = gcd( m, n );y =

28、m*n/x;printf( x=%d, y=%dn, x, y );/* 输入:24 32*/输出:x=8, y=969程序#include void getmxmn(int a,int n,int *pmx,int *pmn)inti;*pmx=*pmn=a0;for (i=1;in;i+)if (*pmxai) *pmn=ai;main()int x10=20,30,15,95,55,20,88,90,66,90,mx,mn;getmxmn(x,10,&mx,&mn);printf(mx=%d,mn=%dn,mx,mn);输出:mx=95,mn=1510程序#include main()c

29、har words20 = First-1,Second-2,Third-3, *p;int i;for ( i=0; i=a & *p=G & *p =Z )*p = *p - A + a;puts( wordsi );输出:First-1sEConD-2thirD-311程序#include #define N 5main()int aN,max,min,sum,i;for (i=0;iN;i+)scanf(%d,&ai);sum=max=min=a0;for (i=1;imax) max=ai;if (aimin) min=ai;printf(max=%dnmin=%dnsum=%dna

30、ver=%4.2fn,max,min,sum,(float)(sum-max-min)/(N-2);输入:20 30 5 85 40输出:max=85min=5sum=180aver=30.0012程序#include char *toucase(char *str)char *p;for (p=str;*p!=0;p+)if (*p=a & *p=z)*p=*p-a+A;return str;main()char s81=Hello.;puts(toucase(s);puts(toucase(gets(s);输入:How are you?输出:HELLO.HOW ARE YOU?13. #i

31、nclude void fun(int a,int i,int j) int t; if(ij) t=ai;ai=aj;aj=t; i+; j-; for(i=0;i4;i+) printf(%2d,ai); void main() int x=1,5,2,7; fun(x,0,3); printf(n);程序的运行结果: 7 5 2 114 main ( ) int a 4 5 = 1, 2 , 4, 5, -4, -9,3,10, -3, 2, 7, 8, 4 ; int i,j,n ; n = 8 ; i = n/5 ; j = n -i * 5-1 ; printf(“a%d%d =

32、%d ”,i,j, aij) ; 程序的运行结果:_a12=10_ 。15 有以下程序void f(int y,int *x) y=y+*x; *x=*x+y;void main( ) int x=2,y=4; f(y,&x); printf(“x=%d,y=%dn”,x,y);执行后输出的结果是 x=8,y=4 四、改错题。阅读以下程序,在有行号标注的部分圈出有错的语句行并在其后写上正确的语句。1、以下程序输入一个整数n,计算累加和(1+2+3+n)并输出。本程序有错误,请找出错误并改正。 main() /*1*/ int i, n, sum;/*2*/ scanf( “%d”, &n );/*3*/ for ( i = 0; i n; i+ )/*4*/ sum += n;/*5*/ printf( “%d”, sum );2、以下程序查找100至999之间所有符合以下条件的数:是另一数的平方;至少有两位数是相同的。如数144,它是12的平方,其中有两位4。本程序有三个错误,请找出错误并改正。 main() /*1*/ int n,m,a,b,c;/*2*/ for ( n = 10; n 100 )/*7*/ printf(mark100, Reinput!n); /*8*/ break; /*9*/ n+; sum += mark; /*10*/ if ( mark

温馨提示

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

评论

0/150

提交评论