宁波大学c语言练习册定稿(带答案)_第1页
宁波大学c语言练习册定稿(带答案)_第2页
宁波大学c语言练习册定稿(带答案)_第3页
宁波大学c语言练习册定稿(带答案)_第4页
宁波大学c语言练习册定稿(带答案)_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1、计算机应用基础(工程技术类)计算机应用基础(工程技术类) 高级语言程序设计高级语言程序设计 C C(工程技术类(工程技术类综综合合 练练习习 册册2012-2013 学年学号: 姓名: 班级: 课号: 教师: 宁波大学信息科学与工程学院计算机科学与技术2012.9 2目目 录录练习练习 1 1 计算机与程序设计基础知识计算机与程序设计基础知识 .31.1 选择题 .31.2 思考 .4练习练习 2 2 基本数据类型与顺序结构基本数据类型与顺序结构 .52.1 选择题 .52.2 思考.7练习练习 3 3 选择结构程序设计选择结构程序设计 .83.1 选择题 .83.2 思考.10练习练习 4

2、4 循环结构程序设计循环结构程序设计 .114.1 练习题 .114.2 思考 .14练习练习 5 5 函数与程序结构函数与程序结构 .155.1 选择题 .155.2 思考 .18练习练习 6 6 数组的基本使用数组的基本使用 .196.1 选择题 .196.2 思考.21练习练习 7 7 字符数组与字符串字符数组与字符串 .227.1 选择题 .227.2 思考 .24练习练习 8 8 指针、数组与函数指针、数组与函数 .258.1 选择题 .258.2 思考.29练习练习 9 结构体结构体.309.1 选择题 .309.2 思考.32练习练习 10 动态数据结构动态数据结构.3410.1

3、 选择题.3410.2 思考.36练习练习 1111 文件文件.3911.1 选择题.3911.2 思考 .413练习练习 1 1 计算机与程序设计基础知识计算机与程序设计基础知识【内容简介内容简介】1.了解计算机的硬件组成及工作原理。2.了解计算机的软件组成及与硬件的关系。3.了解程序设计的基本概念1.11.1 选择题选择题1、计算机工作时,内存储器用来存储 C 。A)程序和指令 B)数据和信号 C)程序和数据 D)ASCII 码和数据2、在计算机内一切信息的存取、传输和处理都是以 B 形式进行的。A)ASCII 码 B)二进制 C)十进制 D)十六进制3、计算机的 CPU 主要由 C 构成

4、。A)控制器和存储器 B)输入输出设备 C)控制器和运算器 D)算术运算和逻辑运算部件4、十进制数 35 转换成二进制数是 A 。A)100011 B)1000011 C)100110 D)1001015、十进制数 268 转换成十六进制数是 B 。A)10B B)10C C)10D D)10E6、语言编译程序若按软件分类则是属于 A 。A)系统软件 B)应用软件 C)操作系统 D)数据库管理系统7、下列叙述中错误的是 D 。A)计算机不能直接执行用 C 语言编写的源程序 B)C 程序被编译后,生成的后缀为.obj 的文件是一个二进制文件C)后缀为.obj 的文件,经链接后生成的后缀为.exe

5、 的文件是一个二进制文件D)后缀为.obj 和.exe 的二进制文件都可以直接运行8、计算机唯一能直接识别的语言是 A 。A)机器语言 B)汇编语句 C)编译语言 D)高级语言9、计算机能直接执行的语句是 D 。 A)源程序 B)目标程序 C)汇编程序 D)可执行程序10、下列叙述中正确的是 C 。A)程序设计就是编制程序 B)程序的测试必须由程序员自己去完成 C)程序经调试改错后还应进行再测试 D)程序经调试改错后不必进行再测试11、要把高级语言编写的源程序转换为目标程序,需要使用 D 。 A)编辑程序 B)驱动程序 C)诊断程序 D)编译程序12、下列选项中不属于结构化程序设计方法的是 D

6、 。 A)自顶向下 B)逐步求精 C)模块化 D)可复用13、对于用 C 程序实现的算法,下列叙述中正确的是 C 。4A)必须要有输入和输出操作B)可以没有输出但必须要有输入 C)可以没有输入但必须要有输出D)可以既没有输入也没有输出14、以下叙述中正确的是 B 。A)C 语言的源程序不必通过编译就可以直接运行B)C 语言中的每条可执行语句最终都将被转换成二进制的机器指令C)C 源程序经编译形成的二进制代码可以直接运行D) C 语言中的每条语句最终都将被转换成二进制的机器指令15、以下叙述中正确的是 C 。A)C 程序中的注释只能出现在程序的开始位置和语句的后面B)C 程序书写格式严格,要求一

7、行内只能写一条语句C)C 程序书写格式自由,一个语句可以写在多行上D)用 C 语言编写的程序只能放在一个程序文件中1.21.2 思考思考1.冯诺依曼计算机模型有哪几个基本组成部分?各部分的主要功能是什么?2.什么叫软件?说明软件与硬件之间的关系。5练习练习 2 2 基本数据类型与顺序结构基本数据类型与顺序结构【内容简介内容简介】1.掌握 C 语言基本数据类型的概念,理解数据类型与运算的关系。2.掌握简单变量的定义,算术表达式和赋值表达式的使用。3.掌握基本输入输出函数 scanf()及 printf()的使用。2.12.1 选择题选择题1 1、 C 不是 C 语言提供的关键字。 A)scanf

8、 B)printf C)mian D)return2、C 语言中最简单的数据类型包括 B 。A)整型、实型、逻辑型 B)整型、实型、字符型C)整型、字符型、逻辑型 D)整型、实型、逻辑型、字符型3 3、C 语言中运算对象必须是整型的运算符是 A 。A) % B)/ C)= D)+4 4、C 语言规定:在一个源程序中,main 函数的位置 D 。 A)必须放在程序的开头 B)必须放在程序的后面 C)可以放在程序的任何位置,但在执行程序时是从程序的开头执行 D)可以放在程序的任何位置,但在执行程序时是从 main 函数开始的5 5、下面程序段的输出结果是 B 。int x;x=-3+4*5-6;

9、printf(%d,x) ;x=3+4%5-6; printf(%d ,x);x=3*4-5-6; printf(%d ,x);x=(7+6)%5/2; printf(%d ,x);A)11 -3 3 1 B)11 1 1 1 C)12 -3 2 1 D)11 1 2 16 6、在 ASCII 码表中,每一个大写字母比它对应的小写字母的 ASCII 码 C 。A) 大 32 B)大 64 C)小 32 D)一样大7、以下选项中,非法的字符常量是 C 。 A) w B) t C) n D) 658、已知字符A的 ASCII 码值是 65,字符变量 c1 的值是A,c2 的值是D。执行语句“pri

10、ntf(%d,%d,c1,c2-2);”后,输出结果 C 。 A)A,B B)A,68 C)65,66 D)65,689、以下叙述中正确的是 A 。A)C 程序中注释部分可以出现在程序中任意合适的地方B)花括号“”和“”只能作为函数体的定界符6C)构成 C 程序的基本单位是函数,所有函数名都可以由用户命名D)分号是 C 语句之间的分隔符,不是语句的一部分10、下列关于 C 语言用户标识符的叙述中正确的是 B 。 A)用户标识符中可以出现下划线和中划线(减号) B)用户标识符中不可以出现中划线,但可以出现下划线 C)用户标识符中可以出现下划线,但不可以放在用户标识符的开头 D) 用户标识符中可以

11、出现下划线和和数字,它们都可以放在用户标识符的开头11、有以下定义:int b; char c10;则正确的输入语句是 B 。A) scanf(%d%c,&b,&c); B) scanf(%d%s,&b,c);C) scanf(%d%s,b,c); D) scanf(%d%s,b,&c);1212、下列说法正确的是 D 。A) 当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf(%6.2f,&price) ; B) 输入项可以是一个实型常量,如 scanf(%f,5.8) ; C) 只有格式控制,没有输入项,也能进行正确输入,如 sca

12、nf(%d%d); D)当输入数据时,必须指明变量的地址,如 scanf(%f,&price);1313、执行下面程序段,给 x,y 赋值时,不能作为数据分隔符的是 D 。int x,y;scanf(%d%d,&x,&y);A) Space 键 B) Tab 键 C)Enter 键 D)逗号1414、若有代数式,则不正确的 C 语言表达式是 B 。cdab5A) (5*a*b)/(c*d) B) 5*a*b/c*d C) 5*a*b/c/d D)a*b/c/d*51515、设有定义:float a=2,b=4,h=3;其中 a 为梯形的上底,b 为梯形的下底,h 为梯形

13、的高,以下 C 语言表达式不能计算出梯形面积的是 B 。 A)(a+b)*h/2 B)(1/2)*(a+b)*h C)(a+b)*h*1/2 D)h/2*(a+b)1616、设变量 x 为 float 型且已赋值,则以下语句中能将 x 中的数值保留到小数点后两位,并将第三位四舍五入的是 C 。A)x=x*100+0.5/100.0 B)x=(x*100+0.5)/100.0C)(int)(x*100+0.5)/100.0 D)x=(x/100+0.5)*100.017、假设 m 是一个三位数,从左到右用 a、b、c 表示各位的数字,则从左到右各个数字是bac 的三位数的表达式应该是 A 。 A

14、)b*100+a*10+c B)a*100+b*10+c C)b+a+c D)bac18、变量的指针,其含义是指该变量的 B 。A) 值 B) 地址 C) 名 D) 一个标志1919、设已有定义“float x;” ,则以下对指针变量 p 进行定义其赋初值的语句中正确的是 D 。A) float *p=1024; B) int *p=(int)x; C)float p=&x; D)float *p=&x;2020、若有说明语句“double *p,a;” ,则能通过 scanf 语句正确给输入项读入数据的是 D 7。A) *p=&a;scanf(%lf,p); B) *

15、p=&a;scanf(%f,p); C) p=&a;scanf(%lf,*p); D) p=&a;scanf(%lf,p);2.22.2 思考思考1.有人说:“程序设计就是编制程序”这句话对不对?为什么?2、请将您在本节的练习及实践过程中发现的问题写在这里。8练习练习 3 3 选择结构程序设计选择结构程序设计【内容简介内容简介】1.掌握选择结构程序设计的方法。2.掌握 if 语句的几种不同用法。3.掌握 switch 语句的用法。3.13.1 选择题选择题1 1、对 if 语句中表达式的类型,正确的描述是 D 。A)必须是关系表达式 B)必须是关系表达式或逻辑表达式C)

16、必须是关系表达式或算术表达式 D)可以是任意合法的表达式2 2、以下选项中,当 x 为奇数时,值为 0 的表达式是 D 。A)x%2= =1 B)x/2 C)x%2!=0 D)x%2= =03、能正确表示逻辑关系“”的 C 语言表达式是 D 。0a10a或A)a=10 or a=0|a=10&a=10|a=y=z) C)(x=y)&(y=z) D) (x=y)|(y=z)yx zy 5 5、以下程序段的输出结果是 B 。char x=A;x=(x=A&x=Z)?(x+32) :x ;printf(%cn,x); A) A B) a C) z D)Z6、已知 int x=

17、40;float pay,pay1=0,pay2=0;则执行以下语句后 pay,pay1,pay2 的整数值分别是 A 。if (xb)c=a;a=b;b=a;9printf(a=%d,b=%dn,a,b);A)a=30,b=30 B)a=20,b=30 C)a=30,b=20 D)a=20,b=208 8、对以下程序正确的判断是 A 。void main()int a,b;scanf(%d,%d,&a,&b);if(ab) a=b;b=a;else a+;b+;printf(%d,%dn,a,b);A)有语法错不能通过编译 B)若输入 4,5 则输出 5,6 C)若输入 5,

18、4 则输出 4,5 D)若输入 5,4 则输出 5,59 9、以下 if 语句语法正确的是 B 。A)if(x0) printf(%fn,x) B)if(x0) x=x*x; printf(%fn,x);else printf(%fn,-x); else printf(%fn,-x);C)if(x0) x=x*x; printf(%fn,x); D)if(x0) x=x*x; printf(%fn,x)else printf(%fn,-x); else printf(%fn,-x);1010、以下程序段的输出结果是 D 。int a=0,b=0,c=0;if(a=b+c) printf(*n)

19、;else printf($n);A)有语法错不能通过编译 B)可以通过编译但不能通过链接 C)输出为* D)输出为$1111、假设 day 是整型变量,则以下语句中语法正确的是 C 。A) switch(day) B) switch daycase 0; case 0: case 1:printf(Mondayn);break; case 1:printf(Mondayn);break; C)switch(day) D)switch(day); case 0: printf(Errorn);break; case 0: printf(Errorn);break;case 1:printf(M

20、ondayn);break; case 1:printf(Mondayn);break; 1212、以下各语句序列中,能够将变量 x 和 y 中的较大值赋值到变量 t 中的是 B 。 A) if(xy) t=x;t=y; B) t=y; if(xy) t=x;C) if(xy) t=y;else t=x; D) t=x; if(xy) t=y;13、在嵌套使用 if 语句时,C 语言规定 else 总是 C 。A)和之前与其具有相同缩进位置的 if 配对B)和之前与其最近的 if 配对C)和之前与其最近的且不带 else 的 if 配对D)和之前的第 1 个 if 配对103.23.2 思考思

21、考1设分段函数如下:010122xxxxy请用流程图描述当输入一个 x 值后计算并输出该函数值的处理流程。2、请将您在本节的练习及实践过程中发现的问题写在这里?11练习练习 4 4 循环结构程序设计循环结构程序设计【内容简介内容简介】1.熟练掌握用 while,do-while、for 语句实现循环的方法,并分析、比较这三种形式的共同之处与其特点。2.掌握循环结构的嵌套,掌握 break 语句和 continue 语句在循环体中的作用。3.掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等) 。4.14.1 练习题练习题1、C 语言中用于结构化程序设计的 3 种基本结构是 A

22、。 A)顺序结构、选择结构、循环结构 B)if、switch、break C)for、while、do.while D)if、for、continue2、以下 for 语句中,书写错误的是 D 。A)for(i=1;i5;i+) B)i=1; for(;i5;i+)C)for(i=1;i5; ) i+; D)for(i=1,i5,i+)3 3、 以下叙述正确的是 D 。A) do-while 语句构成的循环不能用其它语句构成的循环来代替。B) do-while 语句构成的循环只能用 break 语句退出。C)用 do-while 语句构成的循环,在 while 后的表达式为非零时结束循环。D)

23、用 do-while 语句构成的循环,在 while 后的表达式为零时结束循环。4 4、以下程序段的执行结果是 C 。int i,sum;for(i=1;i=3;sum+) sum+=i;printf(“%dn”,sum);A) 6 B) 3 C) 死循环 D) 05、循环结构的特点是 C 。A)从上至下,逐个执行 B)根据判断条件,执行其中一个分支 C)满足条件时反复执行循环体 D)以上都对6 6、以下程序段的输出结果是 D 。int i,s=0;for(i=1;i10;i+=2) s+=i+1;printf(%dn,s); A) 自然数 19 的累加和 B)自然数 110 的累加和C) 自

24、然数 19 中的奇数之和 D) 自然数 110 中的偶数之和7、要求以下程序的功能是计算:,但程序运行后输出结果错误,导致101.31211s错误结果的程序行是 C 。#includeint main()12int n;float s=1.0;for(n=10;n1;n-)s=s+1/n;printf(%.2fn,s);return 0;A) s=1.0; B) for(n=10;n1;n-)C) s=s+1/n; D) printf(%.2fn,s);8 8、以下程序段的执行结果是 B 。int x=23;do printf(“%d”,x-); while(!x);A) 321 B) 23

25、C) 不输出任何内容 D) 陷入死循环9 9、以下程序段的输出结果是 B 。int n=9;while(n6) n-; printf(“%d”,n); A) 987 B) 876 C) 8765 D) 98761010、以下程序段中,while 循环执行的次数是 C 。int k=0;while(k= =1) k+;A)无限次 B)有语法错,不能执行 C)一次也不执行D)执行 1 次1111、以下程序段执行后 sum 的值是 C 。int i,sum; for(i=1;i6;i+) sum+=i; printf(“%dn”,sum);A)15 B)14C) 不确定D)012、已知 int i,

26、sum=0; 执行以下语句后 i,sum 的值分别是 B 。for(i=1;i=10;i+) ; ; sum=sum+i*i;A) 10,100 B) 11,121C) 11,385 D) 10,3851313、下列叙述中正确的是 C 。A) break 语句只能用于 switch 语句中 B) continue 语句的作用是使程序的执行流程跳出包含它的所有循环C) break 语句只能用在循环体和 switch 语句内13D) 在循环体内使用 break 语句和 continue 语句的作用相同1414、若变量已正确定义,要完成 5!的计算,则不能完成此操作的是 B 。A)for(i=1,p

27、=1;i=5;i+) p*=i;B)for(i=1;i=5;i+) p=1; p*=i; C)i=1; p=1; while(i=5) p*=i; i+; D)i=1; p=1; dop*=i;i+; while(i=5);15、已知“char c;int count=0;” ,则从键盘上输入一串字符CdeAbCM回车后执行以下语句,其结果是 count= D 。while (c=getchar()!=A) count+;A) 7 B) 4 C)2 D) 31616、以下程序运行后的输出结果是 D 。int main() int i=0,s=0;for(;) if(i= =3|i= =5) c

28、ontinue; if(i= =6) break; i+; s+=i; printf(%dn,s); return 0; A)10 B)13 C)21 D)程序进入死循环17、C 语言中 while 和 do-while 循环的主要区别是 A 。A) do-while 的循环体至少无条件执行一次B)while 的循环控制条件比 do-while 的循环控制条件严格C)do-while 允许从外部转到循环体内D)do-while 的循环体不能是复合语句18、以下程序段的输出结果是 B 。int i,j;for(i=1;i4;i+)for(j=i;j4;j+)printf(%d*%d=%d ,i,

29、j,i*j);printf(n);A)1*1=1 1*2=2 1*3=3 B) 1*1=1 1*2=2 1*3=3 2*1=2 2*2=4 2*2=4 2*3=6 3*1=3 3*3=914C)1*1=1 D)1*1=1 1*2=2 2*2=4 2*1=2 2*2=4 1*3=3 2*3=6 3*3=9 3*1=3 3*2=6 3*3=919、以下程序段的输出结果是 A 。int i;for(i=1;i=5;i+)if(i%2) printf();printf($);A)$ B)$ C)$ D)$20、以下程序段的功能是:按顺序读入 10 名学生 4 门课程的成绩,计算每位学生的平均分并输出,

30、但运行后结果不正确,调试中发现有一条语句出现的位置不正确。这条语句是 A 。int n,k;float score,sum,ave;sum=0.0;for(n=1;n=10;n+)for(k=1;kn,观察结果是否正确。再输入时,使 my) f(x,y);else if(yz) f(y,z);else f(x,z);printf(%d,%d,%dn,x,y,z); A)1,2,3B)3,1,2C)1,3,2D)2,3,112、以下程序程序运行后的输出结果是 D 。int fun(int a,int b)if(ab) return(a); else return(b);void main()in

31、t x=3,y=8,z=6,r; r=fun(fun(x,y),2*z); printf(%dn,r); A)3B)6C)8D)1213、以下程序的输出结果是 A 。#includelong fun(int n)long s;if(n=1|n=2) s=2;17else s=n-fun(n-1);return s;int main()printf(%ldn,fun(3);return 0;A)1 B)2 C)3 D)414、以下不正确的叙述是 D 。A) 宏替换不占用运行时间。 B) 宏名无类型。C) 宏替换只是字符替换。D) 宏名必须用大写字母表示。15、C 语言的编译系统对宏命令的处理 D

32、 。A) 在程序运行时进行的。B) 在程序连接时进行。C) 和 C 程序中的其它语句同时进行编译的。D) 在对源程序中其它语句正式编译之前进行的。16、以下程序中 for 循环执行的次数是C。#define N2#define MN+1#define NUM(M+1)*M/2void main()int i;for(i=1;i=NUM;i+)printf(“%dn”,i);A) 3B) 6C) 8D) 1217、以下程序的输出结果是 C 。#include#define f(x) x*xint main()int a=6,b=2,c;c=f(a)/f(b);printf(%dn,c);retu

33、rn 0; A)9 B)6 C)36 D)1818、以下叙述中正确的是 B 。A)全局变量的作用域一定比局部变量的作用域范围大B)静态(static)类别变量的生存期贯穿于整个程序的运行期间C)函数的形参都属于全局变量18D)未在定义语句中赋初值的 auto 变量和 static 变量的初值都是随机值5.25.2 思考思考1、编写自定义函数,输入 3 个顶点坐标构成一个三角形,求这个三角形的面积。自行设计需要的自定义函数的功能及个数。 (提示:求三条边长时需要用到求两点间的距离;求面积时需要用到海伦公式)2、请将您在本节的练习及实践过程中发现的问题写在这里。19练习练习 6 6 数组的基本使用

34、数组的基本使用【内容简介内容简介】1掌握一维数组的定义、赋值和输入输出的方法。2掌握与数组有关的算法(如查找、排序等算法) 。3掌握二维数组的定义、赋值和输入输出的方法。6.16.1 选择题选择题1、若有 char ch10;,则对 ch 数组元素的正确引用是 D 。A) ch(7) B) ch10 C) ch6.0 D)ch0 2、以下能正确定义一维数组的选项是 B A) int num ; B) #define N 100 int num N;C) int num0.100; D) int N=100; int numN; 3、下面能正确定义一维数组的选项是 D 。A) int a5=0,

35、1,2,3,4,5; B) int a5 =5;C) int aN=1,2,3 ; D) int a5=3 ;4、以下程序执行后输出结果是 A 。 main( ) int i,j,a5=1,2,3,4,5; int t; i=0,j=4;while(ij) t=ai; ai=aj;aj=t; i+;j-; for(i=0;i5;i+) printf(%d ,ai); printf(n); return 0; A)5 4 3 2 1 B) 5 2 3 4 1 C) 1 2 3 4 5 D) 1 2 3 4 55、以下程序运行后的输出结果是 D main() int i, n=0,0,0,0,0;

36、 for(i=1;i=4;i+) ni=ni-1*2+1; printf(%d ,ni);20 return 0; A)0 0 0 0 0 B) 0 1 2 3 4 C) 1 2 3 4 5 D) 1 3 7 15 6、以下不能正确定义二维数组的选项是 D A) int a22=1,2; B) int a2=1,2,3,4; C) int a22=1,2,3; D) int a2=1,2,3,4; 7、以下能正确定义数组并正确赋初值的语句是 D A) intN=5,bNN;B) int a12=1,3;C) intc2=1,2,3,4;D) int d32=1,2,34;8、下面能正确定义二维

37、数组的选项是 C 。A) int a3; B) int a3=22*3;C) int a23=1,2,3 ; D) int a23=(1,2,3,4,5,6) ;9、在 c 语言中,引用数组元素时,其数组下标的数据类型允许是C。 A)整型常量 B)整型表达式 C)整型常量或整型表达式 D)任何类型的表达式10、下面程序(每行程序前面的数字表示行号) A。 1 main() 2 3 int a3=3*0; 4 int i; 5 for(i=0;i3;i+) scanf(%d,&ai); 6 for(i=1;i=0) & (AiAi+1) t=Ai; Ai=Ai+1;Ai+1=t;

38、i-;n+; return 0; 21)2,3,9,10,12,15 )2,3,9,12,15,10 C)15,12,10,9,3,2 D)2,3,9,12,15,06.26.2 思考思考1、给定一个整型数组 a,要求求出其中小于 0 的元素的个数。请分析下面的程序是否符合题目要求。如果要求出大于 0 的元素的平均值,应如何修改?#define N 10int main() int aN=11,2,4,-1,5,-3,-66,0,10,-5; int i; int count=0; /*变量 count 用于计数,初始化为 0*/ for (i=1;i=N;i+) if(ai0) count+

39、; /*如果元素 aistrlen(s1) B) if(strlen(s1)strlen(s2) C)if(strcmp(s2,s1)0) D)if(strcmp(s1,s2)0) 6、以下程序的输出结果是 B 。#includeint main()char ch35=AAAA,BBB,CC;printf(%sn,ch1);return 0;A)AAAA B)BBB C)BBBCC D)CC7、已知 ASCII 码表中小写英文字母的 ASCII 码大于大写英文字母的 ASCII 码,则以下程序的输出结果是 B 。void main() int i=0;char st=CDEefg;while(

40、sti!=0) 23if(sti=A & sti=a & sti=z) sti=sti-( a-A);i+;printf(%s,st);A) CDEefg B) cdeEFG C) cdeefg D) CDEEFG8、以下程序中函数 f 的功能是将 n 个字符串按由大到小的顺序进行排序。程序运行后的输出结果是 C 。#include void f(char p10,int n) char t20; int i,j;for(i=0;in-1;i+)for(j=i+1;jn;j+)if(strcmp(pi,pj)= A & chj=a & chj= z) A els

41、e C j+;tranj=0;24printf(“%s”,tran);A) tranj=219-chj; B) tranj=chj+ a-A; C) tranj=chj; D) tranj=155-chj;7.27.2 思考思考1、有以下定义:“char a10,*b=a;” ,则 a 和 b 何时可以通用(即相互替代)?何时不能通用?2、字符09与数字 09 有何区别?如何从键盘输入数字 123,又如何从键盘输入字符串“123”?打印输出数字 123,字符串123,以及字符09的方式是否一样?3、如何将一个整数转化成对应的或相反的字符串?例如将 123 转换成123,或者转换成321。反过来

42、如何将一个数字类型的字符串转化成对应的整数?4、请将您在本节的练习及实践过程中发现的问题写在这里。25练习练习 8 8 指针、数组指针、数组与函数与函数【内容简介内容简介】1. 掌握指针的概念及使用。2掌握一维数组的数组名与地址的关系;掌握使用指针来操作一维数组3掌握二维数组的数组名与地址的关系;掌握使用指针来操作二维数组4. 掌握指针作为函数参数使的使用要求。8.18.1 选择题选择题1、若用数组名作为函数调用的实参,传递给形参的是 A 。 A) 数组的首地址 B) 数组中第一个元素的值 C) 数组中全部元素的值 D) 数组元素的个数2、下列的叙述错误的是 C 。A)改变函数形参的值,不会改

43、变对应实参的值B)函数可以返回地址值C)可以给指针变量赋一个整数作为地址值D)当在程序的开头包含头文件 stdio.h 时,可以给指针变量赋 NULL3、已有定义:int i,a10,*p; , 则合法的赋值语句是 D 。A) p=i; B) p=a5; C) p=a2+2; D) p=a+2;4、以下程序运行后的输出结果是 A 。#includeint main()int a10=1,2,3,4,5,6,7,8,9,0,*p;for(p=a;pa+10;p+)printf(%d,*p);printf(n);return 0;A)1,2,3,4,5,6,7,8,9,0, B) 2,3,4,5,

44、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,5、设有定义语句:int x6=2,4,6,8,5,7,*p=x,i; 要求依次输出 x 数组 6 个元素中的值,不能完成此操作的语句是 D A) for(i=0;i6;i+) printf(%2d,*(p+); B) for(i=0;i6;i+) printf(%2d,*(p+i);C) for(i=0;i6;i+) printf(%2d,*p+); D) for(i=0;i6;i+) printf(%2d,(*p)+);6、以下程序运行后的输出结果是 B 26#include

45、int main()int a33,*p,i;p=&a00;for(i=0;i9;i+)pi=i+1;printf(%dn,a12);return 0;A) 3 B) 6 C) 9 D) 27、以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是 C 。A)char s10= hello ; B)char t=hello,*s=t;C)char s10; s= hello; D)char s10; strcpy(s, hello);8、以下程序段执行后输出结果是 A 。char *p10= abc,aabdfg,dcdbe,abbd,cd; printf(“%dn”,strlen

46、(p4);A) 2 B) 3 C) 4 D) 59、以下程序段运行后的输出结果是 D 。char *p=abcde0fghjik0;printf(%dn,strlen(p);A) 12B) 15C) 6 D) 510、以下程序运行后的输出结果是 B 。prt(int *m,int n)int i; for(i=0;in;i+) mi+=1;int main()int a =1,2,3,4,5,i;prt(a,5);for(i=0;i5;i+) printf(%d,ai);A)1,2,3,4,5, B)2,3,4,5,6, C)3,4,5,6,7, D)2,3,4,5,1,11、以下程序段运行后

47、的输出结果是 C 。 int a=1,2,3,4,5,6,7,8,9,10,11,12,b,*p=a+5,*q=&b; *q=*(p+5); printf(%d %dn,*p,*q); A) 运行后报错 B) 6 6 C) 6 11 D) 5 10 12、以下程序段,b 中的值是 D 27 int a10=1,2,3,4,5,6,7,8,9,10,*p=&a3,b; b=p5;A) 5B) 6C) 8D) 9 13、以下程序段运行后的输出结果是 B 。char str1100=abcddfefdbd,c=d;char *s,char t;s=str1; t=c;while(*s

48、) if(*s=t) *s=t-a+A; s+; printf(%sn,str1); A) ABCDDEFEDBD B) abcDDfefDbDC) abcAAfefAbA D) Abcddfefdbd 14、以下程序段运行后的输出结果是 C char str20=Hello,Ningbo, *p=str0; printf(%sn,p+20); A) NULL B) Hello C) Ningbo D) 出错提示:hello表示字符串,其中一个字符串占用二维数组的一行,如这里hello占据了二维数组 str 的第一行,其中 str00为h15、以下程序运行后的输出结果是 C #include#

49、define N 20void fun(int *a,int n,int m)int i,j;for(i=m;i=n;i-) ai+1=ai;int main()int i,aN=1,2,3,4,5,6,7,8,9,10;fun(a,2,9);for(i=0;i5;i+) printf(“%d”,ai);return 0;A) 10234 B) 12344 C) 12334 D) 1223416、执行以下程序段后, p 和 q 所指向的单元的内容分别为 C 。int a = 1,2,3, *p, *q; p = a+1; q = p+;A) (*p) = 1, (*q) = 2 B) (*p)

50、 = 2, (*q) = 3 28C) (*p) = 3, (*q) = 2 D) 以上都错17、下面程序的运行结果是 B int a34=1,2,3,4,5,6,7,8,9,10,11,12; main() int s, i; for(s=0, i=0; i3; i+) s+= *(*a+i); printf(%d , s); for(s=0, i=0; i3; i+) s+= *(a+i); printf(%d , s); return 0; )6 6 )6 15 C)15 15 D)10 1018、 已定义以下函数,则函数的功能是 A 。fun(char *p2, char *p1) w

51、hile(*p2=*p1)!=0) p1+; p2+; A) 将 p1 所指字符串复制到 p2 所指内存空间B) 将 p1 所指字符串的地址赋给指针 p2C) 对 p1 和 p2 两个指针所指字符串进行比较D) 检查 p1 和 p2 两个指针所指字符串中是否有019、以下程序是将两个字符串连接到一起。请选择合适的语句填空。void mystrcat(char *s,char *t) char *p,*q;p=s; q=t;while(*p!=0) p+;while(*q!=0) B A) *q=*p; B) *p=*q; C) *p=*s; D) *q=*t;p+; q+; A A) *p=0

52、; B) *p=n; C) p=NULL ; D)此处不需要任何语句void main() char str1100,str2100;scanf(%s%s,str1,str2);mystrcat(str1,str2);printf(String is %sn,str1);20、下列函数的功能是 C 。int fun(char *s)char *t;29t=s;while(*t) t+;return(t-s) ;A)比较两个字符串的大小B)计算 s 所指字符串占用内存字节的个数C)计算 s 所指字符串的长度D)将 s 所指字符串复制到字符串 t 中8.28.2 思考思考1、已知函数 sort(i

53、nt *array, int len)实现了对一维数组从大到小的排序,现需要对二维数组int aa1010排序,排序结果按从大到小先行后列存放在原二维数组 aa 中,请问是否可以使用 sort 函数直接对二位数组 aa 进行排序而无需另写二维数组的排序函数?2、如果要对 10 个字符串进行排序,应如何使用字符数组实现,是一维还是二维?如何表示某一个字符串的首地址? 3、请将您在本节的练习及实践过程中发现的问题写在这里。30 练习练习 9 结构体结构体【内容简介内容简介】1. 掌握结构体类型变量和结构数组的定义和使用。2. 了解结构指针的使用。9.19.1 选择题选择题1 1、以下选项中,不能定

54、义、以下选项中,不能定义 s s 为合法的结构变量的是为合法的结构变量的是 D D 。A) struct abc B)struct double score; double score; char name20; char name20;s; s; C) struct ABC D)struct s double score; double score; char name20; char name20; ;struct ABC s; 2 2、有如下定义struct student int num;float score;stu;则下面叙述中不正确的是 C 。A)struct 是结构体类型的关键

55、字 B)student 是用户定义的结构体类型 C)stu 是用户定义的结构体类型 D)num 和 score 都是结构体成员名3、当说明一个结构体变量时,系统分配给它的内存是 A 。A)各成员所需内存量的总和B)结构中第一个成员所需内存量C)成员中占内存量最大者所需的容量D)结构中最后一个成员所需内存量4、下列关于 typedef 的叙述错误的是 A 。A)用 typedef 可以增加新类型B)typedef 只是将已存在的类型用一个新的名字来代表C)用 typedef 可以为各种类型说明一个新名,但不能用来为变量说明一个新名D)用 typedef 为类型说明一个新名,通常可以增加程序的可读

56、性5 5、以下程序运行后的输出结果是 B 。struct STUchar num10; float score3;31main()struct STU s3= 20021,90,95,85,20022,95,80,75,20023,100,95,90,*p=s; int i;float sum=0;for(i=0;iscorei; printf(%6.2fn,sum);A)260.00 B)270.00 C)280.00 D)285.006 6、设有如下定义:struct skint a; float b;data,*p;若有 p=&data;,则对 data 中的 a 域的正确引用是

57、 B 。A)p-data.a B)(*p).a C) (*p).data.a D)p.data.a7 7、以下程序运行后的输出结果是 B 。struct s int x,y; data2=10,100,20,200;main () struct s *p=data;printf(%dn,+(p-x);A) 10 B) 11 C) 20 D)218 8、设有如下说明, 则以下选项中,能正确定义结构体数组并赋初值的语句是 A 。typedef structint n;charc;double x;STD;A) STD tt2=1,A,62,2, B,75; B) STD tt2=1,A,62,2,

58、 B,75;C) struct tt2=1,A,2, B; D) struct tt2=1,A,62.5,2, B,75.0;9 9、设有如下定义,则下面各输入语句中错误的是 B 。struct sscharname10;intage;charsex;std3,*p=std;A) scanf(%d,&(*p).age); B) scanf(%s,);C) scanf(%c,&std0.sex)D) scanf(%c,&(p-sex);1010、设有如下定义,若要使 p 指向 data 中的 a 域,正确的赋值语句是 C 。struck sk int a;

59、float b;data;int *p;32A) p=&a;B) p=data.a; C) p=&data.a; D) *p=data.a;11、根据下面的定义,能打印出字母 M 的语句是 D 。struct personchar name9;int age;struct person class10= John,17, Paul,19, Mary,18, Adam,16;A)printf(%cn,);B)printf(%cn,1);C)printf(%cn,1);D)printf(%cn,

60、0);12、C 语言结构体类型变量在程序执行期间 A 。A)所有成员一直驻留在内存中 B)只有一个成员驻留在内存中C)部分成员驻留在内存中 D)没有成员驻留在内存中9.29.2 思考思考1.输入和运行以下程序union dataint i2;float a;long b;char c4;u;main ( )scanf(%d,%d,&u.i0,&u.i1);printf(i0=%d,i1=%da=%fb=%1dc0=%c,c1=%c,c2=%c,c3=%c,u.i0,u.i1,u.a,u.b,u.c0,u.c1,u.c2,u.c3);(1)首先输入两个整数 10000、20000 给 u.i0和 u.il,分析运行结果。(2)然后将 scanf 语句改为:scanf(ld,&u.b);输入 60000 给 b,再次分析运行结果。2 2定义一个结构体变量(包括年、月、日) ,计算该日在本年中是第几天,注意闰年问题。以下的程序没有考虑闰年问题,请调试以下程序,并将闰年的判断加在程序中使其完整。

温馨提示

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

评论

0/150

提交评论