C语言练习题谭浩强第四版附有答案.doc

上传人:s****u 文档编号:13129499 上传时间:2020-06-05 格式:DOC 页数:34 大小:318KB
返回 下载 相关 举报
C语言练习题谭浩强第四版附有答案.doc_第1页
第1页 / 共34页
C语言练习题谭浩强第四版附有答案.doc_第2页
第2页 / 共34页
C语言练习题谭浩强第四版附有答案.doc_第3页
第3页 / 共34页
点击查看更多>>
资源描述
高级语言程序设计综合练习一 学号: 姓名: 1 一、选择题 1、 一个 C 程序由若干个 C 函数组成,各个函数在文件中的位置顺序为:( ) A、 任意 B、 第一个函数必须是主函数,其他函数任意 C、 必须完全按照执行的顺序排列 D、 其他函数可以任意,主函数必须在最后 2、 下列四个叙述中,正确的是:( ) A、 C 程序中的所有字母都必须小写 B、 C 程序中的关键字必须小写,其他标示符不区分大小写 C、 C 程序中的所有字母都不区分大小写 D、 C 语言中的所有关键字必须小写 3、 下列四个叙述中,错误的是:( ) A、 一个 C 源程序必须有且只能有一个主函数 B、 一个 C 源程序可以有多个函数 C、 在 C 源程序中注释说明必须位于语句之后 D、 C 源程序的基本结构是函数 4、 下面不是 C 语言合法标识符的是:( ) A、abc B、5n C、_4m D、x3 5、 以下叙述不正确的是:( ) A. 分号是 C 语句的必要组成部分 B. C 程序的注释可以写在语句的后面 C. 函数是 C 程序的基本单位 D. 主函数的名字不一定非用 main 来表示 6、 C 语言中允许的基本数据类型包括:( ) A. 整型、实型、逻辑型 B. 整型、实型、字符型 C. 整型、字符型、逻辑型 D. 整型、实型、逻辑型、字符型 7、 C 语言中能用八进制表示的数据类型为:( ) A、字符型、整型 B、整形、实型 C、字符型、实型、双精度型 D、字符型、整型、实型、双精度型 8、 下列属于 C 语言合法的字符常数是:( ) A、 97 B、 ”A” C、 t D、 ”0” 9、 在 C 语言(VC 环境)中,5 种基本数据类型的存储空间长度的排列顺序为:( ) A、charint=long int =floatdouble B、char=intlong int =floatdouble C、charintlong int=float=double D、char=int=long int =floatdouble 10、 若有以下定义语句 char c1=b, c2=e; 高级语言程序设计综合练习一 学号: 姓名: 2 printf(“%d,%cn”,c2-c1,c2-a+A);则输出结果是:( ) A、2,M B、3,E C、2,E D、输出项与相应的格式控制不一致,输出结果不确定 11、 以下合法的赋值语句是:( ) A、x=y=100 B、d-; C、x + y D、c = int(a+b); 12、 在以下一组运算符中,优先级最高的是:( ) A、=10 or a=10 | a=10 Ca=a+1=5 Dy=int(a); 二、判断题 1. ( T )C 语言是严格区分大写和小写的,因此主函数不能写成 main()以外的其他形式。 2. ( F )C 语言程序是从源文件的第一条语句开始执行的。 3. ( F )C 语言对其数据在内存中所占用的实际字节数是有明确规定的。 4. ( F )C 语言中/*.*/之间的注释内容是不能跨行的。 5. ( F )C 语言中多个以“;”结束的语句不能放在同一行。 6. ( F )变量说明语句 int a=b=c=23;是正确的。 7. ( F )字符型数据不可以和整数数据一起进行算术运算。 8. ( T )C 语言中强制类型转换不会改变原变量的原有数据类型。 9. ( F )表达式 j=-i+和 j=-(i+)不相等 10. ( T )程序段:i=8,j=10;printf(%d,%d,%d,%dn,i,j,+i,j+);其结果 9,10,9,10. 11. ( F )C 语言中放在 “”之间的内容都被视为字符串的一个构成部分,都可以在屏幕上 原样显示。 12. ( T )计算机程序的执行过程实际上是对程序所表达的数据进行处理的过程。 13. ( T )目前程序设计的理念已经从“面向过程的程序设计”向“面向对象的程序设计” 方面转变。 14. ( T )有人曾提出:计算机程序算法数据结构。 15. ( T )在程序设计中提到的算法就是“解决问题的方法和步骤” 16. ( T )在程序设计中提到的数据结构就是“程序处理的对象的表示方法” 17. ( T )计算机程序的算法就是解决“做什么”和“怎么做”的问题。 18. ( T )结构化程序设计的基本理念是:将一个较大的问题细分成若干个较小问题的组合。 19. ( F )C 程序的执行是从程序的第一行开始,一直到程序的最后一行结束。 20. ( T )C 程序的执行是从主函数的第一行开始,一直到主函数的最后一行结束。 21. (T)设 x、t 均为 int 型变量,则执行语句x = 10;t = x 后,t 的值为 0 22. ( T )若 a 和 b 类型相同,在计算了赋值表达式 a=b 后 b 中的值将放入 a 中,而 b 中的值 不变 23. ( T )在 C 程序中,%是只能用于整数运算的运算符 24. ( T )在 C 语言中,逻辑“真”等价于不等于 0 的数 25. ( F )C 语言中字符型、整型、实型都能用八进制表示 高级语言程序设计综合练习一 学号: 姓名: 5 26. ( T )变量的三要素是:变量名、变量类型、变量的值。 书上必会的题:课后题:第三章 P834,6,7 一、 选择题 1. 以下说法正确的是( ) 。 A)C 语言程序总是从第一个的函数开始执行 B)在 C 语言程序中,要调用函数必须在 main()函数中定义 C)C 语言程序总是从 main()函数开始执行 D)C 语言程序中的 main()函数必须放在程序的开始部分 2. 算法是指为解决某个特定问题而采取的确定且有限的步骤,下面不属于算法的五个特 性的是( ) 。 A)有零个输入或多个输入 B)高效性 C)有穷性 D)确定性 3. C 语言中用于结构化程序设计的 3 种基本结构是 A)顺序结构、选择结构、循环结构 B)if,switch,break C)for,while,do-while D)if,for,continue 4. 一个 C 程序的执行是从( )。 A)main()函数开始,直到 main()函数结束 B)第一个函数开始,直到最后一个函数结束 C)第一个语句开始,直到最后一个语句结束 D)main()函数开始,直到最后一个函数结束 5. 组成 C 程序的基本单位是( )。 A)函数 B)标识符 C)表达式 D)语句 6. 若有语句 scanf(“%d%d”, 高级语言程序设计综合练习一 学号: 姓名: 7 printf(%dn,y); A)0 B)22 C)12 D)10 19. 已知 char ch=C;则以下表达式的值是 ch=(ch=A switch(d) case 30 : printf(%d,a); case 40 : printf(%d,b); case 50 : printf(%d,c); default : printf(# ); 则输出的结果是 A)40,50, B)50,# C)40,# D)40,50,# 二、 填空题 1. 用高级语言编写的程序称为(源)程序,它可以通过解释程序翻译一句执行一句的方 高级语言程序设计综合练习一 学号: 姓名: 8 式执行,也可以通过编译程序一次翻译产生目标程序,然后执行。 2. C 语言中的标识符只能由字母、下划线和( 数字 ) 组成。 3. C 语言源程序注释符号有两种, (/*/ )用于块注释, ( / )用于行注释。 4. 源程序 test.c 经编译产生的目标文件是:( test.obj ) ;经连接处理后,产生的可 执行文件是:( test.exe ) 。 5. C 标准库函数中,数学函数的原型在(math.h )头文件中。 6. 如下语句 printf(%cn,B+35);在执行后的输出结果是 ( e ) 。 7. 下列程序的输出结果是 ( 1.300000,1.300000 ) 。 #include #include int main() float a=-1.3;b=1.3; printf(%f,%f,fabs (a),fabs(b) ); return 0; 8. 将以下程序写成三目运算表达式是( max = ab ? a : b) 。 if(ab)max=a; else max=b; 9. 若从键盘输入 58,则以下程序输出的结果是 ( 585858 ) 。 main() int a; scanf(%d, if(a50)printf(%d,a); if(a40)printf(%d,a); if(a30)printf(%d,a); 10. 阅读下面的程序,当程序在执行时,如果输入的是A,则输出结果为( ABother ) 。#include stdio.h main() char a; a=getchar() ; switch(a) case 65: printf(%c,A); case 66: printf(%c,B); default :printf(%sn,other ); 三、 判断题 1. ( F )一个程序只能由一个 C 程序文件组成。 2. ( T )一个 C 程序文件是由一个或多个函数组成的。 3. ( T )一个程序必须包含一个 main 函数。 4. ( F )main 函数必须写在一个 C 程序文件的最前面。 5. ( F )C 程序的执行从程序头开始。 6. ( F )函数体不可以为空。 7. ( F )C 程序的注释只能是一行。 高级语言程序设计综合练习一 学号: 姓名: 9 8. ( F )C 程序中的数据声明和语句必须用“。 ”结束。 9. ( F )C 程序一行只能写一条语句。 10.( F )在 C 程序中,符号“Sum”和“sum”相同。 第三章 顺序结构 一、选择题 1. 下面程序的输出是:( ) main() int k=11; printf(k=%d,k=%o,k=%xn,k,k,k); A) k=11,k=12,k=13 B) k=11,k=13,k=13 C) k=11,k=013,k=oXb D) k=11,k=13,k=b 2. 以下合法的 C 语言赋值语句是:( ) A)a=b=58 B)k=int(a+b) ; C)a=58,b=58 D)-i; 3. 以下程序的输出结果是:( ) main() int x=10,y=3; printf(“%dn”,y=x/y); A)0 B)1 )3 D)不确定 4. 若变量已正确说明为 int 类型,要给 a,b,c 输入数据,以下正确的输入语句是:( ) A)read (a,b,c); B)scanf(“%d%d%d”,a,b,c); C)scanf(“%D%D%D”,%a,%b,%c); D)scanf(“%d%d%d”, 5. 执行下面程序段后,c3 中的值是:( ) int c1=1 , c2=2 , c3; c3=c1/c2; A)0 B)1/2 C)0.5 D)1 6. 以下程序段的输出是:( ) float a=57.666; printf(“*%4.2f*n”, a); A)*57* B)*58* C)*57.66* D)*57.67* 7. 若有以下定义和语句:( ) int a=5,b b=a+; 此处 b 的值是:( ) A) 7 B) 6 C) 5 D) 4 高级语言程序设计综合练习一 学号: 姓名: 10 8. 以下程序的输出结果是:( ) main() int x=10,y=10; printf(%d%dn,x-,-y); A) 10 10 B) 9 9 C) 9 10 D) 10 9 9. 已知字符 A 的 ASCII 码为十进制的 65,下面程序的输出是:( ) main() char ch1,ch2; ch1=A+5-3; ch2=A+6-3; printf(%d,%cn,ch1,ch2); A) 67,D B) B,C C) C,D D) 不确定的值 10. 两次运行下面的程序,如果从键盘上分别输入 6 和 4,则输出结果是:( ) main() int x; scanf(%d, if (x+5) printf(%d,x) else printf(%dn,x-); A) 7 和 5 B) 6 和 3 C) 7 和 4 D) 6 和 4 11. 若执行下面的程序从键盘输入 3 和 4,则输出是:( ) main() int a,b,s; scanf(%d%d, s=a; if (ac?a:c) : (b); A) 5 B) 4 C) 6 D) 不确定 3. 以下程序中,while 循环的循环次数是:( ) main() int i=0; while(i10) 高级语言程序设计综合练习一 学号: 姓名: 12 if(i1) continue; if(i=5) break; i+; A) 1 B) 10 C) 6 D) 死循环,不能确定次数 4. 以下程序的输出结果是:( ) main( ) int a=0,i; for(i=1;i5;i+) switch(i) case 0: case 3: a+=2; case 1: case 2: a+=3; default: a+=5; printf(%dn,a); A) 31 B) 13 C) 10 D) 20 5. 若执行以下程序时从键盘上输入 9,则输出结果是:( ) main() int n; scanf (%d, if(n+b) for (i=1;i=15;i+=4) for (j=3;j7) n-; printf(%3d,n); A) 10 9 8 B) 9 8 7 高级语言程序设计综合练习一 学号: 姓名: 14 C) 10 9 8 7 D) 9 8 7 6 13.以下循环体的执行次数是:( ) main() int i,j; for(i=0,j=1;i=j+1;i+=2,j-) printf(%d n,i); A) 3 B) 2 C) 1 D) 0 14.在 C 语言的循环语句 for,while,do-while 语句中,用于直接中断最内层循环的语句是: ( ) A) switch B) continue C) break D) if 二、判断题: 1. ( F )用 1 作 while 循环的判断条件,则循环一次也不执行。 2. ( F )for 循环表达式的括号内的 3 个表达式均不可以省略。 3. ( F )若有 for( ; ; ),是指循环体执行 0 次。 4. ( F )程序有死循环的时候,上机编译不能通过。 5. ( F )执行 for(I=0;I3;I+);后 I 的值为 2。 6. ( T )所有类型的循环都可以进行嵌套使用。 7. ( T )利用 break 语句可以提前终止循环的执行。 8. ( F )利用 continue 语句可以提前终止循环的执行。 9. ( F )break 语句和 continue 语句不可以同时出现在同一个循环体内。 10. ( F )switch 语句中,每一个 case 的冒号后面都必须至少跟有一条语句 第 6 章 数组 一、选择题 1、假设 int 型变量占两个字节的存储单元,若有定义: int x10=0,2,4; 则数组 x 在内存中所占字节数为:( ) A、3 B、6 C、10 D、20 2、下面程序段的输出结果是:( ) int j; int x33=1,2,3,4,5,6,7,8,9; for (j=0;j3;j+) printf(“%d ”,xj2-j); A、1 5 9 B、1 4 7 C、3 5 7 D、3 6 9 3、以下能正确定义数组并正确赋初值的语句是:( ) 高级语言程序设计综合练习一 学号: 姓名: 15 A、int N=5,bNN; B、int a12=1,3; C、int c2= 1,2,3,4; D、int d32=1,2,3,4; 4、有以下程序 main() int m3=1,4,7,2,5,8,3,6,9; int i,j,k=2; for(i=0; i0) Dif(strcmp(s1,s2)0) 高级语言程序设计综合练习一 学号: 姓名: 17 21、下列语句中,不正确的是:( ) 。 Achar str5=hello; Bchar str=h,e,l,l,o,0; Cchar str5=hi; Dchar str100=; 22、下面错误的初始化语句是:( ) 。 Achar str=hello; Bchar str100=hello; Cchar str=h,e,l,l,o; Dchar str=hello; 23、定义了一维 int 型数组 a10后,下面错误的引用是:( ) 。 Aa0=1; Ba10=2; Ca0=5*2; Da1=a2*a0; 24、下面的二维数组初始化语句中,错误的是:( ) 。 Afloat b22=0.1,0.2,0.3,0.4; Bint a2=1,2,3,4; Cint a2= 1,2,3,4; Dfloat a22=0; 25、定义了 int 型二维数组 a67后,数组元素 a34前的数组元素个数为:( ) 。 A24 B25 C18 D17 26、下面程序的运行结果是:( ) 。 main() int a3=1,2,3,4,5,6; printf(%d,a11); A3 B4 C5 D6 27、下面程序的运行结果是:( ) 。 main() char s120=Good!; char s215=AB; printf(%d,strlen(strcpy(s1,s2); A20 B15 C5 D2 高级语言程序设计综合练习一 学号: 姓名: 18 28、下面程序的运行结果是:( ) 。 main() int x=22,33,44,55,66,77,88; int k,y=0; for (k=1;k=4;k+) if (xk%2=1) y+; printf(%d,y); A0 B1 C2 D3 29、下面程序的运行结果是:( ) 。 main() int a33=1,2,3,4,5,6,i,j,s=0; for(i=1;i3;i+) for(j=0;j=a i+; Aab Bab1c2d4e Cabcde Da 二、判断题: 1. ( F )在程序中可以对数值数组中的数据进行整体使用。 2. ( T )如果 strcmp(s1,s2)的返回值为一个负数,则表明字符串 s1 一定小于字符串 s2。 3. ( T )用 scanf 函数输入的字符串不可以带空格。 4. ( T )用 gets 函数输入的字符串可以带空格。 5. ( F )实现两个字符串的复制可以使用 str1=str2;语句。 6. ( T )使用 strcpy 函数可以实现两个字符串的复制。 7. ( T )使用 strcat 函数可以实现两个字符串的连接。 高级语言程序设计综合练习一 学号: 姓名: 19 8. ( F )使用 strlen 函数可以求出一个字符串的实际长度(包含0字符) 。 9. ( F )如有定义 char a20;则可以通过 a=“I am a boy”;给 a 赋值。 10. ( T )如有定义 int a340; 则数组 a 的所有元素初值均为 0。 11. ( F )构成数组的各个元素可以有不同的数据类型。 12. ( F )若有说明:int a10;,则可以 a10引用数组 a 的第 10 个元素。 13. ( T )引用数组元素时,其数组下标的数据类型允许的是:整型常量或整型表达式。 14. ( T )若有 int a10=6,7,8,9,10;,则是将 5 个初值依次赋给 a0至 a4。 15. ( F )使用 strcat 函数可以实现两个字符串的复制。 第 7 章 函 数 一、选择题 1. 在 c 语言中以下不正确的说法是:( ) A. 实参可以是常量、变量、或表达式 B. 形参可以是常量、变量或表达式 C. 实参可以为任意类型 D. 形参应与其对应的实参类型一致 2. 以下程序有语法性错误,有关错误原因的正确说法是:( ) int main() int G=5,k; void prt_char(); k=prt_char(G); A. 语句 void prt_char();有错,它是函数调用语句,不能用 void 说明 B. 变量名不能使用大写字母 C. 函数说明和函数调用语句之间有矛盾 D. 函数名不能使用下划线 3. 以下正确的说法是:( ) A. 函数的定义可以嵌套,但函数的调用不可以嵌套 B. 函数的定义不可以嵌套,但函数的调用可嵌套 C. 函数的定义和调用均不可以嵌套 D. 函数的定义和调用均可以嵌套 4. 在一个函数内部定义的变量是:( ) A、 简单变量 B、 局部变量 C、 全局变量 D、 标准变量 5. 若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是:( ) A)函数调用可以作为独立的语句存在 B)函数调用可以作为一个函数的实参 C)函数调用可以出现在表达式中 D)函数调用可以作为一个函数的形参 6. 以下所列的各函数首部中,正确的是:( ) A、 void play(var :Integer,var b:Integer) 高级语言程序设计综合练习一 学号: 姓名: 20 B、 void play(int a,b) C、 void play(int a,int b) D、 Sub play(a as integer,b as integer) 7. 当调用函数时,实参是一个数组名,则向函数传送的是:( ) A、 数组的长度 B、 数组的首地址 C、 数组每一个元素的地址 D、 数组每个元素中的值 8. 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是:( ) A、 地址传递 B、 单向值传递 C、 由实参传给形参,再由形参传回实参 D、 传递方式由用户指定 9. 以下叙述中不正确的是:( ) A) 在不同的函数中可以使用相同名字的变量 B) 函数中的形式参数是局部变量 C) 在一个函数内定义的变量只在本函数范围内有效 D)在一个函数内的复合语句中定义的变量在本函数范围内有效 10. 有以下程序 void fun (int a,int b,int c) a=456; b=567; c=678; int main() int x=10, y=20,z=30; fun (x,y,z); printf(%d,/%d,%dn,x,y,z); return 0; 输出结果是:( ) A、30,20,10 B、10,20,30 C、456,567,678 D、678,567,456 11. 下述函数定义形式正确的是( ) 。 A、 int f(int x; int y) B、 int f(int x,y) C、 int f(int x, int y) D、 int f(x,y: int) 12. 关于函数参数,说法正确的是( ) 。 A、 实参与其对应的形参各自占用独立的内存单元 B、 实参与其对应的形参共同占用一个内存单元 C、 只有当实参和形参同名时才占用同一个内存单元 D、 形参是虚拟的,不占用内存单元 13. 一个函数的返回值由( )确定。 A、 return 语句中的表达式 B、 调用函数的类型 C、 系统默认的类型 D、 被调用函数的类型 14. C 语言中形参的默认存储类别是( ) 。 A、 自动(auto) B、 静态(static) C、 寄存器(register) D、 外部(extern) 15. 以下正确的函数形式是( ) 。 A、 double fun(int x,int y) z=x+y; return z; B、 fun(int x,y) 高级语言程序设计综合练习一 学号: 姓名: 21 int z; return z; C、 fun(x,y) int x,y; double z; z=x+y; return z; D、 double fun(int x,int y) double z; z=x+y; return z; 16. 在一个源程序文件中定义的全局变量的有效范围为( ) 。 A、 一个 C 程序的所有源程序文件 B、 该源程序文件的全部范围 C、 从定义处开始到该源程序文件结束 D、 函数内全部范围 17. 下列函数中,能够从键盘上获得一个字符数据的函数是( ) 。 A、 puts( ) B、 putchar( ) C、 getchar( ) D、 gets( ) 18. 以下程序的输出结果是( ) 。 fun(int a,int b,int c) c=a+b; int main() int c; fun(2,3,c); printf(“%dn”,c); return 0; A、 2 B、 3 C、 5 D、 无定值 19. 分析以下程序的运行结果( ) 。 func(int a,int b) int temp=a; a=b; b=temp; int main() int x,y; x=10; y=20; func(x,y); printf(“%d,%dn”,x,y); return 0 ; A、 10,20 B、10,10 C、 20,10 D、20,20 20. 下面程序的输出是( ) 。 fun(int x) static int a=3; a+=x; 高级语言程序设计综合练习一 学号: 姓名: 22 return(a); int main() int k=2,m=1,n; n=fun(k); n=fun(m); printf(“%d”,n); return 0; A、 3 B、 4 C、 6 D、 9 21. 以下程序输出的结果是( ) 。 int func(int a,int b) return(a+b); int main() int x=2,y=5,z=8,r; r=func(func(x,y),z); printf(“%dn”,r); return 0; A、 12 B、 13 C、 14 D、 15 22. 以下程序的输出结果是( ) 。 int a,b void fun() a=100; b=200; int main() int a=5,b =7; fun(); printf(“%d%d n”,a,b); return 0; A、 100200 B、 57 C、 200100 D、 75 23. 下列程序执行后的输出结果是 void func1(int i); void func2(int i); char st=hello,friend!; void func1(int i) printf(%c,sti ); 高级语言程序设计综合练习一 学号: 姓名: 23 if(i3 ) i+=2;func2(i); void func2(int i) printf(%c,sti ); if(i3 ) i+=2;func1(i); int main() int i=0; func1(i); printf (n); return 0; A)hello B)hel C)hlo D)hlm 24. 有以下程序 int f(int n) if(n=1 ) return 1; else return f(n-1)+1; int main() int i,j=0; for(i=1;i3;i+) j+=f (i ); printf(%dn,j); return 0; 程序运行后的输出结果是 A)4 B)3 C)2 D)1 25. 现有如下程序 #include stdio.h int fun(int x) printf(x=%dn,+x ); int main() fun( 12+5); return 0; 则程序的输出结果是 A)12 B)13 C)17 D)18 二、判断题 1、 ( ) 函数定义 void max(int a,int b)表示该函数的返回值不确定。 2、 ( )在 C 语言中,函数体中变量的隐含存储类别是自动变量 auto。 3、 ( )return 语句作为函数的出口,在一个函数体内只能有一个。 4、 ( )在 C 程序中,函数不能嵌套定义,但可以嵌套调用。 5、 ( ) C 语言的源程序中必须包含库函数。 6、 ( )在 C 程序中,函数调用不能出现在表达式语句中。 7、 ( )在 C 函数中,形参可以是变量、常量或表达式。 8、 ( )在主函数 main( )中定义的变量都可以在其它被调函数中直接使用。 9、 ( )在 C 语言中,一个函数一般由两个部分组成,它们是函数首部和函数体。 10、 ( )C 语言程序中的 main( )函数必须放在程序的开始部分。 高级语言程序设计综合练习一 学号: 姓名: 24 11、 ( )若定义的函数没有参数,则函数名后的圆括号可以省略。 12、 ( )函数的函数体可以是空语句。 13、 ( )函数的实参和形参可以是相同的名字。 14、 ( )函数调用中,形参与实参的类型和个数必须保持一致。 15、 ( )C 语言中函数返回值的类型由 return 语句中的表达式的类型决定。 16、 ( )外部类型的变量只能定义一次,但可在不同地方声明多次。 17、 ( )外部类型的变量作用范围大,编程中应多用外部变量。 答案: BCBBD CBBDB CADAD CCDAC DBCBD 1F 2T 3F 4T 5 F 6F 7 F 8 F 9T 10F 11F 12T 13T 14T 15F 16T 17F 第 8 章 指 针 一、 选择题 1、 下列选项中正确的语句组是:( ) A)char s8; s=Beijing; B)char *s; s=Beijing; C)char s8; s=Beijing; D)char *s; s=Beijing; 2、 若有定义:int *p3;,则以下叙述中正确的是:( ) A)定义了一个类型为 int 的指针变量 p,该变量具有三个指针 B)定义了一个指针数组 p,该数组含有三个元素,每个元素都是基类型为 int 的指针 C)定义了一个名为*p 的整型数组,该数组含有三个 int 类型元素 D)定义了一个可指向一维数组的指针变量 p,所指一维数组应具有三个 int 类型元素 3、 已定义以下函数 fun(char *p2, char *p1) while(*p2=*p1)!=0) p1+;p2+; 函数的功能是:( ) A)将 p1 所指字符串复制到 p2 所指内存空间 B)将 p1 所指字符串的地址赋给指针 p2 C)对 p1 和 p2 两个指针所指字符串进行比较 D)检查 p1 和 p2 两个指针所指字符串中是否有0 4、 若有如下定义 char a10,*p=a,则对 a 数组中元素的不正确的引用是:( ) A)* s=x+3; printf(%dn,s2); 执行后输出结果是:( ) A) 随机值 B) 0 C) 5 D) 6 6、 下列程序的运行结果是:( ) void fun(int *a, int *b) int *k; k=a; a=b; b=k; 高级语言程序设计综合练习一 学号: 姓名: 25 main() int a=3, b=6, *x= fun(x,y); printf(%d %d, a, b); A) 6 3 B) 3 6 C) 0 0 D)编译出错 7、 下面程序的输出结果是:( ) main() int a =1,2,3,4,5,6,7,8,9,0,*p; p=a; printf(%dn,*p+9); A) 0 B) 1 C) 10 D) 9 8、 若有说明:int i, j=2,*p=,则能完成 i=j 赋值功能的语句是:( ) A) i = *p; B) *p = * C) i = D) i = *p; 9、 以下定义语句中,错误的是:( ) A) int a=1,2; B) char *a3; C) char s10=test; D) int n=5,an; 10、 以下不能正确进行字符串赋初值的语句是:( ) A) char str5=good!; B) char str=good!; C) char *str=good!; D) char str5=g,o,o,d; 11、 有以下程序 main() int aa44=1,2,3,4,5,6,7,8,3,9,10,2,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 12、 有以下程序 #include main() char *p=abcde0fghjik0; printf(%dn,strlen(p); 程序运行后的输出结果是:( ) A) 12 B) 15 C) 6 D) 5 13、 变量的指针,其含义是指该变量的_. a)值 b)地址 c)名 d)一个标志 14、 若有语句 int *point,a=4;和 point=下面均代表地址的一组选项是_. a)a,point,*int *p,m=5,n;以下正确的程序段的是_. a)p= b)p= scanf(%d, scanf(%d,*p); c)scanf(%d, d)p= *p=n; *p=m; 16、 以下正确的程序段是_. a)char str20; b)char *p; scanf(%s, str); scanf(%s,p); c)char str20; d)char str20,*p=str; scanf(%s, scanf(%s,p2); 17、 下面程序的运行结果是_. #include #include main() char *s1=AbDeG; char *s2=AbdEg; s1+=2;s2+=2; printf(%dn,strcmp(s1,s2); a)正数 b)负数 c)零 d)不确定的值 18、 若有定义:int a23,则对 a 数组的第 i 行 j 列元素地址的正确引用为_ a)*(ai+j) b)(a+i) c)*(a+j) d)ai+j 19、 若有以下定义,则 p+5 表示_. int a10,*p=a; a)元素 a5的地址 b)元素 a5的值 c)元素 a6的地址 d)元素 a6的值 20、 以下程序的输出结果是_. #include void fun(int *p); int main() int x = 3; fun( printf(“x = %dn”, x); void fun(int *p) *p = 5; A) 3 B) 5 C) 8 D) 2 21、 下面判断正确的是 A)char *a=china;等价于 char *a;*a=china; 高级语言程序设计综合练习一 学号: 姓名: 27 B)char str5=china;等价于 char str=china; C)char *s=china;等价于 char *s;s=china; D)char c4=abc,d4=abc;等价于 char c4=d4=abc; 22、 下列程序的运行结果是 void fun(int *a, int *b) int *k; k=a; a=b; b=k; main() int a=3, b=6, *x= fun(x,y); printf(%d %d, a, b); A)6 3 B)3 6 C)编译出错 D)0 0 二、判断题 1. ( F )指针变量里存放的是地址值,因此指针变量只能是 int 型的。 2. ( T )有一个一维数组 a10,那么 a 与k = *p + j;这里出现的两个“*” 号,含义是一样的。 4. ( F )在 C 语言中,每一个变量在内存里占用的单元数都是相同的。 5. ( T )通过指针变量,就能间接地得到它所指向的变量的值。 6. ( F )有说明:int *p;且 p 指向地址为 1500 的内存单元,那么经过操作“p+;”后, p 将指向 1501 的内存单元。 7. ( T )一个变量的指针就是该变量的地址。 8. ( F )在 C 语言中允许将一个整数赋给指针变量。 9. ( F )数组名实际上是此数组的首地址,所以数组名相当于一个指针变量。 10. ( F )char *p10;定义了一个指向字符数组的指针变量。 答案: DBABB BCBDA BDBDD ABDAB CB FTFFT FTFFF C 语言程序设计练习题
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 考试试卷


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!