欢迎来到天天文库!上传客服QQ1290478887点击这里,给天天文库发消息,QQ:1290478887 | 帮助中心 分享价值,快乐你我!
天天文库
全部分类
  • 学术论文 >
    毕业论文 毕业设计 临时分类
    学术论文
    毕业论文 毕业设计 临时分类 土木工程毕业设计 asp毕业设计 安卓毕业设计 php毕业设计 文献综述 其他论文 外文翻译 Java毕业设计 asp.net论文 英语论文 机械毕业设计 船舶工程毕业论文 法学专业毕业论文 工商管理毕业论文 汉语言文学毕业论文 行政管理毕业论文 护理学毕业论文 化学专业毕业论文 会计学毕业论文 计算机论文 教育学论文 金融管理论文 景观设计毕业论文 旅游管理毕业论文 文秘秘书毕业论文 人力资源管理毕业论 期刊论文 数学专业毕业论文 心理学毕业论文 平面艺术设计论文 开题报告 音乐专业毕业论文 市场营销论文 装修毕业论文
  • 应用文档 >
    商业计划 设计方案 施工方案
    应用文档
    商业计划 设计方案 施工方案 事迹材料 使用与维护手册 工作思想汇报 表格清单 应急预案 调研报告 策划书 项目建议书 技术措施与指南 可行性研究报告 分析报告 演讲稿 自查报告 党校课件 党校讲课稿 合同协议范本 ppt模板 工作总结 工作计划 工作报告 讲话稿 心得体会 活动方案 规章制度 读后感 汇报材料 其他办公文档
  • 行业资料 >
    专业技术 解决措施 指导说明书
    行业资料
    专业技术 解决措施 指导说明书 组织施工设计 技术规范 国家标准 行业标准 经营营销
  • 教育资源 >
    课后答案 笔记讲义 主题班会
    教育资源
    课后答案 笔记讲义 主题班会 医学课件 PDF书籍 商业培训 优质公开课课件 考试资料 教学课件 职业培训课件 大学学习资料 高中学习资料 初中学习资料 小学学习资料 其他学习资料 练习与试题 英语资料 课程设计 临时分类
  • 其他资料 >
    其他文档 免费文档
    其他资料
    其他文档 免费文档
  • 首页 天天文库 > 资源分类 > DOC文档下载
     

    c++语言程序设计电大形考作业

    • 资源ID:18760055       资源大小:430.00KB        全文页数:90页
    • 资源格式: DOC        下载权限:游客/注册会员    下载费用:30积分 【人民币30元】
    游客快捷下载 游客一键下载
    会员登录下载
    下载资源需要30积分 【人民币30元】

    邮箱/QQ:
    温馨提示:
    支付成功后,系统会根据您填写的邮箱或者QQ号作为您下次登录的用户名和密码(如填写的是QQ,那登陆用户名和密码就是QQ号),方便下次登录下载和查询订单;
    特别说明:
    付款后即可正常下载,下载内容为可编辑文档格式,推荐使用支付宝;
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    1、本站资源不支持迅雷下载,请使用浏览器直接下载(不支持QQ浏览器);
    2、文档下载后都不会有天天文库的水印,预览文档经过压缩,下载后原文更清晰;
    3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
    4、所有文档都是可以预览的,天天文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供保证;
    5、文档的总页数、文档格式和文档大小以系统显示为准(不同办公软件显示的页数偶尔有区别),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
    6、如果您还有什么不清楚的,可以点击右侧栏的客服对话;
    下载须知 | 常见问题汇总

    c++语言程序设计电大形考作业

    教育部人才培养模式教育部人才培养模式 改革和开放教育项目改革和开放教育项目 湖湖 州州 广广 播播 电电 视视 大大 学学 CC语言程序设计语言程序设计形成性考核作业形成性考核作业 学生姓名学生姓名 学学 号号 班班 级级 湖州广播电视大学湖州广播电视大学 编制编制 2 CC语言程序设计语言程序设计平时作业一平时作业一 批阅得分 教师签名 一、单项选择题一、单项选择题 1. C源程序文件的默认扩展名为 。 A. cpp B. exe C. obj D. lik 2. 由 C源程序文件编译而成的目标文件的默认扩展名为 。 A. cpp B. exe C. obj D. lik 3. 由 C目标文件连接而成的可执行文件的默认扩展名为 。 A. cpp B. exe C. obj D. lik 4. C程序从上机到得到结果的几个操作步骤依次是 。 A. 编译、编辑、连接、运行 B. 编辑、编译、连接、运行 C. 编译、运行、编辑、连接 D. 编辑、运行、编辑、连接 5. 以下标识符中不全是保留字的是( ) 。 A. case for int B. default then while C. bool class long D. goto return char 6. 能作为 C程序的基本单位是 。 A. 字符 B. 语句 C. 函数 D. 源程序文件 7. 程序中主函数的名字为( ) 。 A. main B. MAIN C. Main D. 任意标识符 8. C程序的基本模块为( ) 。 A. 表达式 B. 标识符 C. 语句 D. 函数 9. 可用作 C语言用户标识符的一组标识符是 。 A. void define WORD B. a3_b3 _123 YN C. for -abc Case D. 2a DO sizeof 10. 存储以下数据,占用存储字节最多的是( ) 。 A. 0 B. ‘0’ C. “0” D. 0.0 11. 程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用 符号作 为分隔符。 A. 空格或逗号 B. 逗号或回车 C. 逗号或分号 D. 空格或回车 3 12. 设”int a12;”,则执行完语句”aa*a;”后,a 的值是 。 A. 12 B. 144 C. 156 D. 288 13. 假设在程序中 a、b、c 均被定义成整型,所赋的值都大于 1,则下列能正确表示 代数式的表达式是 。 abc 1 A. 1.0/a*b*c B. 1/a*b*c C. 1/a/b/floatc D. 1.0/a/b/c 14. 设”int a15,b26;” ,则”couta,b;”的输出结果是 。 A. 15 B. 26,15 C. 15,26 D. 26 15. 设 x 是一个 bool 型的逻辑量,y 的值为 10,则表达式 x y 的值为( ) 。 A. 1 B. 0 C. 与 x 值相同 D. 与 x 值相反 16. x0 x10 的相反表达式为( ) 。 A. x0 || x10 B. x0 x10 C. x0 || x10 D. x0 x10 17. x0 || y5 的相反表达式为( ) 。 A. x0 || y5 B. x0 y5 C. x0 || y5 D. x0 y5 18.设 x 和 y 均为 bool 量,则 x y 为真的条件是 。 A. 它们均为真 B. 其中一个为真 C. 它们均为假 D. 其中一个为假 19.设 x 和 y 均为 bool 量,则 x || y 为假的条件是 。 A. 它们均为真 B. 其中一个为真 C. 它们均为假 D. 其中一个为假 20. 字符串”ab12\n”的长度为( ) 。 A. 6 B. 7 C. 8 D. 9 21. 假定下列 x 和 y 均为 int 型变量,则不正确的赋值为( ) 。 A. xy B. xy C. xy D. xy 22. 下列的符号常量定义中,错误的定义是( ) 。 A. const M10; B. const int M20; C. const char ch; D. const bool marktrue; 23. 循环语句“forint i0; in; i couti*i’ ’;”中循环体执行的次数为 。 A. 1 B. n-1 C. n D. n1 24. 在下面循环语句中循环体执行的次数为( ) 。 forint i0; in; i ifin/2 break; A. n/2 B. n/21 C. n/2-1 D. n-1 25. 在下面循环语句中内层循环体 S 语句的执行总次数为( ) 。 forint i0; in; i 4 forint ji; jn; j S; A. n2 B. n1/2 C. nn-1/2 D. nn1/2 26. 在下面循环语句中循环体执行的次数为( ) 。 int i0,s0; whiles20 {i; si;} A. 4 B. 5 C. 6 D. 7 27. 在下面循环语句中循环体执行的次数为( ) 。 int i0; do i; whilei*i10; A. 4 B. 3 C. 5 D. 2 28. 当处理特定问题时的循环次数已知时,通常采用( )来解决。 A. for 循环 B. while 循环 C. do 循环 D. switch 语句 29. 循环体至少被执行一次的语句为( ) 。 A. for 循环 B. while 循环 C. do 循环 D. 任一种循环 30. switch 语句能够改写为( )语句。 A. for B. if C. do D. while 31. do 语句能够改写为( )语句。 A. 复合 B. if C. switch D. while 32. 在下面的一维数组定义中,哪一个有语法错误。 ( ) A. int a[]{1,2,3}; B. int a[10]{0}; C. int a[]; D. int a[5]; 33. 在下面的字符数组定义中,哪一个有语法错误。 ( ) 。 A. char a[20]”abcdefg”; B. char a[]”xy55.”; C. char a[15]; D. char a[10]’5’; 34. 在下面的二维数组定义中,正确的是 。 A. int a[5][]; B. int a[][5]; C. int a[][3]{{1,3,5},{2}}; D. int a[]10; 35. 假定一个二维数组的定义语句为“int a[3][4]{{3,4},{2,8,6}};” ,则元素 a[1] [2]的值为( ) 。 A. 2 B. 4 C. 6 D. 8 36. 假定一个二维数组的定义语句为“int a[3][4]{{3,4},{2,8,6}};” ,则元素 a[2] [1]的值为( ) 。 A. 0 B. 4 C. 8 D. 6 37. 若定义了函数 double *function, 则函数 function 的返回值为( ) 。 A. 实数型 B.实数的地址 C.指向函数的指针 D.函数的地址 38. 以下说法中正确的是( ) 。 A. C程序总是从第一个定义的函数开始执行 B. C程序总是从 main 函数开始执行 C. C函数必须有返回值,否则不能使用函数 D. C程序中有调用关系的所有函数必须放在同一个程序文件中 5 39. 以下叙述中不正确的是( ) 。 A. 在一个函数中,可以有多条 return 语句 B. 函数的定义不能嵌套,但函数的调用可以嵌套 C. 函数必须有返回值 D. 不同的函数中可以使用相同名字的变量 40. 函数重载是指( ) 。 A. 两个或两个以上的函数取相同的函数名,但形参的个数或类型不同 B. 两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同 C. 两个以上的函数名字不同,但形参的个数或类型相同 D. 两个以上的函数取相同的函数名,并且函数的返回类型相同 41. 以下关于函数模板叙述正确的是( ) 。 A. 函数模板也是一个具体类型的函数 B. 函数模板的类型参数与函数的参数是同一个概念 C. 通过使用不同的类型参数,函数模板可以生成不同类型的函数 D. 用函数模板定义的函数没有类型 42. 下列( )的调用方式是引用调用。 A. 形参和实参都是变量 B.形参是指针,实参是地址值 C. 形参是引用,实参是变量 D.形参是变量,实参是地址值 43. 为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择( ) 。 A. 内联函数 B.重载函数 C.递归函数 D.函数模板 44. 函数原型语句正确的是( ) 。 A. int Functionvoid a; B.void Function int; C. int Functiona; D.void intdouble a; 45. C中函数返回值的类型是由( )决定的。 A. return 语句中表达式的类型 B.该函数定义时的类型 C.调用函数时的调用语句 D.系统根据结果 46. 以下函数的返回结果是( ) 。 int functionchar *x { char *px; while*p; returnp-x-1; } A. 求字符串的长度 B.将字符串 x 连接到字符串 p 后面 C. 将字符串 x 复制到字符串 p 中 D.将字符串 x 反向存放 47. 函数调用 funcexp1,exp2,exp3,exp4,exp5中所含实参的个数为 个。 A. 1 B. 2 C. 4 D. 5 48. 设有如下函数定义 int fchar *s { char *ps; 6 while*p’\0’ p; returnp-s; } 在主函数中用 coutf“good”调用上述函数, 则输出结果为( ) 。 A. 3 B. 4 C. 5 D. 6 49. 以下正确的函数原型语句是 。 A. double funint x,int y B. double funint x;int y C. double funint,int; D. double funint x,y; 50. 以下正确的说法是( ) 。 A. 用户调用标准库函数前,必须重新定义 B. 用户可以重新定义标准库函数,若如此,该函数将失去原有含义 C. 系统不允许用户重新定义标准库函数 D. 用户调用标准库函数前,不必使用预编译命令将该函数所在文件包括到用户源 文件中 二、填空题二、填空题 1. C语言是在_________语言的基础上发展起来的。 2. C语言的编译单位是扩展名为__________的__________文件。 3. 行尾使用注释的开始标记符为__________。 4. 多行注释的开始标记符和结束标记符分别为__________和__________。 5. 用于输出表达式值的标准输出流对象是_________。 6. 用于从键盘上为变量输入值的标准输入流对象是________。 7. 一个完整程序中必须有一个名为________的函数。 8. 一个函数的函数体就是一条_________语句。 9. 当执行 cin 语句时,从键盘上输入每个数据后必须接着输入一个________符,然后 才能继续输入下一个数据。 10. 在 C程序中包含一个头文件或程序文件的预编译命令为__________。 11. 程序中的预处理命令是指以______字符开头的命令。 12. 一条表达式语句必须以______作为结束符。 13. 在include 命令中所包含的头文件,可以是系统定义的头文件,也可以是 ________定义的头文件。 14. 使用include 命令可以包含一个头文件,也可以包含一个______文件。 15.一个函数定义由________和________两部分组成。 16.若一个函数的定义处于调用它的函数之前,则在程序开始可以省去该函数的 ______语句。 17.C头文件和源程序文件的扩展名分别为______和______。 7 18.程序文件的编译错误分为________和________两类。 19.当使用_______保留字作为函数类型时,该函数不返回任何值。 20.当函数参数表用______保留字表示时,则表示该参数表为空。 21.从一条函数原型语句“int fun1void;”可知,该函数的返回类型为______,该 函数带有______个参数。 22. 当执行 cout 语句输出 endl 数据项时,将使 C显示输出屏幕上的光标从当前位 置移动到________的开始位置。 23. 假定 x5,y6,则表达式 x*y 的值为__________。 24. 假定 x5,y6,则表达式 x--*--y 的值为__________。 25. 假定 x5,y6,则执行表达式 y*x计算后,x 和 y 的值分别为__________和 __________。 26. 假定 x5,y6,则执行表达式 yx--计算后,x 和 y 的值分别为__________和 __________。 27. C常数 0x145 对应的十进制值为__________。 28. C常数 0345 对应的十进制值为__________。 29. 十进制常数 245 对应的十六进制的 C表示为__________。 30. 十进制常数 245 对应的八进制的 C表示为__________。 31. signed char 类型的值域范围是________至__________之间的整数。 32. int 和 float 类型的数据分别占用_________和__________个字节。 33. float 和 double 类型的数据分别占用_________和________个字节。 34. bool 和 char 类型的数据分别占用_________和________个字节。 35. unsigned short int 和 int 类型的长度分别为_________和________。 36. 字符串”This\’s a book.\n”的长度为__________。 37. 字符串”\nThis\’s a pen\n\n”的长度为__________。 38. 在 C中存储字符串”abcdef”至少需要________个字节。 39. 在 C中存储字符串”abc”至少需要________个字节。 40. 假定 x 和 y 为整型,其值分别为 16 和 5,则 xy 和 x/y 的值分别为__________和 __________。 41. 假定 x 和 y 为整型,其值分别为 16 和 5,则 x/y 和 doublex/y 的值分别为 __________和__________。 42. 假定 x 是一个逻辑量,则 x true 的值为__________。 43. 假定 x 是一个逻辑量,则 x || true 的值为__________。 44. 假定 x 是一个逻辑量,则 x false 的值为__________。 45. 假定 x 是一个逻辑量,则 x || false 的值为__________。 46. 假定 x 是一个逻辑量,则x || false 的值为__________。 47. 假定 x 是一个逻辑量,则 x x 的值为__________。 48. 假定 x 是一个逻辑量,则 x || x 的值为__________。 8 49. 数学算式的 C表达式为________________。 xy yx 2  50. 数学算式的 C表达式为________________。 yx xy  3 51. 数学算式的 C表达式为________________。 22 1 byax  52. 设 enum Printstatus{ready,busy,error}; 则 coutbusy 的输出结果是 ________。 53. 设 enum Printstatus{ready2,busy,error}; 则 coutbusy 的输出结果是 ________。 54. 常数-4.205 和 6.7E-9 分别具有__________和__________位有效数字。 55. 枚举类型中的每个枚举值都是一个__________,它的值为一个__________。 56. 常数 100 和 3.62 的数据类型分别为__________和__________。 57. 若 x5, y10, 则计算 y*x 表达式后,x 和 y 的值分别为______和______。 58. 假定 x 和 ch 分别为 int 型和 char 型,则 sizeofx和 sizeofch的值分别为 ______和______。 59. 假定 x10,则表达式 x102030 的值为______。 60. 表达式 sqrt81和 pow6,3的值分别为______和______。 三、程序填充题,对程序、函数或类中划有横线的位置,根据题意按标号把合适的内三、程序填充题,对程序、函数或类中划有横线的位置,根据题意按标号把合适的内 容填写到程序下面相应标号的后面。容填写到程序下面相应标号的后面。 1. 斐波那契数列的第 1 和第 2 个数分别为 0 和 1 ,从第三个数开始,每个数等于其 前两个数之和。求斐波那契数列中的前 20 个数,要求每行输出 5 个数。 includeiostream.h void main { int f,f1,f2,i; cout” 斐波那契数列\n”; f10; f21; coutsetw6f1setw6f2; fori3;i20;i { f______1______; coutsetw6f; if_____2______ coutendl; f1f2; f2____3_______; } coutendl; } 9 1 2 3 2. 计算的值。     10 1 1 1 i i i i x includeiostream.h void main { double x,p11,p21,s0; int i,j1; cout输入 x 的值; cinx; fori1;i10;i { p1*___1_____; p2*____2____; sj*p1/p2; //j 的值为-1i1 j____3____; } coutsendl; } 1 2 3 3. 打印出 2 至 99 之间的所有素数即不能被任何数整除的数。 includeiostream.h includemath.h void main { int i,n; forn2; ___1___; n { int tempintsqrtn; //求出 n 的平方根并取整 fori2; ___2___; i ifni0 ___3___; ifitemp coutn ; } cout\n; } 10 1 2 3 4. 采用辗转相除法求出两个整数的最大公约数。 includeiostream.h void main { int a,b; cout请输入两个正整数; cinab; whilea0 || __1___ {cout重新输入; cinab;} whileb { int r; rab; ___2___; ___3___; //分别修改 a 和 b 的值 } coutaendl; //输出最大公约数 } 1 2 3 5. 把从键盘上输入的一个大于等于 3 的整数分解为质因子的乘积。如输入 24 时得到 的输出结果为“2 2 2 3” ,输入 50 时得到的输出结果为“2 5 5” ,输入 37 时得到的输出 结果为“37” 。 includeiostream.h void main { int x; cout请输入一个整数,若小于 3 则重输; do cinx; while___1___; int i2; do{ while___2___ { couti ; x/i; } ___3___; }whileix; ifx1 coutx; 11 coutendl; } 1 2 3 6. 下面函数是求两个整型参数 a 和 b 的最小公倍数。 int f2int a, int b { int i2, p1; do { whileai0 ___1___ { p*i; a/i; b/i; } ___2___; }whileai ___3___; return p*a*b; } 1 2 3 7. 在输出屏幕上打印出一个由字符’*’组成的等腰三角形,该三角形的高为 5 行,从 上到下每行的字符数依次为 1,3,5,7,9。 includeiostream.h void main { int i,j; fori1;___1___;i { forj1;j9;j ifj5-i || ___2___ cout’ ’; else ___3___; coutendl; } } 1 2 3 8. 统计字符串中英文字母个数的程序。 include iostream.h 12 int count char str[]; void main{ char s1[80]; cout ”Enter a line”; cin s1; cout ”count”counts1endl; } int countchar str[]{ int num0; //给统计变量赋初值 forint i0;str[i];i if str[i]’a’ str[i]’z’ ||___1___ ___2___; ___3___; } 1 2 3 9. 主函数调用一个 fun 函数将字符串逆序。 includeiostream.h includestring.h ___1___; void main { char s[80]; cins; ___2___; cout”逆序后的字符串”sendl ; } void funchar ss[] { int nstrlenss; forint i0; ___3____; i { char css[i]; ss[i]ss[n–1–i]; ss[n–1–i]c; } } 1 2 3 13 10. 从一个字符串中删除所有同一个给定字符后得到一个新字符串并输出。 includeiostream.h const int len20; void delstrchar a[],char b[],char c; void main { char str1[len],str2[len]; char ch; cout输入一个字符串; cinstr1; cout输入一个待删除的字符; cinch; delstrstr1,str2,ch; coutstr2endl; } void delstrchar a[],char b[],char c { int j0; forint i0; ___1___; i if___2___ b[j]a[i]; b[j]___2___; } 1 2 3 四、写出程序运行结果四、写出程序运行结果 1. includeiostream.h includestdlib.h void main { int a[8]{25,48,32,85,64,18,48,29}; int max,min; maxmina[0]; forint i0; i8; i { ifmaxa[i] maxa[i]; ifmina[i] mina[i]; } coutmaxmaxendl; coutminminendl; 14 } 2. includeiostream.h void main { int a,b; fora1,b2; b50; { couta b ; aab; bab; } coutendl; couta b endl; } 3. includeiostream.h const int M3, N4; void main { int i,j,s0; fori1;iM;i forj1;jN;j si*j; cout”s”sendl; } 4. includeiostream.h void main { int a2,b5,c0; ifab10 ca*b; else c3*ab; ifc20 coutc*c; else cout4c-5; coutendl; aab; bab;cab; couta,b,ca,b,cendl; } 15 5. includeiostream.h void main { int x5; switch2*x-3 { case 4 coutx’ ’; case 7 cout2*x1’ ’; case 10 cout3*x-1’ ’; break; default coutdefaultendl; } coutswitch end.endl; } 6. includeiomanip.h includemath.h int a[4]{36,-5,73,8}; void main { int i,y; fori0; i4; i { ifa[i]0 y1; else ifa[i]10 y a[i]* a[i]3; else ifa[i]60 y4*a[i]-5; else yintsqrta[i]; // sqrtx为取 x 的平方根函数 coutsetw5a[i]setw5y; } } 7. includeiostream.h int a[8]{36,25,20,43,12,70,66,35}; void main { int s0,s1,s2; s0s1s20; 16 forint i0; i8; i { switcha[i]3 { case 0 s0a[i];break; case 1 s1a[i];break; case 2 s2a[i];break; } } couts0’ ’s1’ ’s2endl; } 8. includeiomanip.h const int N5; void main { int i,p1,s0; fori1;iN; i { pp*i; ssp; coutsetw5isetw5p; coutsetw5sendl; } } 9. includeiomanip.h const int M20; void main { int c2,c3,c5; c2c3c50; forint i1; iM; i { ifi20 c2; ifi30 c3; ifi50 c5; } coutc2 c3 c5endl; } 17 10. includeiomanip.h void main { int i,j; fori0;i5;i { forji;j5;j cout’*’; coutendl; } } 11. includeiostream.h void main { forint i1,s0;i20;i { ifi20 || i30 continue; couti’ ’; si; } coutsendl; } 五、指出程序或函数的功能五、指出程序或函数的功能 1. includeiostream.h void main { int i,s0; fori2;i30;i2 si*i; coutssendl; } 2. includeiostream.h includestdlib.h includemath.h 18 void main { int i10,a; whilei0 { arand9010; int j, kintsqrta1e-5; //sqrtx为求 x 的平方根函数 forj2; jk; j ifaj0 break; ifjk {couta ; i--;} } } 3. void transint x { char a[10]; int i0,rem; do { remx16; xx/16; ifrem10 a[i]48rem; //’0’字符的 ASCII 码为 48 else a[i]65rem; //’A’字符的 ASCII 码为 65 i; }whilex0; whilei0 couta[i]; coutendl; } 4. includeiostream.h double f1int n { double sign1,s1; forint i2;in; i { ssign/i*i; sign*-1; } return s; } 19 void main { int a; cina; coutf1aendl; } 5. double f1double a, double b, char op { switchop { case ’’ return ab; case ’-’ return a-b; case ’*’ return a*b; case ’/’ ifb0 { coutdivided by 0endl; exit1; } else return a/b; default coutoperator errorendl; exit1; } } 6. includeiostream.h includemath.h void main { int x,y; cinx; yintsqrtx; //sqrtx为求 x 的算术平方根 forint i1;iy;i ifxi0 cout”x”i’*’x/iendl; } 7. includeiostream.h void main 20 { int i,p1,s0; int N; cout输入一个正整数; cinN; fori1;iN;i { p*i; sp; } coutsendl; } 8. includeiostream.h includestdlib.h includetime.h const N10; int ffint x, int y { int z; coutxy; cinz; ifxyz return 1; else return 0; } void main { int a,b,c0; srandtime0; //初始化随机数序列 forint i0;iN;i { arand201; //rand函数产生 0-32767 之间的一个随机数 brand201; cffa,b; } cout得分c*10endl; } 9. int s1int n { 21 int x; ifn1 x1; else xs1n-1n*n; return x; } 10. void fun5char* a, const char* b { while*b *a*b; *a0; } 11. templateclass T bool fun8T a[], int n, T key { forint i0;in;i ifa[i]key return true; return false ; } 六、编程题六、编程题 1. 编一程序求出满足不等式 11/21/3...1/n≥5 的最小 n 值。 2. 计算 1332...310的值并输出,假定分别用 i,p,s 作为循环变量、累乘变量和累 加变量的标识符。 3. 求满足不等式 2242...n21000 的最大 n 值,假定分别用 i 和 s 作为取偶数值和 累加值的变量,并限定使用 do 循环编程。 4. 已知,求出并显示当 x 依次取从键盘输入的不         0 143 0 2 22 xaxax xxa y 同值时所对应的 y 值,要求把 a 定义为常量,其值设定为 10.2,x 的每个值由键盘输入, 并假定用-100 作为键盘输入数据的终止标志,求平方根函数为 sqrtx。 22 CC语言程序设计语言程序设计平时作业二平时作业二 批阅得分 教师签名 一、单项选择题一、单项选择题 1. 面向对象软件开发中使用的 OOA 表示( ) 。 A. 面向对象分析 B. 面向对象设计 C. 面向对象语言 D. 面向对象方法 2. 面向对象软件开发中使用的 OOD 表示( ) 。 A. 面向对象分析 B. 面向对象设计 C. 面向对象语言 D. 面向对象方法 3. 关于面向对象系统分析,下列说法中不正确的是( ) 。 A. 术语“面向对象分析”可以用缩写 OOA 表示 B. 面向对象分析阶段对问题域的描述比实现阶段更详细 C. 面向对象分析包括问题域分析和应用分析两个步骤 D. 面向对象分析需要识别对象的内部和外部特征 4. 在一个类的定义中,包含有( )成员的定义。 A. 数据 B. 函数 C. 数据和函数 D. 数据或函数 5. 在类作用域中能够通过直接使用该类的( )成员名进行访问。 A. 私有 B. 公用 C. 保护 D. 任何 6. 在关键字 public 后面定义的成员为类的( )成员。 A. 私有 B. 公用 C. 保护 D. 任何 7. 在关键字 private 后面定义的成员为类的( )成员。 A. 私有 B. 公用 C. 保护 D. 任何 8. 假定 AA 为一个类,a 为该类公有的数据成员,x 为该类的一个对象,则访问 x 对象 中数据成员 a 的格式为( ) 。 A. xa B. x[a] C. x-a D. x.a 9. 假定 AA 为一个类,a为该类公有的函数成员,x 为该类的一个对象,则访问 x 对 象中函数成员 a的格式为( ) 。 A. x.a B. x.a C. x-a D. x-a 10. 假定 AA 为一个类,a 为该类公有的数据成员,px 为指向该类对象的一个指针,则 访问 px 所指对象中数据成员 a 的格式为( ) 。 A. pxa B. px[a] C. px-a D. px.a 11. 假定 AA 为一个类,a 为该类私有的数据成员,GetValue为该类公有函数成员, 它返回 a 的值,x 为该类的一个对象,则访问 x 对象中数据成员 a 的格式为( ) 。 23 A. x.a B. x.a C. x-GetValue D. x.GetValue 12. 假定 AA 为一个类,int a为该类的一个成员函数,若该成员函数在类定义体外 定义,则函数头为( ) 。 A. int AAa B. int AAa C. AAa D. AAint a 13. 假定 AA 为一个类,a 为该类公有的数据成员,若要在该类的一个成员函数中访问 它,则书写格式为( ) 。 A. a B. AAa C. a D. AAa 14. 若需要把一个类外定义的成员函数指明为内联函数,则必须把关键字( )放在 函数原型或函数头的前面。 A. in B. inline C. inLine D. InLiner 15. 在多文件结构的程序中,通常把类的定义单独存放于( )中。 A. 主文件 B. 实现文件 C. 库文件 D. 头文件 16. 在多文件结构的程序中,通常把类中所有非内联函数的定义单独存放于( )中。 A. 主文件 B. 实现文件 C. 库文件 D. 头文件 17. 在多文件结构的程序中,通常把含有 main函数的文件称为( ) 。 A. 主文件 B. 实现文件 C. 程序文件 D. 头文件 18. 一个 C程序文件的扩展名为( ) 。 A. .h B. .c C. .cpp D. .cp 19. 在 C程序中使用的 cin 标识符是系统类库中定义的( )类中的一个对象。 A. istream B. ostream C. iostream D. fstream 20. 在 C程序中使用的 cout 标识符是系统类库中定义的( )类中的一个对象。 A. istream B. ostream C. iostream D. fstream 21. 假定 AA 是一个类,abc 是该类的一个成员函数,则参数表中隐含的第一个参数的 类型为( ) 。 A. int B. char C. AA D. AA* 22. 假定 AA 是一个类,abc 是该类的一个成员函数,则参数表中隐含的第一个参数为 ( ) 。 A. abc B. *this C. this D. this 23. 假定 AA 是一个类, “AA abc;”是该类中一个成员函数的原型,若该函数存在 对*this 赋值的语句,当用 x.abc调用该成员函数后,x 的值( ) 。 A. 已经被改变 B. 可能被改变 C. 不变 D.不受函数调用的影响 24. 假定 AA 是一个类, “AA* abcconst;”是该类中一个成员函数的原型,若该函数 返回 this 值,当用 x.abc调用该成员函数后,x 的值( ) 。 A. 已经被改变 B. 可能被改变 C. 不变 D. 受到函数调用的影响 24 25. 类中定义的成员默认为( )访问属性。 A. public B. private C. protected D. friend 26. 结构中定义的成员默认为( )访问属性。 A. public B. private C. protected D. friend 27. 当类中一个字符指针成员指向具有 n 个字节的存储空间时,它所能存储字符串的 最大长度为 。 A. n B. n1 C. n-1 D. n-2 28. 在一个用数组实现的队列类中,假定数组长度为 MS,队首元素位置为 first,队 列长度为 length,则队尾(即最后一个)元素的位置为 。 A. length1 B. firstlength C. firstlength-1MS D. firstlengthMS 29. 在一个用数组实现的队列类中,假定数组长度为 MS,队首元素位置为 first,队 列长度为 length,则队尾的后一个位置为 。 A. length1 B. firstlength C. firstlength-1MS D. firstlengthMS 30. 在一个用数组实现的队列类中,假定数组长度为 MS,队首元素位置为 first,队 列长度为 length,则队首的后一个位置为 。 A. first1 B. first1MS C. first-1MS D. firstlengthMS 31. 在一个用链表实现的队列类中,假定每个结点包含的值域用 elem 表示,包含的指 针域用 next 表示,链队的队首指针用 elemHead 表示,队尾指针用 elemTail 表示,若链队 非空,则进行插入时必须把新结点的地址赋给 。 A. elemHead B. elemTail C. elemHead-next 和 elemHead D. elemTail-next 和 elemTail 32. 在一个用链表实现的队列类中,假定每个结点包含的值域用 elem 表示,包含的指 针域用 next 表示,链队的队首指针用 elemHead 表示,队尾指针用 elemTail 表示,若链队 为空,则进行插入时必须把新结点的地址赋给 。 A. elemHead B. elemTail C. elemHead 和 elemTail D. elemHead 或 elemTail 33. 队列具有( )的操作特性。 A. 先进先出 B. 先进后出 C. 进出无序 D. 进出任意 34. 栈具有( )的操作特性。 A. 先进先出 B. 先进后出 C. 进出无序 D. 进出任意 35. 对于一个类的构造函数,其函数名与类名 。 A. 完全相同 B. 基本相同 C. 不相同 D. 无关系 36. 对于一个类的析构函数,其函数名与类名 。 A. 完全相同 B. 完全不同 C. 只相差一个字符 D. 无关系 37. 类的构造函数是在定义该类的一个 时被自动调用执行的。 25 A. 成员函数 B. 数据成员 C. 对象 D. 友元函数 38. 类的析构函数是一个对象被 时自动调用的。 A. 建立 B. 撤消 C. 赋值 D. 引用 39. 一个类的构造函数通常被定义为该类的 成员。 A. 公用 B. 保护 C. 私有 D. 友元 40. 一个类的析构函数通常被定义为该类的 成员。 A. 私有 B. 保护 C. 公用 D. 友元 41. 假定 AB 为一个类,则执行 “AB x;”语句时将自动调用该类的 。 A. 带参构造函数 B. 无参构造函数 C. 拷贝构造函数 D. 赋值重载函数 42. 假定 AB 为一个类,则执行 “AB xa,5;”语句时将自动调用该类的 。 A. 带参构造函数 B. 无参构造函数 C. 拷贝构造函数 D. 赋值重载函数 43. 假定 AB 为一个类,则执行 “AB *snew ABa,5;”语句时得到的一个动态对象为 _______。 A. s B. s-a C. s.a D. *s 44. 假定 AB 为一个类,则执行 “AB r1r2;”语句时将自动调用该类的 。 A. 无参构造函数 B. 带参构造函数 C. 赋值重载函数 D. 拷贝构造函数 45. 若需要使类中的一个指针成员指向一块动态存储空间,则通常在 函数中完 成。 A. 析构 B. 构造 C. 任一成员 D. 友元 46. 当类中的一个整型指针成员指向一块具有 n*sizeofint大小的存储空间时,它 最多能够存储 个整数。 A. n B. n1 C. n-1 D. 1 47. 假定一个类的构造函数为 “Aint aa, int bb {aaa; baa*bb;}”,则执行 “A x4,5;”语句后,x.a 和 x.b 的值分别为 。 A. 4 和 5 B. 5 和 4 C. 4 和 20 D. 20 和 5 48. 假定一个类的构造函数为 “Aint aa1, int bb0 {aaa; bbb;}”,则执行 “A x4;”语句后,x.a 和 x.b 的值分别为 。 A. 1 和 0 B. 1 和 4 C. 4 和 1 D. 4 和 0 49. 假定 AB 为一个类,则 为该类的拷贝构造函数的原型说明。 A. ABAB x; B. ABAB x; C. void ABAB x; D. ABint x; 50. 假定一个类的构造函数为 “Bint ax, int bx aax, bbx {}”,执行 “B x1,2,y3,4;xy;”语句序列后 x.a 的值为 。 A. 1 B. 2 C. 3 D. 4 二、填空二、填空 1.假定 a 是一个一维指针数组,则 ai 所指对象的地址比 a 大________字节。 2. 假定 a 是一个一维数组,则 a[i]的指针访问方式为________。 3. 假定 a 是一个一维数组,则 a[i]对应的存储地址(以字节为单位)为 26 ____________。 4. 一个数组的数组名实际上是指向该数组________元素的指针,并且在任何时候都不 允许________它。 5. 假定指向一维数组 b 中元素 b[4]的指针为 p,则 p3 所指向的元素为_______,p-2 所指向的元素为________。 6.若要定义整型指针 p 并初始指向 x,则所使用的定义语句为________。 7. 若 p 指向 x,则________与 x 的表示是等价的。 8. 在一个二维数组 int a[m][n]中,包含的一维元素 a[i]的类型为________,访问 a[i]时返回值的类型为________。 9. 假定一个二维数组为 c[5][8],则 c[3]的值为二维元素________的地址,c[3]2 的值为二维元素________的地址。 10. 假定 p 为指向二维数组 int d[4][6]的指针,则 p 的类型为________。 11. 假定 a 是一个二维数组,则 a[i][j]的指针访问方式为____________。 12. 若要把 y 定义为整型变量 x 的引用,则所使用的定义语句为________。 13. 若 y 是 x 的引用,则对 y 的操作就是对_______的操作。 14. 若 y 是 x 的引用,则y 和x 的值________,即为变量________的地址。 15. 执行 int pnew int 操作得到的一个动态分配的整型对象为________。 16. 执行 int *pnew int[10]操作,使 p 指向动态分配的数组中下标为 0 的元素,该 元素可表示为_______或________。 17. 执行 char *pnew char’a’操作后,p 所指向的数据对象的值为________。 18. 执行 new char[m][n]操作时的返回值的类型为________。 19. 执行________操作将释放由 p 所指向的动态分配的数据空间。 20. 执行________操作将释放由 p 所指向的动态分配的数组空间。 21. NULL 是一个符号常量,通常作为空指针值,它的具体值为________。 22. 变量 v 定义为“double v23.4;” ,要使指针 pv 指向 v,则定义 pv 的语句为 ______________。 23. 已知语句“coutp;”的输出是“Hello” ,则语句“cout*p;”输出的是 __________。 24. 已知语句“couts;”的输出是“apple” ,则执行语句“couts2;”的输出结 果为__________。 25. 指针变量 pv 和 pc 定义为“void *pv ”Hello, word”; char *pc;” ,要将 pv 值 赋给 pc,则正确的赋值语句是_______________。 26. 数组 b 定义为“int b[20][100];” ,要使 p[j][k] 与 b[j][k] 等效,则指针 p 应 定义为__________________。 27. 与结构成员访问表达式 p-name 等价的表达式是____________。 28. 与结构成员访问表达式*fp.score 等价的表达式是____________。 29. 已知变量 a 定义为“int a5;” ,要使 ra 成为 a 的引用,则 ra 应定义为 ____________。 27 30. 已知有定义“int x, a[]{5,7,9}, *paa;” ,在执行“x*pa;”语句后,x 的 值是________。 31.已知有定义“int x, a[]{6,10,12}, *paa;” ,在执行“x*pa;”语句后, *pa 的值是________。 32. 已知有定义“int x, a[]{15,17,19}, *paa;” ,在执行“x*pa;”后,*pa 的值是________。 33. 以面向对象方法构造的系统,其基本单位是__________。 34. 每个对象都是所属类的一个__________。 35. 对象将其大部分实现细节隐藏起来,这种机制称为__________。 36. 基类和派生类的关系称为__________。 37. 复杂对象可以由简单对象构成,这种现象称为__________。 38. 对象是对问题域中客观事物的________,它是一组属性和在这些属性上操作的 __________。 39. 特殊类的对象拥有其一般类的全部属性与操作,称特殊类________了一般类。 40. 如果一个派生类的基类不止一个,则这种继承称为____________。 41. 如果一个派生类只有一个唯一的基类,则这样的继承关系称为__________。 42. C支持两种多态性_________时的多态性和__________时的多态性。 43. 在 C中,编译时的多态性是通过__________实现的,而运行时的多态性则是通 过__________实现的。 44. 面向对象软件开发的生命周期分为三个阶段,即分析、__________和 __________。 45. 面向对象的分析包括__________分析和__________分析两步。 46. 类定义中,既包含数据成员,也包含________成员。 47. 类中的数据成员的访问属性通常被指明为________。 48. 类中的供外部调用定义的函数成员,其访问属性通常被定义为________。 49. 对于类中定义的任何成员,其隐含访问权限为________。 50. 对于结构中定义的任何成员,其隐含访问权限为________。 51. 为了使类中的成员不能被类外的函数通过成员操作符访问,则应把该成员的访问 权限定义为________。 52. 若在类的定义体中给出了一个成员函数的完整定义,则该函数属于________函数。 53. 若在类的定义体中只给出了一个成员函数的原型,而在类外给出完整定义时,则 其函数名前必须加上________和两个冒号分隔符。 54. 若在类的定义体中只给出了一个成员函数的原型,则在类外给出完整定义时,其 函数名前必须加上类名和________分隔符。 55. 若要把类外定义的成员函数规定为内联函数,则必须把________关键字放到函数 原型或函数头的前面。 56. 把一个类的定义体和所有成员函数的定义体所构成的程序范围叫做该类的 28 ____________。 57. 假定 AA 是一个类, “AA* abc;”是该类中一个成员函数的原型,则在类外定义 时的函数头为__________________。 58. 成员函数的参数表在类作用域中,成员函数的返回值类型________类作用域中。 59. 为了避免在调用成员函数时修改对象中的任何数据成员,则应在定义该成员函数 时,在函数头的后面加上________关键字。 60. 若只需要通过一个成员函数读取数据成员的值,而不需要修改它,则应在函数头 的后面加上________关键字。 61. 在每个成员函数中,隐含的第一个参数的参数名为________。 62. 数组 a 定义为“int a[100];” ,要使 p[j] 与 a[j] 等效,则指针 p 应定义为 ______________。 三、程序填充,对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容三、程序填充,对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容 填写到程序下面相应标号的后面填写到程序下面相应标号的后面 1. 已知一维数组类 ARRAY 的定义如下,ARRAY 与普通一维数组区别是其重载的运算 符[ ]要对下标是否越界进行检查。 class ARRAY{ int *v; //指向存放数组数据的空间 int s; //数组大小 public ARRAYint a[], int n; ARRAY{delete []v;} int size{ return s;} int operator[]int n; }; ___1___ operator[]int n //[ ]的运算符成员函数定义 { ifn0 || ___2___ {cerr下标越界; exit1;} return ___3___; } 1 2 3 2. 已知一维数组类 ARRAY 的定义如下,构造函数的作用是把参数 n 的值赋给 s,给 v 动态分配长度为 n 的数组空间,接着利用数组参数 a 初始化 v 所指向的数组。 class ARRAY{ int *v; //指向存放数组数据的空间 int s; //数组大小 29 public ARRAYint a[], int n; ARRAY{delete []v;} int size{ return s;} int operator[]int n; }; ___1___ ARRAYint a[], int n { ifn0 {vNULL;s0;return;} sn; v___2___; forint i0; in; i ___3___; } 1 2 3 3. 下面是一维数组类 ARRAY 的定义,ARRAY 与普通一维数组区别是a用而不是[]进 行下标访问,2下标从 1 而不是从 0 开始,c要对下标是否越界进行检查。 class ARRAY{ int *v; //指向存放数组数据的空间 int s; //数组大小 public ARRAYint a[], int n; ARRAY{delete []v;} int size{ return s;} int operatorint n; }; ___1___ operatorint n { // 的运算符函数定义 if___2___ {cerr下标越界; exit1;} return ___3___; } 1 2 3 4. 已知一个类的定义如下 includeiostream.h class AA { 30 int a[10]; int n; public void SetAint aa[], int nn; //用数组 aa 初始化数据成员 a, //用 nn 初始化数据成员 n int MaxA; //从数组 a 中前 n 个元素中查找最大值 void SortA; //采用选择排序的方法对数组 a 中前 n 个元素 //进行从小到大排序 void InsertA;//采用插入排序的方法对数组 a 中前 n 个元素进行从小到大排序 void PrintA; //依次输出数组 a 中的前 n 个元素 }; 该类中 MaxA函数的实现如下,请在标号位置补充适当的内容。 int ____1_____ { int xa[0]; forint i1; in; i ifa[i]x ___2___; ___3___; } 1 2 3 5. 已知一个类的定义如下 includeiostream.h class AA { int a[10]; int n; public void SetAint aa[], int nn; //用数组 aa 初始化数据成员 a, //用 nn 初始化数据成员 n int MaxA; //从数组 a 中前 n 个元素中查找最大值 void SortA; //采用选择排序的方法对数组 a 中前 n 个元素 //进行从小到大排序 void InsertA;//采用插入排序的方法对数组 a 中前 n 个元素进行从小到大排序 void PrintA; //依次输出数组 a 中的前 n 个元素 }; 31 void AASortA { int i,j; fori0; ___1___; i { int xa[i], ki; forji1; jn; j ifa[j]x ___2___ a[k]a[i]; ___3___; } } 1 2 3 6. 已知一个类的定义如下 includeiostream.h class AA { int a[10]; int n; public void SetAint aa[], int nn; //用数组 aa 初始化数据成员 a, //用 nn 初始化数据成员 n int MaxA; //从数组 a 中前 n 个元素中查找最大值 void SortA; //采用选择排序的方法对数组 a 中前 n 个元素 //进行从小到大排序 void InsertA;//采用插入排序的方法对数组 a 中前 n 个元素进行从小到大排序 void PrintA; //依次输出数组 a 中的前 n 个元素 }; void ___1___ //插入排序函数 { int i,j; fori1; in; i { int xa[i]; forji-1; j0; j-- ifxa[j] ___2___; else ___3___; a[j1]x; 32 } } 1 2 3 7. 已知一个类的定义如下 includeiostream.h class AA { int a[10]; int n; public void SetAint aa[], int nn; //用数组 aa 初始化数据成员 a, //用 nn 初始化数据成员 n int MaxA; //从数组 a 中前 n 个元素中查找最大值 void SortA; //采用选择排序的方法对数组 a 中前 n 个元素 //进行从小到大排序 void InsertA;//采用插入排序的方法对数组 a 中前 n 个元素进行从小到大排序 void PrintA; //依次输出数组 a 中的前 n 个元素 //最后输出一个换行 }; 使用该类的主函数如下 void main { int a[10]{23,78,46,55,62,76,90,25,38,42}; AA x; ___1___; int m___2___; ___3___; coutmendl; } 该程序运行结果为 23 78 46 55 62 76 78 1 2 3 8. 已知一个类的定义如下 33 includeiostream.h class AA { int a[10]; int n; public void SetAint aa[], int nn; //用数组 aa 初始化数据成员 a, //用 nn 初始化数据成员 n int MaxA; //从数组 a 中前 n 个元素中查找最大值 void SortA; //采用选择排序的方法对数组 a 中前 n 个元素 //进行从小到大排序 void PrintA; //依次输出数组 a 中的前 n 个元素, //最后输出一个换行 }; 使用该类的主函数如下 void main { int a[10]{23,78,46,55,62,76,90,25,38,42}; ___1___; x.SetAa,8; int ___2___; ___3___; x.PrintA; coutmendl; } 该程序运行结果为 23 25 46 55 62 76 78 90 90 1 2 3 9. 已知一个利用数组实现栈的类定义如下 const int ARRAY_SIZE10; class Stack { public void Init {top-1;} //初始化栈为空 void Pushint newElem; //向栈中压入一个元素 34 int Pop; //从栈顶弹出一个元素 bool Empty { //判栈空 iftop-1 return true;else return false;} int Depth {return top1;} //返回栈的深度 void Print; //按照后进先出原则依次输出栈中每个元素,直到栈空为止 private int elem[ARRAY_SIZE]; //用于保存栈元素的数组 int top; //指明栈顶元素位置的指针 }; void StackPushint newElem { if___1___ { cout栈满endl; exit1; //中止运行 } ___2___; elem[top]___3___; } 1 2 3 10. 已知一个利用数组实现栈的类定义如下 const int ARRAY_SIZE10; class Stack { public void Init {top-1;} //初始化栈为空 void Pushint newElem; //向栈中压入一个元素 int Pop; //从栈顶弹出一个元素 bool Empty { //判栈空 iftop-1 return true;else return false;} int Depth {return top1;} //返回栈的深度 void Print; //按照后进先出原则依次输出栈中每个元素,直到栈空为止 private int elem[ARRAY_SIZE]; //用于保存堆栈元素的数组 int top; //指明栈顶元素位置的指针 }; 35 该类的 Pop 和 Print 函数的实现分别如下 ___1___ { iftop-1 { cout栈空endl; exit1; //中止运行 } return ___2___; } void StackPrint { whileEmpty cout___3___ ; } 1 2 3 四、写出程序运行结果四、写出程序运行结果 1. includeiostream.h void main { int a[10]{76,83,54,62,40,75,90,92,77,84}; int b[4]{60,70,90,101}; int c[4]{0}; forint i0;i10;i { int j0; whilea[i]b[j] j; c[j]; } fori0;i4;i coutc[i]’ ’; coutendl; } 2. includeiostream.h includestring.h void main { char a[5][10]{student,worker,soldier,cadre,peasant}; char s1[10], s2[10]; strcpys1,a[0]; strcpys2,a[0]; 36 forint i1;i5;i { ifstrcmpa[i], s10 strcpys1,a[i]; ifstrcmpa[i], s20 strcpys2,a[i]; } couts1’ ’s2endl; } 3. includeiostream.h const int N5; void fun; void main { forint i1; iN; i fun; } void fun { static int a; int b2; couta3,ab ; } 4. includeiostream.h void main { char s[3][5]{1234,abcd,-*/}; char *p[3]; forint I0;I3;I p[I]s[I]; forI2;I0;I-- coutp[I] ; coutendl; } 5. includeiostream.h void main { int i,j,len[3]; char a[3][8]{year,month,day}; fori0;i3;i { 37 forj0;j8;j ifa[i][j]\0 { len[i]j;break; } couta[i]len[i]endl; } } 6. includeiostream.h includestring.h class CD { char* a; int b; public void Initchar* aa, int bb { anew char[strlenaa1]; strcpya,aa; bbb; } char* Geta {return a;} int Getb {return b;} void Output {couta bendl;} } dx; void main { CD dy; dx.Initabcdef,30; dy.Initshenyafen,3*dx.Getb5; dx.Output; dy.Output; } 7.includeiostream.h includestring.h class CD { 38 char* a; int b; public void Initchar* aa, int bb { anew char[strlenaa1]; strcpya,aa; bbb; } char* Geta {return a;} int Getb {return b;} void Output {couta bendl;} }; void main { CD dx,dy; char a[20]; dx.Initabcdef,30; strcpya,dx.Geta; strcata,xyz; dy.Inita,dx.Getb20; dx.Output; dy.Output; } 8. includeiostream.h class CE { private int a,b; int getmax {return ab ab;} public int c; void SetValueint x1,int x2, int x3 { ax1; bx2; cx3; } int GetMax; }; 39 int CEGetMax { int dgetmax; return dc dc; } void main { int x5,y12,z8; CE ex, *epex; ex.SetValuex,y,z; coutex.GetMaxendl; ep-SetValuexy,y-z,20; coutep-GetMaxendl; } 9. includeiostream.h class CE { private int a,b; int getmin {return ab ab;} public int c; void SetValueint x1,int x2, int x3 { ax1; bx2; cx3; } int GetMin; }; int CEGetMin { int dgetmin; return dc dc; } void main { int x5,y12,z8; CE *ep; epnew CE; ep-SetValuexy,y-z,10; coutep-GetMinendl; CE a*ep; 40 couta.GetMin*315endl; } 10. includeiostream.h class Franction { //定义分数类 int nume; //定义分子 int deno; //定义分母 public //把*this 化简为最简分数,具体定义在另外文件中实现 void FranSimp; //返回两个分数*this 和 x 之和,具体定义在另外文件中实现 Franction FranAddconst Franction x; //置分数的分子和分母分别 0 和 1 void InitFranction {nume0; deno1;} //置分数的分子和分母分别 n 和 d void InitFranctionint n, int d {numen; denod;} //输出一个分数 void FranOutput {coutnume/denoendl;} }; void main { Franction a,b,c,d; a.InitFranction7,12; b.InitFranction-3,8; c.InitFranction; ca.FranAddb; dc.FranAdda; couta ; a.FranOutput; coutb ; b.FranOutput; coutc ; c.FranOutput; coutd ; d.FranOutput; } 11. includeiostream.h class Franction { //定义分数类 int nume; //定义分子 int deno; //定义分母 41 public //把*this 化简为最简分数,具体定义在另外文件中实现 void FranSimp; //返回两个分数*this 和 x 之和,具体定义在另外文件中实现 Franction FranAddconst Franction x; //置分数的分子和分母分别 0 和 1 void InitFranction {nume0; deno1;} //置分数的分子和分母分别 n 和 d void InitFranctionint n, int d {numen; denod;} //输出一个分数 void FranOutput {coutnume/denoendl;} }; void main { Franction a,b,c,d; a.InitFranction6,15; b.InitFranction3,10; c.InitFranction; ca.FranAddb; dc.FranAdda; couta ; a.FranOutput; coutb ; b.FranOutput; coutc ; c.FranOutput; coutd ; d.FranOutput; } 五、程序改错,指出错误的程序行并改正五、程序改错,指出错误的程序行并改正 1. 在下面的定义中,NODE 是链表结点的结构,appendToList 则是一函数,其功能是 在 list 所指向的链表的末尾添加一个新的值为 x 的结点,并返回表头指针。函数中有两处 错误,指出错误所在行的行号并提出改正意见。 struct NODE{ int data; NODE *next; }; NODE* appendToListNODE *list, int x{ //1 行 NODE *pnew int; //2 行 p-datax; //3 行 42 p-nextNULL; //4 行 iflistNULL return p; //5 行 NODE *p1list; //6 行 whilep1-nextNULL p1p1-next; //7 行 p1p; //8 行 return list; } 错误行的行号为______和________。 分别改正为______________和______________。 2. 在下面的定义中,NODE 是链表结点的结构,addToList 则是一函数,其功能是将 一个值为 x 的新结点添加到以 plist 为表头指针的链表的首部即第一个结点的前面并返 回表头指针。函数中有两处错误,指出错误所在行的行号并提出改正意见。 struct NODE{ int data; NODE *next; }; NODE* adndToListNODE * plist, int x{ //1 行 NODE *p; //2 行 *pnew NODE; //3 行 p-datax; //4 行 p-nextNULL; //5 行 plistp; //6 行 return p; //7 行 } 错误行的行号为______和________。 分别改正为______________和______________。 3. 下面程序的主函数中第 7 和 8 行有错误,请把它们改正过来。 includeiostream.h class Franction { //定义分数类 int nume; //定义分子 int deno; //定义分母 public //把*this 化简为最简分数,具体定义在另外文件中实现 void FranSimp; 43 //返回两个分数*this 和 x 之和,具体定义在另外文件中实现 Franction FranAddconst Franction x; //置分数的分子和分母分别 0 和 1 void InitFranction {nume0; deno1;} //置分数的分子和分母分别 n 和 d void InitFranctionint n, int d {numen; denod;} //输出一个分数 void FranOutput {coutnume/denoendl;} }; void main //1 行 { //2 行 Franction a,b,c; //3 行 a.InitFranction6,15; //4 行 b.InitFranction1; //5 行 c.InitFranction; //6 行 cFranAdda,b; //7 行 coutc.nume’/’c.denoendl; //8 行 } //9 行 第 7 行改正为_________________________。 第 8 行改正为__________________________。 4. 假定要求下面程序的输出结果为“23/20”,其主函数中第 6,9,10 行有错误,请 给予改正。 includeiostream.h class Franction { //定义分数类 int nume; //定义分子 int deno; //定义分母 public //把*this 化简为最简分数,具体定义在另外文件中实现 void FranSimp; //返回两个分数*this 和 x 之和,具体定义在另外文件中实现 Franction FranAddconst Franction x; //置分数的分子和分母分别 0 和 1 void InitFranction {nume0; deno1;} //置分数的分子和分母分别 n 和 d void InitFranctionint n, int d {numen; denod;} 44 //输出一个分数 void FranOutput {coutnume/denoendl;} }; void main //1 行 { //2 行 Franction *anew Franction; //3 行 Franction *bnew Franction; //4 行 a-InitFranction6,15; //5 行 b.InitFranction3,4; //6 行 Franction c; //7 行 c.InitFranction; //8 行 ca.FranAddb; //9 行 coutc.FranOutputendl; //10 行 } //11 行 错误行的行号为______、________和________。 分别改正为____________________、________________和___________________。 5. 下面是一个类的定义,存在着 3 处语法错误,请指出错误行的行号并改正。 class CE { //1 行 private //2 行 int a,b; //3 行 int getmin {return ab ab;} //4 行 public //5 行 int c; //6 行 void SetValueint x1,int x2, int x3 { //7 行 ax1; bx2; cx3; //8 行 }; //9 行 int GetMin; //10 行 }; //11 行 int GetMin { //12 行 int dgetmin; //13 行 return dc dc; //14 行 } //16 行 错误行的行号为______、________和________。 分别改正为____________________、________________和___________________。 45 6. 下面程序段第 4-10 行中存在着三行语法错误,请指出错误行的行号并改正。 class A { //1 行 int a,b; //2 行 const int c; //3 行 public //4 行 Ac0;a0;b0 {} //5 行 Aint aa, int bb caabb; {aaa; bbb;} //6 行 }; //7 行 A a,b1,2; //8 行 A *xa, yb; //9 行 A *znew A, w[10]; //10 行 错误行的行号为______、________和________。 分别改正为_________________、____________________和 ___________________________。 7. 下面程序段第 4-9 行中存在着三条语句错误,请指出错误语句的行号并说明原因。 class A { //1 行 int a,b; //2 行 const int c; //3 行 public //4 行 A {abc0;} //5 行 Aint aa, int bbcaabb {aaa; bbb;} //6 行 }; //7 行 A a,b1,2,3; //8 行 A x2,3, y4; //9 行 错误行的行号为______、________和________。 错误原因分别为___________________、__________________和__________________。 8. 下面程序段第 10-17 行中存在着三条语句错误,请指出错误语句的行号并说明原因。 class A { //1 行 int a; //2 行 public //3 行 Aint aa0aaa{} //4 行 }; //5 行 46 class B { //6 行 int a,b; //7 行 const int c; //8 行 A d; //9 行 public //10 行 Bc0 {ab0;} //11 行 Bint aa, int bbdaabb { //12 行 aaa; bbb; caa-bb; //13 行 } //14 行 } //15 行 B a,b1,2; //16 行 B xa,yb,z1,2,3,; //17 行 错误行的行号为______、________和________。 错误原因分别为_____________________、____________________和 ___________________。 六、编程六、编程 1. 按照函数原型语句“void pint n;”编写一个递归函数显示出如下图形,此图形 是 n5 的情况。 55555 4444 333 22 1 2. 按照函数原型语句“void pint n;”编写一个递归函数显示出如下图形,此图形 是 n5 的情况。 1 22 333 4444 55555 3. 根据下面类中 Count 函数成员的原型和注释写出它的类外定义。 class AA { int* a; int n; 47 int MS; public void InitAAint aa[], int nn, int ms { ifnnms {coutErrorendl; exit1;} MSms; nnn; anew int[MS]; forint i0; in; i a[i]aa[i]; } int Countint x; //从数组 a 的前 n 个元素中统计出其 //值等于 x 的个数并返回。 }; 4. 根据下面类中 Search 函数成员的原型和注释写出它的类外定义。 class AA { int* a; int n; int MS; public void InitAAint aa[], int nn, int ms { ifnnms {coutErrorendl; exit1;} MSms; nnn; anew int[MS]; forint i0; in; i a[i]aa[i]; } int Searchint x; //从数组 a 的前 n 个元素中顺序查找值为 x 的第一个元素, //若查找成功则返回元素的下标,否则返回-1。 }; 5. 根据下面类中 MaxMin 函数成员的原型和注释写出它的类外定义。 class AA { int* a; int n; int MS; public void InitAAint aa[], int nn, int ms { ifnnms {coutErrorendl; exit1;} 48 MSms; nnn; anew int[MS]; forint i0; in; i a[i]aa[i]; } int MaxMinint x, int y; //从数组 a 的前 n 个元素中求出 //最大值和最小值,并分别由引用参数 x 和 y 带回, //同时若 n 大于 0 则返回 1,否则返回 0。 }; 6. 根据下面类中 Compare 函数成员的原型和注释写出它的类外定义。 class AA { int* a; int n; int MS; public void InitAAint aa[], int nn, int ms { ifnnms {coutErrorendl; exit1;} MSms; nnn; anew int[MS]; forint i0; in; i a[i]aa[i]; } int CompareAA b; //比较*this 与 b 的大小,若两者中 //的 n 值相同,并且数组中前 n 个元素值对应 //相同,则认为两者相等返回 1,否则返回 0。 }; 7. 根据下面类中 CompareBig 函数成员的原型和注释写出它的类外定义。 class AA { int* a; int n; int MS; public void InitAAint aa[], int nn, int ms { ifnnms {coutErrorendl; exit1;} MSms; nnn; 49 anew int[MS]; forint i0; in; i a[i]aa[i]; } int CompareBigAA b; //比较*this 与 b 的大小,从前向后按两数组 //中的对应元素比较,若*this 中元素值大则返回 1,若 b 中 //元素值大则返回-1,若相等则继续比较下一个元素,直到 //一个数组中无元素比较,此时若两者的 n 值相同则返回 0, //否则若*this 中的 n 值大则返回 1,若 b 中的 n 值大则返回-1。 } CC语言程序设计语言程序设计平时作业三平时作业三 批阅得分 教师签名 一、单项选择题一、单项选择题 1. 函数调用不可以( ) 。 A. 出现在一个表达式中 B. 出现在执行语句中 C. 作为一个函数的实参 D. 作为一个函数的形参 2. 以下正确的描述是( ) 。 A. 函数的定义可以嵌套,函数的调用不可以嵌套 B. 函数的定义不可以嵌套,函数的调用可以嵌套 C. 函数的定义和函数的调用均可以嵌套 D. 函数的定义和函数的调用均不可以嵌套 3. 若用数组名作为函数调用的实参,传递给形参的是( ) 。 A. 数组的首地址 B. 数组中第一个元素的值 C. 数组全部元素的值 D. 数组元素的个数 4. 以下错误的描述是( ) 。 A. 被调用函数中可以不用 return 语句 B. 被调用函数中可以用多个 return 语句 C. 被调用函数中,如果有返回值,就一定要有 return 语句 D. 被调用函数中,一个 return 语句可返回多个值给调用函数 5. 以下正确的描述是( ) 。 A. 不允许设置参数的默认值 50 B. 设置参数的默认值只能在定义函数时设置 C. 设置参数的默认值时,应该设置右边的参数 D. 设置参数的默认值时,应该全部参数都设置 6. 采用重载函数的目的是( ) 。 A. 实现共享 B. 减少空间 C. 提高速度 D. 使用方便,提高可读性 7. 将两个字符串连接起来组成一个字符串时,选用( )函数。 A. strlen B. strcap C. strcat D. strcmp 8. 以下叙述中正确的是 。 A. 使用define 可以为常量定义一个名字,该名字在程序中可以再赋另外的值 B. 使用 const 定义的常量名有类型之分,其值在程序运行时是不可改变的 C. 在程序中使用内联函数使程序的可读性变差 D. 在定义函数时可以在形参表的任何位置给出缺省形参值 9. 下面的标识符中, 是文件级作用域。 A. 函数形参 B.语句标号 C.外部静态类标识符 D.自动类标识符 10. 以下叙述不正确的是 。 A. 宏替换不占用运行时间 B. 宏名无类型 C. 宏替换只是字符替换 D. 宏名必须用大写字母表示 11. C语言的编译系统对宏命令的处理是 。 A. 在程序运行时进行 B. 在程序连接时进行 C. 和 C程序的其它语句同时进行编译 D. 在对源程序中其它成分正式编译之前进行 12. 当include 后面的文件名用双引号括起来时,寻找被包含文件的方式是 。 A. 直接按系统设定的标准方式搜索目录 B. 先在源程序所在目录搜索,再按系统设定的标准方式搜索目录 C. 仅仅搜索源程序所在目录 D. 搜索当前逻辑盘上的所有目录 13. 当include 后面的文件名用尖括号括起来时,寻找被包含文件的方式是 。 A. 直接按系统设定的标准方式搜索目录 B. 先在源程序所在目录搜索,再按系统设定的标准方式搜索目录 C. 仅仅搜索源程序所在目录 D. 搜索当前逻辑盘上的所有目录 14. 在下面存储类中, 对象的可见性与生存期不一致。 A. 外部类 B. 自动类 C. 内部静态类 D. 寄存器类 15. 在下面存储类中, ( )的对象不是局部变量。 A. 外部静态类 B. 自动类 C. 函数形参 D. 寄存器类 16. 关于局部变量,下面说法正确的是 。 51 A. 定义该变量的程序文件中的函数都可以访问 B. 定义该变量的函数中的定义处以下的任何语句都可以访问 C. 定义该变量的复合语句中的定义处以下的任何语句都可以访问 D. 定义该变量的函数中的定义处以上的任何语句都可以访问 17. 文件包含命令中被包含的文件的扩展名( ) 。 A. 必须是.h B. 不能是.h C. 可以是.h 或.cpp D. 必须是.cpp 18. 预处理命令在程序中都是以 符号开头的。 A. * B. C. D. 19. 设 array 为一个数组,则表达式 sizeofarray/sizeofarray[0]的结果为 。 A. array 数组首地址 B. array 数组中元素个数 C. array 数组中每个元素所占的字节数 D. array 数组占的总字节数 20. 用 new 运算符创建一个含 10 个元素的一维整型数组的正确语句是 。 A. int *pnew a[10]; B. int *pnew float[10]; C. int *pnew int[10]; D. int *pnew int[10]{1,2,3,4,5} 21. 下列给字符数组赋初值时,正确的是 。 A. char s1[]”abcdef”; B. char s2[4]”abcd”; C. char s3[2][3]{“abc”,”xyz”}; D. char s4[4][]{‘a’,’x’,’s’,’t’}; 22. 设有定义“static int data[5][6];” ,设该数组在静态存储区中的起始地址为十 进制的 100,若每个 int 型数占 4 个字节,则数组元素 data[2][3]的地址为 。 A. 115 B.124 C.130 D.160 23. 假定变量 m 定义为“int m7;” ,则定义变量 p 的正确语句为( ) 。 A. int pm; B. int *pm; C. int p*m; D. int *pm; 24. 假定 k 是一个 double 类型的变量,则关于变量 p 的正确定义语句为( ) 。 A. double pk; B. int *pk; C. double p*k; D. char *p”Thank you”; 25. 变量 s 的定义为“char *s”Hello world”;” ,要使变量 p 指向 s 所指向的同一 个字符串,则应选取( ) 。 A. char *ps; B. char *ps; C. char *p;p*s; D. char *p; ps; 26. 关于 void 指针,下列说法正确的是( ) 。 A. void 指针就是未指向任何数据的指针 B. void 指针就是已定义而未初始化的指针 C. 指向任何类型数据的指针可直接赋值给一个 void 指针 D. void 指针值可直接赋给一个非 void 指针 27. 假定一条定义语句为“int a[10], x, *paa;” ,若要把数组 a 中下标为 3 的元素 值赋给 x,则不正确的语句为( ) 。 52 A. xpa[3]; B. x*a3; C. xa[3]; D. x*pa3; 28. 假定有定义“int b[10]; int *pb;” ,则不正确的赋值语句为( ) 。 A. pbb; B. pbb[0]; C. *pbnew int; D. pbb[5]; 29. 假定 p 是具有 double 类型的指针变量,则表达式p 使 p 的值(以字节为单位) 增加( ) 。 A. 1 B. 4 C. sizeofdouble D. sizeofp 30. 假定 p 指向的字符串为”string” ,则 coutp3 的输出结果为( ) 。 A. string B. ring C. ing D. i 31. 假定 p 指向的字符串为”string” ,若要输出这个字符串的地址值,则使用( ) 。 A. cout*p; B. coutp; C. coutp; D. coutvoid *p; 32. 定义 p 并使 p 指向动态空间中的包含 30 个整数的数组所使用的定义语句为( ) 。 A. int *pnew int[30]; B. int *pnew int30; C. int *pnew [30]; D. *pnew int[30]; 33. 假定 p 是具有 int**类型的指针变量,则给 p 赋值的正确语句为( ) 。 A. pnew int; B. pnew int*; C. pnew int**; D. pnew int[10]; 34. 要使语句“pnew int[10][20];”能够正常执行,p 应被事先定义为( ) 。 A. int *p; B. int **p; C. int *p[20]; D. int*p[20]; 35. 假定有“struct BOOK{char title[40]; float price;}; BOOK *booknew BOOK;” ,则正确的语句为( ) 。 A. strcpybook-title,”Wang Tao”; B. strcpybook.title,”Wang Tao”; C. strcpy*book.title,”Wang Tao”; D. strcpy*book-title,”Wang Tao”; 36. 假定有“struct BOOK{char title[40]; float price;}; BOOK *book;” ,则不正 确的语句为( ) 。 A. BOOK *xnew book; B. BOOK x{C Programming,27.0}; C. BOOK *xnew BOOK; D. BOOK *xbook; 37. 假定有“struct BOOK{char title[40]; float price;}book;” ,则正确的语句为 ( ) 。 A. BOOK x book; B. BOOK xbook; C. BOOK xnew BOOK; D. BOOK xBOOK; 38. 下列对引用的陈述中不正确的是( ) 。 A. 每一个引用都是其所引用对象的别名,因此必须初始化 B. 形式上针对引用的操作实际上作用于它所引用的对象 C. 一旦定义了引用,一切针对其所引用对象的操作只能通过该引用间接进行 D. 不需要单独为引用分配存储空间 39. 假定变量 a 和 pa 定义为“double a[10], *paa;” ,要将 12.35 赋值给 a 中的下 53 标为 5 的元素,不正确的语句是( ) 。 A. pa[5]12.35; B. a[5]12.35; C. *pa512.35; D. *a[0]512.35; 40. 假定变量 b 和 pb 定义为“int b[10], *pbb;” ,要将 24 赋值给 b[1]元素中,不 正确的语句是( ) 。 A. *pb124; B. *b124; C. *b24; D. *pb24; 41. 假定指针变量 p 定义为“int *pnew int100;” ,要释放 p 所指向的动态内存, 应使用语句( ) 。 A. delete p; B. delete *p; C. delete p; D. delete []p; 42. 假定指针变量 p 定义为“int *pnew int[30];” ,要释放 p 所指向的动态内存, 应使用语句( ) 。 A. delete p; B. delete *p; C. delete p; D. delete []p; 43. 假定变量 x 定义为“int x5;” ,要使 rx 成为 x 的引用(别名) ,rx 应定义为( ) 。 A. int rxx; B. int rxx; C. int *rxx; D. int rxx; 44. 关于消息,下列说法中不正确的是( ) 。 A. 发送消息的对象请求服务,接受消息的对象提供服务 B. 消息的发送者必须了解消息的接收者如何相应消息 C. 在 C中,消息的发送具体体现为对接收消息的对象的某个函数的调用 D. 每个对象只能接收某些特定格式的消息 45. 关于封装,下列说法中不正确的是( ) 。 A. 通过封装,对象的全部属性和操作结合在一起,形成一个整体 B. 通过封装,一个对象的实现细节被尽可能地隐藏起来(不可见) C. 通过封装,每个对象都成为相对独立的实体 D. 通过封装,对象的属性都是不可见的 46. 面向对象方法的多态性是指( ) 。 A. 一个类可以派生出多个特殊类 B. 一个对象在不同的运行环境中可以有不同的变体 C. 针对一消息,不同的对象可以以适合自身的方式加以响应 D. 一个对象可以是由多个其他对象组合而成的 47. 软件产品在需求发生变化、运行环境发生变化或发现软件产品本身的错误或不足 时进行相应的软件更新的难易程度叫做软件的( ) 。 A. 可维护性 B. 可复用性 C. 兼容性 D. 正确性 48. 软件产品可被全部或部分地再用于新的应用的能力叫做软件的( ) 。 A. 可维护性 B. 可复用性 C. 兼容性 D. 正确性 49. 软件产品与其他软件产品组合成一个整体的难易程度叫做软件的( ) 。 A. 可维护性 B. 可复用性 C. 兼容性 D. 正确性 50. 软件产品准确执行软件需求规格说明书中所规定的任务的能力叫做软件的( ) 。 54 A. 可维护性 B. 可复用性 C. 兼容性 D. 正确性 二、填空题二、填空题 1. 含随机函数的表达式 rand20 的值在_____至______区间内。 2. 在 switch 语句中,每个语句标号所含关键字 case 后面的表达式必须是整型 _______。 3. 在 if 语句中,每个 else 关键字与它前面同层次并且最接近的________关键字相配 套。 4. 作为语句标号使用的 C保留字 case 和 default 只能用于________语句的定义体 中。 5. 执行 switch 语句时,在进行作为条件的表达式求值后,将从某个匹配的标号位置 起向下执行,当碰到下一个标号位置时________执行。 6. 若 while 循环的“头”为“whilei10” ,并且 i 的初值为 0,同时在循环体 中不会修改 i 的值,则循环体将被重复执行______次后正常结束。 7. 若 do 循环的“尾”为“whilei10” ,并且 i 的初值为 0,同时在循环体中不 会修改 i 的值,则循环体将被重复执行______次后正常结束。 8. 当在程序中执行到________语句时,将结束本层循环类语句或 switch 语句的执行。 9. 当在程序中执行到________语句时,将结束所在循环语句中循环体的一次执行。 10. 在程序中执行到________语句时,将结束所在函数的执行过程,返回到调用该函 数的位置。 11.在程序执行完________函数后,将结束整个程序的执行过程,返回到操作系统下 的 C集成开发窗口。 12. 元素类型为 int 的数组 a[10]共占用________字节的存储空间。 13. 元素类型为 double 的二维数组 a[4][6]共占用________字节的存储空间。 14. 元素类型为 char 的二维数组 a[10][30]共占用________字节的存储空间。 15. 存储字符’a’和字符串”a”分别需要占用________和________个字节。 16. 空串的长度为________,存储它需要占用________个字节。 17. 字符串”\’a\’xy4\n”的长度为________。 18. 字符串”a\\xxk\\数据”的长度为________。 19. 用于存储一个长度为 n 的字符串的字符数组的长度至少为________。 20. 若 a 是一个字符数组,则从键盘上向该数组输入一个字符串的表达式为 __________。 21. 若 a 是一个字符数组,则向屏幕输出 a 中所存字符串的表达式为__________。 22. 一个二维字符数组 a[10][20]能够存储________个字符串,每个字符串的长度至 多为________。 23. 对一个二维字符数组 a 进行初始化的数据为{”123”,”456”,”789”},则 a[1]元素 55 对应的字符串为__________。 24. strlen”apple”的值为________,strcmp”a”,”A”的值为________。 25. 若需要把一个字符串”aaa”赋值到字符数组 a 中,则需要执行________函数的调 用来实现。 26. 假定对二维数组 a[3][4]进行初始化的数据为{{3,5,6},{2,8},{7}},则 a[1][1] 和 a[2][3]分别被初始化为_______和________。 27. 在 C语言中,一个函数由函数头和__________组成。 28. 重载一个函数的条件是该函数必须在参数的个数或参数的__________上与其它 同名函数有所不同。 29. 如果一个函数只允许同一文件中的函数调用,则应在该函数定义前加上 __________C保留字。 30. 若“double x100;”是文件 F1.CPP 中的一个全局变量定义语句,若文件 F2.CPP 中的某个函数需要访问此 x , 则应在文件 F2.CPP 中添加对 x 的声明语句为 _________________。 31. 定义一个函数模板要用到的第一个修饰符是____________。 32. 在函数模板的参数中,用 class 修饰的参数称为__________参数。 33. 如果一个函数直接或间接地调用自身,这样的调用称为____________调用。 34. 已知 int cubinint n{return n*n*n;}和 double cubindouble n{return n*n*n;}是一个函数模板的两个实例,假定类型参数用 T 表示,则该函数模板的定义是 __________________________________。 35. 对于无返回值函数,定义函数时要用__________修饰函数类型。 36. 如果一个函数定义使用了__________修饰,则该函数不允许被其它文件中的函数 调用。 37. 如果一个函数中有多个默认参数,则默认参数必须全部处在形参表的________部 分。 38. 定义外部变量时,不用存储类说明符_________,而声明外部变量时用它。 39.调用系统函数时,要先使用include 命令包含该系统函数的原型语句所在的 __________。 40. 函数形参的作用域是该函数的____________。 41. C提供的预处理命令有宏定义命令,条件编译命令和____________。 42. 程序的编译是以__________为单位进行的。 43. C程序运行时的内存空间可以分成全局数据区,堆区,栈区和__________。 44. 全局变量和静态局部变量具有静态生存期,存放在内存的____________区中。 45. 局部变量具有局部生存期,存放在内存的____________区中。 46. 若二维数组 a 有 m 列,设 a[0][0]位于数组的第一个位置上,则计算任一元素 a[i] [j]在数组中位置序号的公式为____________。 47. 若有定义“double a[3][5];” ,则 a 数组中行下标和列下标的最大值分别为 ________和________。 56 48. 若有定义“struct AA {int a; char b; double c;}x;”,则 x 占用空间大小为 ________字节。 49. 当定义一个结构体变量时,系统分配给该变量的内存大小等于各成员所需内存大 小的_______。 50. 一个指针类型的对象占用内存的________个字节的存储空间。 51. 一个指针指向一个数据对象,它保存着该数据对象的________,若数据对象为 DataType 类型,则相应的指针类型为__________。 52. 若要把一个整型指针 p 转换为字符指针,则采用的强制转换表达式为________。 53. 假定一个数据对象为 int*类型,则指向该对象的指针类型为_______。 54. 假定 p 是一个指向整数对象的指针,则用________表示该整数对象,用________ 表示指针变量 p 的地址。 55. 假定 p 是一个指针,则*p运算首先访问________,然后使________的值增 1。 56. 假定 p 是一个指针,则*p运算首先访问________,然后使________的值增 1。 57. 假定 p 所指对象的值为 25,p1 所指对象的值为 42,则*p的值为________。 58.假定 p 所指对象的值为 25,p1 所指对象的值为 42,则*p 的值为________。 59. 假定 p 所指对象的值为 25,p1 所指对象的值为 42,则执行*p运算后,p 所 指对象的值为________。 60.假定 p 所指对象的值为 25,p1 所指对象的值为 42,则执行*p运算后,p 所指 对象的值为________。 61. 假定对数组 a[]进行初始化的数据为{2,7,9,6,5,7,10},则 a[2]和 a[5]分别被初 始化为________和________。 三、程序填充题,对程序、函数或类中划有横线的位置,根据题意按标号把合适的内三、程序填充题,对程序、函数或类中划有横线的位置,根据题意按标号把合适的内 容填写到程序下面相应标号的后面。容填写到程序下面相应标号的后面。 1. 采用指针访问方式从键盘给数组 a[N]输入数据,然后对元素值重新按逆序存放并 输出。 include iostream.h const int N8; void main { int a[N],*p,*q; forpa; paN; p ___1___; pa;qaN-1; whilepq { int r*p; *p*q; *qr; ___2___; ___3___; } 57 forpa;paN; p cout*p ; coutendl; } 1 2 3 2. 从键盘上输入一个正整数,然后把它转换成的二进制数的每一位存放到一维数组中, 最后输出该二进制数。注意二进制数的存放是按照从低位到高位的次序进行的。 include iostream.h void main { int x; cout输入一个整数; cinx; int a[20],k0,r; do { rx2; a[k]r; x___1___; } while___2___; for--k;k0;k-- ___3___; coutendl; } 1 2 3 3. 对数组 a[n]按升序进行的选择排序算法 void SelectSortint a[], ___1___ { int i,j,k; fori1;in;i { //进行 n-1 次选择和交换 ki-1; forji;jn;j ifa[j]a[k] ___2___; int xa[i-1]; a[i-1]a[k]; ___3___; } } 58 1 2 3 4. 对数组 a[n]按升序进行的插入排序算法 void InsertSort___1___, int n { int i,j,x; fori1;in;i { //进行 n-1 次循环 xa[i]; forji-1;j0;j-- //为 x 顺序向前寻找合适的插入位置 ifxa[j] ___2___; else ___3___; a[j1]x; } } 1 2 3 5. 对按从小到大排列的有序数组 a[n]进行二分查找 x 的算法,若查找成功返回该元 素下标,否则返回-1。 int BinarySearchint a[],int x { int low0, highN-1; //定义并初始化区间下界和上界变量 int mid; //定义保存中点元素下标的变量 whilelowhigh { mid___1___; ifxa[mid] ___2___; else ifxa[mid] highmid-1; else ___3___; } return -1; } 1 2 3 6. 用插入排序方法对 table 指针数组中 size 个指针所指向的字符串进行按升序排序 的算法。 void sortchar *table[], int size{ 59 forint i1,___1___; i{ char *ptable[i]; forint ji-1; j0 ; j-- ifstrcmpp,table[j]0 ___2___; else break; table[j1]___3___; } } 1 2 3 7. 假定有定义为“struct NODE{int data; NODE* next;};” ,下面算法根据 table 数 组中的 n 个元素建立一个表头指针为 L 的链表,链表中结点值的顺序与数组元素值的顺序 相同。 void f5NODE* L, int table[], int n { ifn0 {LNULL; return;} Lnew NODE; //生成附加的头结点 int i0; NODE* pL; while___1___ { pp-next___2___; p-data___3___; i; } p-nextNULL; //把最后一个结点的指针域置空 pL; LL-next; //使 L 指向链表的第一个带值的结点 delete p; } 1 2 3 8. 假定有定义为“struct NODE{int data; NODE* next;};” ,下面算法根据 table 数 组中的 n 个元素建立一个表头指针为 L 的链表,链表中结点值的顺序与数组元素值的顺序 正好相反。 void f6NODE* L, int table[], int n { 60 LNULL; ifn0 return; int i0; NODE* p; while___1___ { pnew NODE; p-data___2___; p-nextL; ___3___; i; } } 1 2 3 9. 假定有定义为“struct NODE{int data; NODE* next;};” ,下面算法是依次显示输 出以 L 为表头指针的链表中各结点的值。 void f7NODE* L { for___1___; pNULL; ___2___ cout___3___ ; coutendl; } 1 2 3 10. 假定有定义为“struct NODE{int data; NODE* next;};” ,下面算法是把以 L 为 表头指针的链表中各结点依次按相反次序链接并返回新链表的表头指针。 NODE* f8NODE* L { ifLNULL return NULL; NODE *pNULL, *qL, *t; whileqNULL { tq; q___1___; t-next___2___; pt; } 61 ___3___; } 1 2 3 四、写出程序运行结果四、写出程序运行结果 1. includeiostream.h const int T6; void main { int i,j; fori1;iT;i2 forj2;jT;j2 { ifijT cout’’; else cout’*’; } } 2. includeiostream.h void main { int a,b,c0; fora1;a4;a forb6;b1;b-2 { ifab20 cab; else ca*b; ifb2 couta’ ’b’ ’cendl; } } 3. includeiostream.h const int B2; void main { int p1,s1; whiles50 { p*B; sp; } 62 coutssendl; } 4. includeiostream.h void main { int x24,y88; int i2,p1; do { whilexi0 yi0 { p*i; x/i; y/i; } i; }whilexi yi; coutp*x*yendl; } 5. includeiomanip.h const int N3; void main { int a[N][N]{{7,-5,3},{2,8,-6},{1,-4,-2}}; int b[N][N]{{3,6,-9},{2,-8,3},{5,-2,-7}}; int i,j,c[N][N]; fori0;iN;i //计算矩阵 C forj0;jN;j c[i][j]a[i][j]b[i][j]; fori0;iN;i { //输出矩阵 C forj0;jN;j coutsetw5c[i][j]; coutendl; } } 6. includeiostream.h int a5; 63 void main { int ba20; int a10; couta bendl; { int a0,b0; forint i1; i6; i { ai; ba; } couta bendl; } couta bendl; } 7. includeiostream.h int f1int x, int y { xxy; yxy; coutxx, yyendl; return xy; } void main { int x5,y8; int zf1x,y; coutxx, yy; cout, zzendl; } 8. includeiostream.h void f2int x, int y { int zx; xy; yz; } void f3int* x, int* y { int z*x; *x*y; *yz; } void main 64 { int x10,y26; coutx,yx, yendl; f2x,y; coutx,yx, yendl; f3x,y; coutx,yx, yendl; x; y--; f2y,x; coutx,yx, yendl; } 9. includeiostream.h void f4int a[], int n, int s { s0; forint i0; in; i sa[i]; } void main { int b[8]{4,8,6,9,2,10,7,12}; int x; f4b,5,x; coutx ; int y; f4b3,4,y; couty ; coutxyendl; } 10. includeiostream.h void main { int a[8]{36,25,48,14,55,40,50,24}; int b1, b2; b1b2a[0]; forint i1;i8;i ifa[i]b1 {b2b1; b1a[i];} else ifa[i]b2 b2a[i]; coutb1 b2endl; } 65 11. includeiostream.h void main { char a[]abcdabcabfgacd; int i10, i20, i0; whilea[i] { ifa[i]’a’ i1; ifa[i]’b’ i2; i; } couti1’ ’i2’ ’iendl; } 五、指出程序或函数的功能五、指出程序或函数的功能 1. void f2double a[], int n { int i; double sum0; fori0;in;i suma[i]; sum/n; fori0;in;i ifa[i]sum couta[i]’ ’; coutendl; } 2. void f4char a[M][N] { int c1,c2,c3; c1c2c30; forint i0;iM;i ifstrlena[i]5 c1; else ifstrlena[i]5 strlena[i]15 c2; else c3; coutc1’ ’c2’ ’c3endl; } 3. void fun3int a[][N], int m, int n, int row, int col { int xa[0][0]; 66 rowcol0; forint i0;im;i forint j0;jn;j ifa[i][j]x { xa[i][j]; rowi; colj; } } 4. int fun6int m, int n, int b2 { ifmb nb return m*n; else ifmb0 nb0 return b*fun6m/b,n/b,b; else return fun6m,n,b; } 5. char* f8char* str1, const char* str2 { int i0,j0; whilestr1[i] i; whilestr2[j] str1[i]str2[j] ; str1[i]\0; return str1; } 6. int f8const char* str1, const char* str2 { int i0; whilestr1[i] str2[i] ifstr1[i]str2[i] i; else ifstr1[i]str2[i] return 1; else return -1; ifstr1[i]str2[i] return 0; else ifstr1[i]str2[i] return 1; else return -1; } 7. IntNode* FindMaxIntNode *f { 67 iff return NULL; IntNode *pf; ff-next; whilef { iff-datap-data pf; ff-next; } return p; } 假定 IntNode 的类型定义为 struct IntNode { int data; //结点值域 IntNode* next; //结点指针域 }; 8. int CountIntNode *f { iff return 0; int c0; whilef { c; ff-next; } return c; } 假定 IntNode 的类型定义为 struct IntNode { int data; //结点值域 IntNode* next; //结点指针域 }; 9. void OutputIntNode *f { iff return; whilef { coutf-data’ ’; ff-next; } 68 coutendl; } 假定 IntNode 的类型定义为 struct IntNode { int data; //结点值域 IntNode* next; //结点指针域 }; 10. void InputIntNode* f { int n; cout”从键盘给 n 输入一个整数”; do cinn; whilen0; ifn0 {fNULL; return;} fnew IntNode; IntNode* pf; cout”从键盘输入”n”个整数”; whilen-- { pp-nextnew IntNode; cinp-data; } p-next NULL; pf; ff-next; delete p; } 假定 IntNode 的类型定义为 struct IntNode { int data; //结点值域 IntNode* next; //结点指针域 }; 11. int fconst char *s { int i0; while*si; return i; }; 六、编程六、编程 69 1. 求出从键盘上输入的 10 个整数中的最大值,要求输入变量用 x 表示,存储最大值 的变量用 max 表示。 2. 已知 6≤a≤30,15≤b≤36,求满足不定方程 2a5b126 的全部整数组解。如13, 20就是一个整数组解,并以x,y样式输出每个解。 3. 某班级学生进行百米跑测试,规定成绩在 12 秒以内(含 12 秒)为优秀,在 12 秒 以上至 15 秒为达标,在 15 秒以上为不达标,编一程序,从键盘上输入每个人的成绩,以 x 作为输入变量,并以小于 0 的任何数作为终止标志,分别用变量 c1,c2 和 c3 统计并输出 成绩为优秀、达标和不达标的人数。 4. 编写一个函数,分别求出由指针 a 所指向的字符串中包含的每种十进制数字出现的 次数,把统计结果保存在数组 b 的相应元素中。 5. 按照下面函数原型语句编写一个函数,返回二维数组 a[m][n]中所有元素的平均值, 假定采用变量 v 存放平均值。 double Meandouble a[M][N],int m,int n; 6. 按照下面函数原型语句编写一个递归函数计算出数组 a 中 n 个元素的平方和并返回。 int fint a[],int n; 7. 按照函数原型语句“void pint n;”编写一个递归函数显示出如下图形,此图形 是 n5 的情况。 55555 4444 333 22 1 8. 按照函数原型语句“void pint n;”编写一个递归函数显示出如下图形,此图形 是 n5 的情况。 1 22 333 4444 55555 70 9. 根据下面类中 Count 函数成员的原型和注释写出它的类外定义。 class AA { int* a; int n; int MS; public void InitAAint aa[], int nn, int ms { ifnnms {coutErrorendl; exit1;} MSms; nnn; anew int[MS]; forint i0; in; i a[i]aa[i]; } int Countint x; //从数组 a 的前 n 个元素中统计出其 //值等于 x 的个数并返回。 }; 10. 根据下面类中 Search 函数成员的原型和注释写出它的类外定义。 class AA { int* a; int n; int MS; public void InitAAint aa[], int nn, int ms { ifnnms {coutErrorendl; exit1;} MSms; nnn; anew int[MS]; forint i0; in; i a[i]aa[i]; } int Searchint x; //从数组 a 的前 n 个元素中顺序查找值为 x 的第一个元素, //若查找成功则返回元素的下标,否则返回-1。 }; 11. 根据下面类中 MaxMin 函数成员的原型和注释写出它的类外定义。 class AA { int* a; int n; 71 int MS; public void InitAAint aa[], int nn, int ms { ifnnms {coutErrorendl; exit1;} MSms; nnn; anew int[MS]; forint i0; in; i a[i]aa[i]; } int MaxMinint x, int y; //从数组 a 的前 n 个元素中求出 //最大值和最小值,并分别由引用参数 x 和 y 带回, //同时若 n 大于 0 则返回 1,否则返回 0。 }; 12. 根据下面类中 Compare 函数成员的原型和注释写出它的类外定义。 class AA { int* a; int n; int MS; public void InitAAint aa[], int nn, int ms { ifnnms {coutErrorendl; exit1;} MSms; nnn; anew int[MS]; forint i0; in; i a[i]aa[i]; } int CompareAA b; //比较*this 与 b 的大小,若两者中 //的 n 值相同,并且数组中前 n 个元素值对应 //相同,则认为两者相等返回 1,否则返回 0。 }; 13. 根据下面类中 CompareBig 函数成员的原型和注释写出它的类外定义。 class AA { int* a; int n; int MS; public 72 void InitAAint aa[], int nn, int ms { ifnnms {coutErrorendl; exit1;} MSms; nnn; anew int[MS]; forint i0; in; i a[i]aa[i]; } int CompareBigAA b; //比较*this 与 b 的大小,从前向后按两数组 //中的对应元素比较,若*this 中元素值大则返回 1,若 b 中 //元素值大则返回-1,若相等则继续比较下一个元素,直到 //一个数组中无元素比较,此时若两者的 n 值相同则返回 0, //否则若*this 中的 n 值大则返回 1,若 b 中的 n 值大则返回-1。 }; 、、 CC语言程序设计语言程序设计平时作业四平时作业四 批阅得分 教师签名 一、单项选择题一、单项选择题 1.下列符号中,不可以作为变量名的是 。 A. list_p_9 B. PA123 C. ready D. for 2.由 C目标文件连接而成的可执行文件的缺省扩展名为 。 A. cpp B. exe C. obj D. lik 3.在每个 C程序中都必须包含有这样一个函数,该函数的函数名为 。 A. main B. MAIN C. name D. function 4.设 x 和 y 均为 bool 量,则 xy 为真的条件是 。 73 A. 它们均为真 B. 其中一个为真 C. 它们均为假 D. 其中一个为假 5.下列表达式中正确的是 。 A. k B. k---j C. k--/5 D. k35 6.执行下面程序段的输出结果是 。 int x4,y-55; if x0 if x10 cout ”AA” else cout ”BB” else if y-8 if y-20 cout ”CC” else cout ”DD”; A. AA B. BB C. CC D. DD 7.下面四个程序段中,输出 23 个*号的程序段是 。 A. for int i1; i23; i cout ’*’; B. for int i23; i0; i-- cout ’*’; C. int i23; while i0 { cout ’*’; i--; } D. int i0; while 023 { cout ’*’; i; } 8.在下面的一维数组定义中,哪一个有语法错误。 A. int a[ ]{1,2,3} B. int a[10]{0} C. int a[ ] D. int a[5] 9.假定 a 为一个整型数组名,则元素 a[4]的字节地址为 。 A. a4 B. a8 C. a16 D. a32 10.要定义一个 int 型二维数组 a,并使其各元素具有初值 2 3 0 0 4 0 5 0 0 0 0 0 则正确的定义语句是 。 A.int a[][]{2,3,0,0,4,0,5,0,0,0,0,0}; B.int a[][4] {2,3,0,0,4,0,5,0,0,0,0,0}; 74 C.int a[3][4] {{2,3},{4,,5}}; D.int a[][]{{2,3,0,0},{4,0,5,0},{0,0,0,0}}; 11.在下面的函数声明中,存在着语法错误的是 。 A. void BCint a , int B. void BDint , int C. void BEint , int5 D. int BFint x ; int y 12、下面的哪个保留字不能作为函数的返回类型 。 A. void B. int C. new D. long 13.已知 int fint; 和 int gint; 分别是函数 f 和 g 的原型。下列语句中,将函数 f 作为语 句调用的有 。 A. f3g3; B. p/f3; C. gf3; D. fg3; 14.已知一函数的形参说明为 int arr[5][6],在下列说明中,与此等效的形参说明为 。 A. int arr[][] B. int [5][] C. int *a[6] D. int * a[6] 15.已知函数 f 的原型是int fchar a,char * bNULL,double c0.0; 则下列调用中,不能正确地调用 f 函数的是 。 A. f99 B. f‘A’,4.5 C. f‘A’,”123” D. fchar65,”123” 16.已知一函数的原型是int fint ,int 0,double 0.0; 则下列函数中可以加以重载的是 。 A. int fint; B. int fint,int; C. fint,int,double; D. fint double; 17.已知一函数中有下列变量定义,其中属于静态变量的是 。 A.int a5; B. static double b; C. register char c; D. auto short d; 18.已知一个运行正常的的程序中有下面两个语句 int *p1, *p2a; p1b; 由此可知,变量 a 和 b 的类型分别是 。 A. int 和 int B. int * 和 int C. int * 和 int D. int * 和 int * 19.假设 p 是一指针变量,下列表达式中正确的是 。 75 A. p B. p C. p D. p-3 20.设有程序段如下 int k; int A[10]; 则下列表达式中,与元素 A[k]等效的是 。 A. Ak B. *Ak C. *Ak D. A *k 21.设有数组定义 int a[3][4]{{1,2,3,4},{5,6,7,8},{9,10,11,12}}; 则表达式 **a21 的值是 。 A. 5 B. 6 C. 9 D. 10 22.要使语句 pnew int[10]; 能够正常执行,p 应定义为 A. int p; B. int p[10]; C. int *p; D. int *p[10]; 23.已知函数 f 的原型为 void fint a,char *b; 变量 s,t 的定义是int s; char t[]”ABCD”; 把 s 和 t 分别作为第一参数和第二参数来调用函数 f,正确的调用语句是 。 A. fs,t; B. fs,t; C. fs,t; D. fs,t; 24.设有如下定义 struct Person { char * name; char * sex; int age; float pay; }p{“李小莉”,”女”,23,370}; 则下列语句中正确的是 。 A. cout *p.nameendl B. cout p-nameendl *p.sexendl p-sexendl 76 *p.ageendl p-ageendl *p.payendl; p-payendl; C. cout p[name]endl D. cout p.nameendl p[sex]endl p.sexendl p[age]endl p.ageendl p[pay]endl; p.payendl; 25.设有定义如下 union ABC { char ch; int ia; int * ipa; double db; }; 则表达式 sizeofABC 的值是 。 A. 17 B. 8 C. 4 D. 1 26. 假定 AB 为一个类,则该类的拷贝构造函数的声明语句为 。 A. AB AB x B. ABAB x C. ABAB D. ABAB * x 27.对于结构中定义的成员,其隐含访问权限为 。 A. public B. protected C. private D. static 28.当使用 fstream 流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为 。 A. iosin B. iosout C. iosint | iosout D. 没有 29.假定 AB 为一个类,则执行“AB a4 , b[3] , * p[2] ;”语句时,自动调用该类构造函数 的次数为 。 77 A. 3 B. 4 C. 6 D. 9 30.假定要对类 AB 定义加号操作符重载成员函数,实现两个 AB 类对象的加法,并返回 相加结果,则该成员函数的声明语句为 。 A. AB operatorAB a , AB b B. AB operatorAB a C. operatorAB a D. AB operator 二、填空题二、填空题 1.执行“cout 43’-‘18’’43-18endl;”语句后得到的输出结果为 。 2.已知’A’~’Z’的 ASCII 码为 65~90,当执行“char ch14*52; cout chendl;” 语句序列后,得到的输出结果为 。 3.使用 const 语句定义一个标识符常量时,则必须对它同时进行 。 4.表达式 xx1 表示成增量表达式为 。 5.若 x5,y10,则 xy 和 xy 的逻辑值分别为 和 。 6.C语言中的每条基本语句以 作为结束符,每条复合语句以 作为结束符。 7.执行“cout charA2endl;”语句后得到的输出结果为 。 8.float 和 double 类型的大小分别为 和 。 10.关系表达式 xy5 的相反表达式为 。 11.表达式 x625,ix10010100 的值是 。 12.执行 int x4,y; yx--3; 语句后,变量 x 的值是 ,y 的值是 。 13.执行程序段 int x5,y10; xy; yx-y; x-y; 后变量 x 的值是 ,y 的值是 。 14.与赋值语句 yOKREADY-101; 等效的嵌套的 if 语句为 78 。 15.执行语句 i10; do { cout ’*’; i--; } while i3; 后,将显示出 个*号。 16.设有下面的定义 int s[10]{1,2,3,4,5,6,7,8,9,10}; int sum0; 请完善下面的语句实现求数组 s 的所有元素之和,并保存在变量 sum 中 for int ; ; j ; 17.执行语句序列 char str1[10]”ABCD”, str2[10]”XYZxyz”; for int i0; str1[i]str2[i]; i ; 后,数组 str1 中的字符串是 ,数组 str2 中的字符串是 。 18.执行下面程序段 char str1[10]”ABCD”, str2[10]”XYZxyz”; if strcmpstr1,str20 cout str1endl; else cout str2endl; 后的输出结果是 。 19.执行“typedef int ABC[10];”语句把 ABC 定义为具有 10 个整型元素的 。 20.假定一个二维数组为 a[M][N],则 a[i]的地址值以字节为单位为 。 21.已知函数 f 的定义是 int fint n { n * 2; return n1; } 则执行 int m5, n3; mfn; 后,变量 m 的值是 ,n 的值是 。 79 22.如果在一函数定义中使用 修饰符,则声明该函数不允许其它程序文件中的函 数调用。 23.已知一函数模板定义为 template class Type Type increType n { return n1; } 则函数调用 incre5.0 使用得该函数模板产生的实例化函数为 24.已知文件 fileA.cpp 中的一些函数需要访问在另一个文件 fileB.cpp 中定义的全局整型 变量 var ,则在文件 fileA.cpp 的首部对变量 var 应声明为 。 25.变量分为全局和局部两种, 变量没有赋初值时,其值是不确定的。 26.假定 p 所指对象的值为 25,p1 所指对象的值为 46,则执行“*p;”语句后,p 所 指对象的值为 。 27.假定要访问一个结构指针 p 所指对象中的 b 指针成员所指的对象,则表示方法为 。 28.假定一个一维数组的定义为“char * a[8] ;”,则该数组所含元素的个数为 , 所占存储空间的字节数为 。 29.假定 a 是一个二维数组,则 a[i][j]的指针访问方式为 。 30.设 px 是指向一个类动态对象的指针变量,则执行“delete px;”语句时,将自动调用 该类的 。 31.若需要把一个函数“void F ;”定义为一个类 AB 的友元函数,则应在类 AB 的定义 中加入一条语句 。 32.若要在程序文件中进行标准输入输出操作,则必须在开始的 include 命令中使用 头文件。 33.假定一个结构类型定义为 “struct D { int a ; union { int b ; double c ; } ; D * d[2] ; } ;” , 则该类型的大小为 字节。 34.对一个类中的数据成员的初始化可以通过构造函数中的 实现,也可 80 以通过构造函数中的 实现。 35.假定 AB 为一个类,则执行“AB a[10];”语句时,系统自动调用该类的构造函数的次 数为 。 36.假定类 AB 中有一个公用属性的静态数据成员 bb,在类外不通过对象名访问该成员 bb 的写法为 。 37.请完成下面的一个类的定义 class ABC { private int a,b; public ABCint aa, int bb5 { ; // 将 aa 的值赋给 a ; // 将 bb 的值赋给 b } ; ; }; int ABCfA { return ab; } int ABCfB { return a*b; } 三、下列程序运行后的输出结果三、下列程序运行后的输出结果 1. include iostream.h void main { int s0; for int i1; ; i { 81 if s50 break; if i20 si; } cout i,si,sendl; } 2. include iostream.h int a5; void main { int a10,b20; cout a bendl; { int a0,b0; for int i1; i6; i { ai; ba; } cout a b aendl; } cout a bendl; } 3. include iostream.h void SBchar ch { switchch{ case A case a cout well; break; case B case b cout good; break; case C case c cout pass; break; 82 default cout nad; break; } } void main { char a1b,a2C,a3f; SBa1;SBa2;SBa3;SBA; cout endl; } 4. include iostream.h void main { char a[]abcdabcabfgacd; int i10,i20,i0; while a[i] { if a[i]a i1; if a[i]b i2; i; } cout i1 i2endl; } 5. include iomanip.h void main { int a[9]{2,4,6,8,10,12,14,16,18}; for int i0; i9; i { cout setw5*ai; 83 if i130 cout endl; } } 6. include iomanip.h void LEint * a,int * b { int x*a; *a*b; *bx; cout *a *bendl; } void main { int x10,y25; LEx,y; cout x yendl; } 7. include iostream.h include string.h void main { char *a[5]{student,worker,cadre,soldier,peasant}; char *p1,*p2; p1p2a[0]; for int i0; i5; i { if strcmpa[i],p10 p1a[i]; if strcmpa[i],p20 p2a[i]; } cout p1 p2endl; } 8. include iomanip.h 84 int LBint *a,int n { int s1; for int i0; in; i s**a; return s; } void main { int a[]{1,2,3,4,5,6,7,8}; int bLBa,5LBa[3],3; cout bbendl; } 9. include iostream.h class A { int a,b; public A { ab0; } Aint aa,int bb { aaa; bbb; cout a bendl; } }; void main { A x,y2,3,z4,5; } 10. include iostream.h template class TT 85 class FF { TT a1,a2,a3; public FFTT b1,TT b2,TT b3 { a1b1; a2b2; a3b3; } TT Sum { return a1a2a3; } }; void main { FF int x2,3,4,y5,7,9; cout x.Sum y.Sumendl; } 11. include iostream.h include string.h struct Worker{ char name[15]; // 姓名 int age; // 年龄 float pay; // 工资 }; void main { Worker x; char *tliouting; int d38; float f493; strcpyx.name,t; x.aged; x.payf; cout x.name x.age x.payendl; 86 } 12. include iostream.h class A { int a; public Aint aa0 { aaa; } A { cout Destructor Aaendl; } }; class Bpublic A { int b; public Bint aa0,int bb0Aaa { bbb; } B { cout Destructor Bbendl; } }; void main { B x5,y6,7; // 后定义的变量将先被释放 } 四、写出下列每个函数的功能四、写出下列每个函数的功能 1. include iostream.h int SAint a,int b { if ab return 1; else if ab return 0; else return -1; } 2. float FIint n { // n 为大于等于 1 的整数 87 float x,y0; do { cin x; n--; yx*x; } while n0; return y; } 3.double SFdouble x,int n { // n 为大于等于 0 的整数 double p1,s1; for int i1; in; i { p*x; sp/i1; } return s; } 4. float FH { float x,y0,n0; cin x; while x-1 { n; yx; cin x; } if n0 return y; else return y/n; } 5. include iostream.h void WAint a[],int n { 88 for int i0; in-1; i { int ki; for int ji1; jn; j if a[j]a[k] kj; int xa[i]; a[i]a[k]; a[k]x; } } 6. template class Type void WEType a[],Type b[],int n { for int i0; in; i b[n-i-1]a[i]; } 7.struct StrNode { char name[15]; // 字符串域 StrNode * next; // 指针域 }; void QBStrNode * f ,int n { if n0 { fNULL; return; } fnew StrNode; cin f-name; StrNode * pf; while --n { pp-nextnew StrNode; cin p-name; } p-nextNULL; } 89 8. include iomanip.h include fstream.h void JBchar * fname // 可把以 fname 所指字符串作为文件标识符的文件称为 fname 文件 // 假定该文件中保存着一批字符串,每个字符串的长度均小于 20 { ifstream finfname; char a[20]; int i0; while fina { cout aendl; i; } fin.close; cout iiendl; } 五、编写程序五、编写程序 1.求三个整数的最大值。 2.从键盘输入 10 个正整数据并累加求和。 3.求多项式 12315的值。 4.求解一元二次方程 ax2bxc0 的根。 5.从键盘上输入 10 个整数存入一维数组元素中,然后按逆序输出该数组的元素。 6.一维数组元素求和。 7.一维数组元素排序。 8.在一维数组中查找最大元素和最小元素。 9.在一维数组中查找给定的数据。 90 10.在一维数组中分类统计各种数据的个数。 11.求 1 至 N 之间的所有质数。设 N 的值由键盘输入 12.从键盘上输入二个矩阵的数据,编程计算两矩阵相加、相减、相乘。 13.从键盘上输入一行字符串,然后将所有小写字母改写成大写字母,最后输出该字符串。 14.使用指针和引用作为函数形参的两种方式设计交换两个变量的值的函数。 15.一些简单的类的定义。如定义一个学生类 Student,数据成员有学号、姓名、年龄、 入学成绩,构造函数作用是对数据成员初始化,其它成员函数如输出学生的的信息 等。

    注意事项

    本文(c++语言程序设计电大形考作业)为本站会员(goodluckcai)主动上传,收益归上传者所有,天天文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知天天文库(发送邮件至[email protected]或直接QQ联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给天天文库发消息,QQ:1290478887 - 联系我们

    网站客服QQ:1290478887        微信公众号:iwenku365

    [email protected] 2017-2027 wenku365.com 网站版权所有

    经营许可证编号:鄂ICP备17008239号-1 

    收起
    展开