C程序设计期末复习练习题及参考答案_第1页
C程序设计期末复习练习题及参考答案_第2页
C程序设计期末复习练习题及参考答案_第3页
C程序设计期末复习练习题及参考答案_第4页
C程序设计期末复习练习题及参考答案_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、C程序设计期末复习练习题 及参考答案(3) C 程序设计期末复习练习题及参考答案 (3) 一、单项选择题 1.若有定义 int (*p)4 ,则 标识符 p 是 一 个。 A) 指向整型变量的指针变量 B) 指向函数的指针变量 C)指向有四个整型元素的一维数组的指针 变量 D)指针数组名,有四个元素,每个元素均 为一个指向整型变量的指针 2下列对字符串的定义中, 错误的是:。 A) char str7 = FORTRAN; B) char str = FORTRAN; C) char *str = FORTRAN; D) char str = F,O,R,T,R,A,N,0; 3针对下面程序段

2、,下面哪些说法是正确的? #include void Swap(int *x, int *y); main() int a, b; a = 5; b = 9; Swap( printf(a=%d,b=%d,a,b); void Swap(int *x, int *y) int *pTemp; *pTemp = *x; *x = *y; A) B) C) *y = *pTemp; 程序运行结果为乱码; 程序运行后将导致程序崩溃; 程序编译时出错导致程序无法运行; D) 程序执行了危险的操作; 4已知学生记录描述为: struct student int no; char name20; char

3、 sex; struct year; month15; int char int day; birth; ; struct student s; 设变量 s中的生日是 1984年 11月 11日, 下列对生日的正确赋值方式是 A) s.birth.year = 1984; s.birth.month = 11; s.birth.day = 11; B) s.birth.year = 1984; s.birth.month = 11; s.birth.day = 11; C ) s.birth.year = 1984; strcpy(s.birth.month, 11); s.birth.day

4、 = 11; D) s.birth.year = 1984; strcpy(s.birth.month, 11);s.birth.day = 11; 5. 要使下面程序的输出 1, 2, 34,则从键盘输入 的数据格式应为 。 #include main() char a,b; int c; scanf(%c%c%d, printf(%c,%c,%dn,a,b,c); A ) 1 2 34 B ) 1, 2, 34 C) 1, 2,34D )12 34 )。 C) -8e1.0 6. 以下选项中为合法整型常量的是 A) -080B) -80 D) -80.0e 7. 若 x,i,j 和 k 都

5、是 int 型变量,则计算表达式 x=(i=4,j=16,k=32) 后,x 的值为( )。 A) 4 B) 16C) 32 D) 52 8. 下列程序执行后的输出结果是( )。 #include void func(int *a, int b) b0=*a+6; main() int a,b5; a=0; b0=3; func( printf(%dn,b0); A)6B)7 C)8 D)9 9. 设有定义 char grade = A; 则以下给出的程 序运行结果或说法正确的是( )。 switch(grade) case A: case B: case C: printf(= 60 pas

6、s!n); case D: printf(= 60 pass! B) 60 C) error!D) 以上结果都不正确 10. 以下程序执行后的输出结果是 #include int main() int i = 1, j = 1, k = 2; if(j+ | k+ ) return 0; C) 2,2,2 A) 1,1,2 B) 2,2,1 D) 2,2,3 11. 执行完循环语句 for(i = 1; i 10; i+); 后, 以下关于变量 i 的值及循环体的执行次数的说 法正确的是( )。 A) i 的值是 9,循环体执行 9 次 B) i 的值是 9,循环体执行 10 次 C) i 的

7、值是 10,循环体执行 9 次 D) i 的值是 10,循环体执行 10 次 12. 以下程序的运行结果是( )。 #include int main() int m, n; for(m = 0, n = 10; m n; m+=3, n-); printf(%d,%dn,m,n); return 0; 9,7 A) 6,7 B) 7,6C) D) 7,9 13. 以下程序的运行结果是( ) #include int main() int i; int a33=1,2,3,4,5,6,7,8,9; for(i = 0; i 3; i+) printf(%d ,a2-ii); return 0;

8、 A) 1 5 9B) 7 5 3 C) 3 5 7 D) 5 9 1 14. 下列可用于 C 语言用户标识符的一组是 ( )。 A)void, define, WORD B)a3_3,_123,Car C) For, -abc, IF CaseD)2a, DO, sizeof 15. 若要求在 if 后一对圆括号中表示 a 不等于 0 的关系 , 则能正确表示这一关系的表达式为 ()。 . A) a0 B) !a C) a=0D) a!=0 16. 以下程序的输出结果是( #include void main() int x=10,y=10; printf(%d %dn, x-, -y);

9、C) 9 10 A) 9 9B) 10 9 D) 10 10 17. 若 有 定 义 : char *name = Follow me,BASIC,Great Wall,FORTRAN; , 则 name2 的 值 是 ( )。 A) 字符G B) 字 符 串 Great Wall C) 字符串 Great Wall 的首地址 D) 不确定 18. 有以下程序,程序执行后的输出结果是 ( )。 #include void fun(char *p) char *q = p; while( *q != 0) (*q) +; q+; int main() char a = Program, *p;

10、p = fun(p); printf(%sn,a); return 0; A) Prohsbn B) Prphsbn C) Progsbn D) Program 19. 下面列出的 C 语言提供的合法的数据类型 关键字是( )。 A) Double B) short C) integer D) Char 20. 字符 (char) 型数据在微机内存中的存储形 式是( )。 A) 反码 B) 补码 C) EBCDIC 码 D) ASCII 码 21. 设 int a=12 ,则执行完语句 a+=a-=a*a 后, a 的值是( )。 A) 552B) 264 C) 144D) -264 23.

11、能够完成如下函数计算的程序段是 ( )。 -1x0 A) y=1; B) if (x=0) if(x!=0) if(x0) y=1; if(x0) y=1; else y=0; else y=0; else y=-1; C) y=0; D) y=-1; if (x=0)if (x0) y=1; if (x0) y=1;else y=0; else y=-1; 24. 有如下程序 #include void main( ) int x=1,a=0,b=0; switch(x) case 0: b+; case 1: a+; case 2: a+;b+; printf(a=%d,b=%dn,a,b

12、); 该程序的输出结果是( )。 A) a=2,b=1 B) a=1,b=1 C) a=1,b=0 D) a=2,b=2 10 25. 下面程序的输出结果是( )。 #include void main( ) int i; for(i=1;i6;i+) if (i%2!=0) printf(#);continue; printf(*); printf(n); A) #*#*#B) # C) * 26. C 语言中 while 和 do-while 循环的主要区 别是()。 . A) do-while 的循环体至少无条件执行一次 B) while 的循环控制条件比 do-while 的循 环控制

13、条件严格 C) do-while 允许从外部转到循环体内 D) do-while 的循环体不能是复合语句 27. 当对两个字符串进行比较时, 应该使用的函 11 数是( )。 A ) strcatB) strcmpC) strcpy D ) strlen 28. 以下程序的运行结果是( )。 #include void main( ) int *p, a=1; p= *p=10; printf(%dn, a); A) 1B) 10 C) 不能 确定 D) 11 29. 设有定义 int a =1,5,7,9,11,13, *p=a+3; 则*(p-2) , *(a+4) 的值是( )。 A )

14、5 11B)1 9C)5 9D) 有错误 30. 若 i 为整型变量,则以下循环的次数是 ( )。 for(i=2;i=0;)printf(“-)%; d” ,i 12 A) 无限次B) 0 次C) 1 次 D) 2 次 二、填空题 1. C 语言标识符由 _字母 、数字 和下划线 来构造。 2 设有定义: FILE *fp; ,请将以下打开文件 的语句补充完整,以便可以向文本文件 readme.txt 的 最 后 续 写 内 容 。 fp = fopen(readme.txt,“a” ); 3. 若有说明和语句: int a=25 ,b=60;b=+a; 则 b 的值是 26 。 4. 若

15、int x=5 ;while(x0)printf( “ %d”-),;x的 循环执行次数为 5 。 5. 若有 int a5 ,*p=a ;则 p+2 表示第 三 个 元素的地址。 13 6. 若有说明和语句: int a=5 ,b=6 ,y=6;b-=a ; y=a+ 则 b 和 y 的值分别是 1 、 5 。 7. 已知整型变量 a=3, b=4,c=5,写出逻辑表 达式 a|b+cc 写出满足条件 “a是 3 的倍 数,或者 b 不是 5 的倍数 ”的逻辑表达式: a%3=0 | b%5!=0 三、程序运行结果分析题 14 1 main() int i,j,x =0; for(i=0;i

16、2;i+) x+; for(j=0;j3;j+) if(j%2) continue; x+; x+; printf(x=%dn,x); 程序运行结果是: x=6 2 #include struct date int year; int month; int day; ; struct date func(struct date p) 15 p.year = 2000; p.month = 5; p.day = 22; return p; main() struct date d; d.year = 1999; d.month = 4; d.day = 23; printf(%d/%d/%dn,

17、 d.year, d.month, d.day); d = func(d); printf(%d/%d/%dn, d.year, d.month, d.day); 程序的运行结果是: 1999/4/23 2000/5/22 3 #include main() char a = Hello ; 16 char *p = NULL; for (p=a; pa+5; p+) printf(%sn, p); 程序运行结果是: Hello ello llo lo o 4 #include int fun(int x, int y) return x y ? x : y; main() int a=2,b

18、=5,c=8; printf(%dn, fun(fun(a+c,b), a-c); 程序运行结果是: 10 5 #include 17 void Func(void); main() int i; for (i=0; i5; i+) Func(); void Func(void) static int a = 1; int b = 2, c; c = a + b; a+; b+; printf(%dn, c); 程序运行结果是: 3 4 5 6 7 6当运行以下程序时,从键盘输入如下内容并 回车: ADescriptor ,则下面程序的运行结果是 v0=13,v1=4,v2=12 。 #inc

19、lude 18 int main() char c; int v0 = 1, v1= 0, v2 = 0; do switch(c = getchar() case a:case A: case e:case E: case i:case I: case o:case O: case u:case U: v1 += 1; default: v0 += 1; v2 += 1; while (c != n); printf(v0=%d,v1=%d,v2=%dn,v0,v1,v2); printf(n); return 0; 7. 当运行以下程序时,运行结果是 #include void fun(c

20、har *t, char *s) while( *t != 0) t+; while( ( *t + = *s + ) != 0 ) ; 19 int main() t ,know; char ss320=I ,don int i; for(i = 2; i 0; i-) fun(ssi - 1, ssi); for( i = 0; i 3; i+) printf(%sn,ssi); return 0; I don t know don t know know 8. 当 运 行 以 下 程 序 时 , 运 行 结 果 是 _1,5,3,8。 #include int main() int a4

21、 = 2,9,1,8,8,9,7,2,4,3,2,1,1,5,3,5, i, j, k, t; for(i = 0; i 4; i+) for(j = 0; j 3; j+) for(k = j + 1; k aki)t = aji;aji = aki; aki = t; 20 OFS 宀 訂a8s-cu0 匸 X seLIOsrarLueueLIO Horuls 迤 dp 6U 三 Sv pnoutt ALIOP4SV pnoutt 吐戢Kmw.6 ouna) X =巨e=:p%)td (+土孑V 一o上)0 Qian,f,95,92。 四、程序填空题 阅读程序,在标有下划线的空白处填入适当

22、的表 达式或语句,使程序完整并符合题目要求。 1. 先按学号由小到大的顺序从键盘输入学生的 学号和成绩,然后从键盘任意输入一个学生的 学号,查找并打印具有该学号的学生的成绩。 #include #define ARR_SIZE 40 int BinSearch(long a, int n, long x); main() float score ARR_SIZE; int n, i, pos; long numARR_SIZE, x; printf(Please enter total number:); scanf(%d, printf(Please enter the number and

23、 score:n); for (i=0; in; i+) scanf(%ld%f, 22 printf(Please enter the searching number:); scanf(%ld, pos = BinSearch( num, n, x); if (pos != -1) printf(score = %4.0fn, scorepos); else printf(Not found!n); int BinSearch(long a, int n, long x) int low, high, mid; low = 0; high = n - 1; while (low amid) low = mid + 1; 23 else if (x amid) high = mid - 1; else return ( mid); return(-1); 2. 输入一行字符,统计其中的英文字符、数字 字符、空格及其它字符的个数。

温馨提示

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

评论

0/150

提交评论