《C++程序设计》习题解答第1章C++概述1 .填空题(1)在面向对象程序设计中,对象是由 ヽ 和 封装在ー起构成的实体2)在面向对象程序设计中,类是具有 和 的对象的集合,它是对ー类对象的抽象描述3)面向对象程序设计最突出的特点就是 ヽ 和 〇(4) C++语言包含头文件的格式有两种,即 和5) C++源程序要经过 ヽ ヽ 和 四个环节,才能在屏幕上显示结果6)每个C++程序都从 函数开始执行7)每个函数体都以 开始,以 结束8) C++程序中的每条语句以 结束9) C++程序的头文件和源程序的扩展名分别为 和,目标程序的扩展名为,可执行程序的扩展名为10)在C++程序中使用基本输入/输出语句需包含的头文件是,应放 在程序的«(11)在C++程序中注释语句有 和 两种格式12) C++程序的续行符为13)如果从键盘输入语句给变量X,则输入函数的形式为;如果再将变 量X的值显示在屏幕上,其输出函数的形式为14) C++程序中的“endl”在输出语句中起 作用参考答案:(1)对象名,ー组属性数据,ー组操作(2)相同属性数据,操作(3)封装性,继承性,多态性(4) includeく文件名.扩展名〉,include"文件名.扩展名"(5)编辑,编译,连接,运行(6)主函数(7) {ヽ}(8)分号;(9) .h, .cpp» .obj, .exe(10) #include»开始部分(11) /* */, //(12) \(13) cin»X> cout«X(14)换行并清空流2.选择题(1)面向对象程序设计把数据和( )封装在ー起。
A.数据隐藏 B.信息 C.数据抽象 D,对数据的操作(2) C++源程序的扩展名是( )A. c B. exe C. cpp D. pch(3)把高级语言程序转换为目标程序需使用( )»A.编辑程序 B.编译程序 C,调试程序 D.运行程序(4) C++语言与C语言相比最大的改进是( )〇A.安全性 B.复用性 C.面向对象 D.面向过程(5)以下叙述不正确的是( )«A. C++程序的基本単位是函数B. 一 GH・程序可由一个或多个函数组成C. 一个C++程序有且只有一个主函数D. C++程序的注释只能由现在语句的后面参考答案:(1) D (2) C (3) B (4) C (5) D3 .简答题(1)试比较面向对象程序设计、结构化程序设计和模块化程序设计2)解释以下概念:类对象封装数据抽象继承多态(3)简述C++语言有哪些特点参考答案:(1)结构化程序设计强调从程序结构和风格上研究程序设计结构化程序设计的程序代 码是按顺序执行的,有一套完整的控制结构,函数之间的参数按一定规则传递,不提倡使用 全局变量,程序设计的首要问题是“设计过程'模块化程序设计将软件划分成若干个可单独命名和编址的部分,称之为“模块”。
模块化 程序设计的设计思路是“自顶向下,逐步求精”,其程序结构是按功能划分成若干个基本模块, 各模块之间的关系尽可能简单,在功能上相对独立模块和模块之间隔离,不能访问模块内 部信息,即这些信息对模块外部是不透明的,只能通过严格定义的接口对模块进行访问模 块化程序设计将数据结构和相应算法集中在ー个模块中,提出了“数据结构+算法=程序设计” 的程序设计思想模块化能够有效地管理和维护软件研发,能够有效地分解和处理复杂问题 但它仍是ー种面向过程的程序设计方法,程序员必须时刻考虑所要处理数据的格式,对不同 格式的数据做相同处理或对相同数据格式做不同处理都要用新编程,代码可重用性不好面向对象程序设计面对的是一个个对象,用・种操作调用ー组数据把数据和有关操作 封装成一个对象各个对象的操作完成了,总的任务也就完成了他适用于编写大型程序 结构化程序设计和模块化程序设计适用于比较小的程序,他要求细致的描写程序设计的每个 细节2)类:在面向对象程序设计中,类是具有相同属性数据和操作数据的函数的封装,它 是对ー类对象的抽象描述对象:在面向对象程序设计中,对象是由对象名、ー组属性数据和一组操作封装在ー起 构成的实体。
其中属性数据是对象固有特征的描述,操作是对这些属性数据施加的动态行为, 是ー系列的实现步骤,通常称之为方法封装:封装是ー种数据隐藏技术,在面向对象程序设计中可以把数据和与数据有关的操 作集中在ー起形成类,将类的一部分属性和操作隐藏起来,不让用户访问,另一部分作为类 的外部接口,用户可以访问数据抽象:抽象的作用是表示同类事物的本质,C++中的数据类型就是对ー批具体的数 的抽象类是对象的抽象,对象是类的特例继承:在面向对象程序设计中,继承是指新建的类从已有的类那里获得已有的属性和操 作多态:在面向対象程序设计中,多态性是指相同的函数名可以有多个不同的函数体,即 ー个函数名可以对应多个不同的实现部分3)面向对象程序设计最突出的特点就是封装性、继承性和多态性①封装性封装是ー种数据隐藏技术,在面向对象程序设计中可以把数据和与数据有关的操作集中 在ー起形成类,将类的一部分属性和操作隐藏起来,不让用户访问,另一部分作为类的外部 接口,用户可以访问类通过接口与外部发生联系,用户只能通过类的外部接口使用类提供 的服务,而内部的具体实现细节则被隐藏起来,对外是不可见的②继承性在面向对象程序设计中,继承是指新建的类从已有的类那里获得已有的属性和操作。
已 有的类称为基类或父类,继承基类而产生的新建类称为基类的子类或派生类由父类产生子 类的过程称为类的派生通过继承,程序可以在现有类的基础上声明新类,即新类是从原有 类的基础上派生出来的,新类将共享原有类的属性,并且还可以添加新的属性继承有效地 实现了软件代码的重用,增强了系统的可扩充性③多态性在面向对象程序设计中,多态性是指相同的函数名可以有多个不同的函数体,即ー个函 数名可以对应多个不同的实现部分在调用同一函数时,由于环境的不同,可能引发不同的 行为,导致不同的动作,这种功能称为多态它使得类中具有相似功能的不同函数可以使用 同一个函数名多态既表达了人类的思维方式,又减少了程序中标识符的个数,方便了程序 员编写程序多态是面向对象程序设计的重要机制4 .编程题编写程序在屏幕上显示字符串“欢迎大家学习C++语言! ”,并按照书中介绍练习C++语 言的上机实现过程参考答案:#includevoid main()cout«”欢迎大家学习OH•语言”wendl;第2章 C++程序设计基础1 .填空题(1) VisualC++中如果一个变量为int型,它所占的内存空间是 字节,位。
2) short int型变量占用的内存空间是 字节,long int型变量占用的内存空间是 字节,char型变量占用的内存空间是 字节,float型变量占用的内存空间是 字节,double型变量占用的内存空间是 字节3) bool类型数据的值为非〇时会自动转换成 ,如果等于会自动转换成(4) C++程序中的关系运算符满足条件时返回,不满足条件时返回»(5)表达式x&&y>=z是 类型的表达式;表达式x+y||z是 类型的表达式¢6)表达式1V3&&5<7的值是,表达式!(5<8)]|2<6的值是7)表达式a+bb?max=a:max=b y=x*-y (x-y)= =(x-z) y=xA2 x*=y+l (9)以下程序的功能是:从键盘输入ー个字符,判断其是否是字母,并输出相应信息, 请填空includevoid main()(char c;cin»c;if((c>='aT c〈=N) _ (c>='AT c<='ZT))cout«”接收的是ー个字母H«endl;elsecout« ”接收的不是ー个字母"《endl;}(10)以下程序的输出结果是 〇#includevoid main()(int i=0j=0;while(i<15)j++;i+=++j;}cout«i«" M<
includevoid main(){unsigned int i;for cout«i * i«;cout« endl;)(12)以下程序的功能是:求一组(10个)正数中的最大数,当输入为负数时提前结束 程序,请填空includevoid main()(const int N=10;int x,max=0;cout« ”Please input data:"«endl;for(int i=l;iv=N;i++){cin»x;ill)(max=x;continue;)else \f()}cout«"max="«max<< endl;}(13)以下程序的输出结果是 〇#includevoid main()int i=0;while(-H-i)if(i==10) break;ifi[i%3!=l) continue; cout«i«endl;(14)以下程序的输出结果是 〇#includevoid main()int x=5;do|switch(x%2)(case 1 :x—;break;case 0:x++;break;}x-;cout«x«endl;}wbile(x>0);)参考答案:(1)4, 32(2) 2, 4, 1, 4, 8(3) true, false(4) 1, 0(5)逻辑,逻辑(6) 1, 1(7) + v = = &&(8)戸xv<2的含义:x左移两位后的值赋值给yy=3*++x的含义:将x加1后乘以3后的值赋值给ya>b?max=a:max=b的含义:若a>b贝リ将a的值赋值给max,否则将b的值赋值给maxy=x*-y的含义:现将负y的值乘以x,再将结果值赋值给y(x-y)= =(x・z)的含义:比较x・y和x-z是否相等产xハ2的含义:将x和2按位异或的值赋值给yx*=y+l的含义:将x乘以(y+1),再将结果值赋值给x(9) &&,||,&&(10) 20 8(11) i=l;i<=9;i-H-, ” “(12) x>0&&maxvoid main(){bool tl=8;bool t2=0;bool t3=-l;cout«"tl =M«tl«endl;cout«"tl=,,« t2«endl; cout«,,tl=,,« t3«endl;}(6)以下程序的输出结果为(A. a=13 b=4 c=3B. a=13 b=8 c=4C.a=13 b=4 c=4D. a=13 b=8 c=3#includevoid main(){int x=8,y=5;int a,b,c,d;a=x+y-;b=x/y«2; c=x・y++;d=x%y*2;cout«M a="«a«M b=H«b;cout«M c="«c«M d="«d«endl;}参考答案:(1) A (2) B (3) C (4) D (5) D (6) B3.简答题(1)字符常量和字符串常量有什么区别?(2)定义符号常量的方法有哪些?它们有什么区别?。
3) while与do-while语句的主要区别是什么?参考答案:(1)在C++语言中,字符串常量和字符常量是不同的字符串常量是用ー对双引号括 起来的字符序列例如,"a"、"123"、"hello"等都是字符串常量一般字符常量是用ー对单 引号括起来的一个字符,其值为ASCII码值例如,卬、,A,、$、5等都是合法的字符常量2) C++语言提供了两种定义符号常量的方法:①用const语句定义符号常量这种方法是C++语言中广泛采用的定义符号常量的方法,其一般格式为:const数据类型符号常量=表达式;② 用#define语句定义符号常量这是C语言中定义符号常量的方法,其中#define是预处理指令其缺点是不能显示声 明常量的类型其一般格式为:#define常量名常量值(3) while把循环条件判断放在循环体执行前,而do-while循环条件判断放在循环体 执行后,不管循环条件是否成立,它都至少执行一次循环体4) 程题(1)求100以内的自然数中奇数之和2)求100以内能被13整除的最大自然数3)有一个函数如下所示:'x (x10)从键盘输入ー个x,求出相应的y值。
4)输入3个整型数,按由大到小的顺序输岀显示5)根据从键盘输入的表示星期几的数字,输出它对应的英文名称6)从键盘输入ー个整数,求其阶乘7)编写ー个简易计算器程序,根据用户输入的运算符做两个数的加I、减、乘或除运 算8)编写程序在屏幕上打印如下图案 * ********参考答案:(1) #includevoid main(){int sum=0;fbr(int i=l;i<=100;){sum=sum+i;i=i+2;}cout«H 100 以内奇数之和为:"vvsumwendl;)(2) #includevoid main()(int max=0;int i=13;while(i<=100)(iRi% 13=0&&maxvoid main(){float x,y;cin»x;if)(x=l&&x<=10) y=x+5;else y=x-5;cout«y«endl;)(4) #includevoid main(){int inta,intb,intc;cin»inta»intb»intc;if(intavoid main(){int data;cout«Mplease input the data(0-6):M;cin»data;switch(data)(case 0:cout«,,Sunday,,«endl ;break;case 1 :cout«MMonday'*«endl;break;case 2:cout«,,Tuesday,,«endl;break;case 3:cout«MWednsdayM«endl;break;case 4:cout«HThursdayM«endl;break;case 5:cout«,,Friday,,«endl;break;case 6:cout«,,Satuday,,«endl;brcak;default:cout«,,errorH«endl;}}(6) #includevoid main()(int n,t=l;cout«HPlease input a integer:H«endl;cin»n;if(n<0){cout«MError!n«endl;return;}else if(n=0||n=l) t=l;elsefbr(int i=l;i<=n;i++) t=t*i;cout<void main(){fbr(int i=0;i<5;i-H-)fbr(int j=0ア2*i+l;j++) cout«"*H«""; cout«endl;第3章函数(1) 空题(1)在C++中,ー个函数一般由两部分组成,分别是 和(2)在C++中,若没有定义函数的返回类型,则系统默认为 型。
¢3)当ー个函数没有返回值时,函数的类型应定义为¢4)在C++中,函数的参数传递可有三种形式,即 ヽ 和(5)在函数体外定义的变量是 变量:在函数体内定义的变量是变量6)在C++的一个程序内可以定义多个同名的函数,称为7)在ー个函数的定义或声明前加上关键字,该函数就声明为内联函数8)若在一个函数中又调用另ー个函数,则称这样的调用过程为函数的 调用9)在调用ー个函数的过程中出现直接或间接调用该函数本身,就称作函数的调用10)在程序中可以使用系统函数,但是要在程序的 说明函数所在的头文件名11)以下程序的输出结果为include #define N 8void fun(int);void main(){fbr(int i=l;iconst int N=5;void fun();int a=0;void main()(for(int i=l;i
include int m=3;void m){m=6;)void main()(fun(m);cout«H m=M«m«H\n";)(14)以下程序的输出结果为 〇#include int gcd(int,int);void main(){int a,b;a=16;b=24;cout« 44GCDC4«a«,,,«b«,,)=,,«gcd(a,b)«endl;}int gcd(int ajnt b)(ifi(b=O)retum a;else return gcd(b,a%b);}参考答案:(1)函数头,函数体(2) int(3) void(4)传值调用,传址调用,引用调用(5)全局变量,局部变量(6)函数重载(7) inline(8)嵌套(9)递归(10)开始处(11) 6789101112(12) 581114(13) m=3(14) GCD<16,24>=82.选择题(1)以下叙述不正确的是( )«A,函数是构成C++程序的基本元素B.程序总是从第一个定义的函数开始执行C.主函数是C++程序中不可缺少的函数D.在函数调用之前,必须要进行函数的定义或声明(2)以下函数声明正确的是( ).A. double fun(int x,int y) B, double fiin(int x;int y)C. double fun(int x,int y); D. double fun(int x, y);(3)当ー个函数无返回值时,函数的类型应为( ).A.任意 B. void C. int D. char(4)下列关于函数声明说法不正确的是( )»void fun(void);A.函数声明是一条独立的语句,必须以分号结尾B.函数声明通常放在程序的开始部分C.函数fun无参数传入D.函数fun返回一•个值,其类型为void(5)下列关于return语句的说法错误的是( )。
A.在函数中通过return语句返回一个函数值B. return语句中表达式的类型决定函数返回的类型C.在无返回值的函数体中可以没有return语句D,当函数返回值的类型为void时,函数中不应出现return (表达式)(6)下列关于重载函数的说法正确的是( )«A.重载函数必须具有不同的返回值类型B,重载函数形参个数必须不同C.重载函数必须具有不同的形参列表D,重载函数名可以不同(7) 一个函数为voidfUnt,float-W),另ー个函数为void f(int),则它们(A.不能在同一个程序中定义B.可以在同一个程序中定义并可重载C.可以在同一个程序中定义,但不可重载D,以上说法均不正确(8)下列函数定义中正确的是( )〇A. double fun(double x,y) B. double fun(double x, double y)double z;return x/y;z=x/y;return z;C. double fun(double x,y)z=x/y;return z;D. double fun(double x, double y)z=x/y;return x/y;(9)下列关于默认参数值函数说法错误的是( )。
A. C++中,允许设置参数的默认值B.必须从参数表最右边的参数开始,设置参数的默认值C,在函数声明和函数定义中,默认参数的值必须相同D,函数调用时,带默认值的参数无实参输入时,使用默认值(10)下列程序的输出结果为( )«A. 10,20,30 B. 35,7,5 C. 35,20,10 D. 10,20,35#include int fUn(int a,int b,int c) (a=5;b=a+2;c=a*b; return (c);}void main(){int a=10,b=20,c=30;c=ftin(a,b,c);cout«c«M ,n«b«M ,"«a«,,\nM;)(11)下列程序的输出结果为( )A. 0 B.4 C. 15 D. 60#include int fiin(int a,int b) {int c;c=a*b; return (c);}void main()(int a=3,b=5,c=4,x=0;x=fun(fun(a,b),c);cout«x«endl;) (12)下列函数的返回类型为( )〇D,无法确定D. x=25A. void B. float C. intfun(void) { float x=3.0,y; y=x*x/2; return (y); ) (13)下列程序的输出结果为( )〇A. x=15 B. x=17 C. x=23#include int x=5; int fun(int a) {int c; c=x*a; return (c);void main()(int x=3;int a=4;x=x+fun(a);cout«M x=,,«x«endl;)参考答案:(1) B (2) C (3) B (4) D (5) B (6) C (7) C (8) B(9) C (10) C (11) D (12) C (13) C3.简答题(1)在C++中,函数定义的格式是怎样的?(2)什么是函数的声明?函数声明和函数定义有什么区别?是否必须要进行函数的声 明?(3)什么是内联函数?引入内联函数的目的是什么?(4)什么是函数重载?函数重载的原则是什么?(5)函数的嵌套调用应注意什么?(6)函数的递归调用的步骤是什么?(7)什么是局部变量?什么是全局变量?(8)在C++中,如何使用系统函数?参考答案:(1)类型函数名(形参表)语句序列(2)函数原型乂称函数声明,用来告诉编译器函数的名称、函数的返回类型、函数要 接收的参数个数、参数类型和参数顺序,编译器用函数原型验证函数调用。
在定义函数之前 常用函数原型加以说明函数原型通常位于程序代码的开始处在函数原型说明中也可以不给出参数名,只给出 类型如果函数调用在函数定义之前则必须声明若在后则可以不用声明3)内联函数是在函数名第一次出现时在函数名之前冠以关键字inline在程序编译时, 编译器将程序中出现的内联函数的调用表达式用内联函数的函数体进行替换使用内联函数,加快了程序的执行速度,节省程序运行时的开销4)函数重载是指同一个函数名可以对应着多个不同函数的实现原则:函数重载要求编译器能够唯一一地确定调用ー个函数时应执行哪个函数代码确定 函数时,编译器是通过函数的参数个数、参数类型和参数顺序来区分的也就是说,进行函 数重载时,要求同名函数参数个数不同、参数类型不同或参数顺序不同否则,将无法确定 是哪ー个函数体5)在使用函数的嵌套调用时要注意函数的返回地址,在函数体执行完毕后,一定要 返回调用该函数的主调函数,不能出现越级返回的情况6)第一阶段:递推将原问题不断分解为新的子问题,逐渐从未知向已知递推,最 终达到一知的条件,即递归结束的条件,这时递推阶段结束第二阶段:回归从已知条件出发,按照递推的逆过程,逐一求值回归,最后达到递归 的开始处,结束回归阶段,完成递归调用。
7)在函数或者类内说明的变量是局部变量全局变量是在函数和类外部定义的变量8) CH将所提供的系统函数的说明分别放在不同的头文件中,即.h文件,在程序中 使用系统函数时,要在程序开始处说明函数所在的头文件名4.编程题(1)从键盘输入10个浮点数,求其和及其平均值要求写出其和及平均值的函数2)编写函数fun,函数首部为double fun(int n),其功能是计算S = "V i!的值,并通过 函数值返回主调函数 1(3)输入一个年份,判断是否是闰年4)写出ー个函数,使从键盘输入的ー个字符串反序存放,并在主函数中输入、输出 该字符串5)编写ー个函数,其功能是:输入全班学生的成绩,以负数结束输入,统计学生人 数,作为函数值返冋主:调函数,并计算平均分,通过函数ave返回主调函数参考答案:(1) void sa()float x,sum=0,ave=0;cout«”请输入10个符点数:"《end匕for(int i=0;i〈10;i++)cin»x;sum=sum+x;ave=sum/10;cout«”10个符点数的和为:“vvsumvv”;平均值为:“vvavevvendl;(2) double fun(int n){int sum=0,fac=l;fbr(int i=l;i<=n;i-H-){fac=fac*i;sum=sum+fac;)retum(sum);}(3) void leap(int year){int flag;if(year%4==0)ififyear% 100=0)if(year%400=0) flag=l;else flag=0;else flag=l;else flag=0;ififflag) coutwyear«“年是闰年"vvendl;else cout«yearvoid inverts(){ char ch;cin»ch;if(ch==,O,) return;else inverts();cout«ch;}void main(){coutw”请输入字符串,输入0结束:”vvendl;inverts();cout«endl;)(5) #includeint total(float &ave){float score;float sum=0;int n=0;coutvv”请输入全班学生成绩,以负数结束" vvendl; cin»score;do(n=n+l;sum=sum4-score;cin»score;}while(score>0);ave=sum/n;return n;)float ave()(float average;coutw”人数为:tl«total(average)«endl;return average;)void main(){coutvv"平均值为:"vvave()«endl;第4章数组1.填空题(1)若定义int a[8];则a数组元素下标的下限是,上限是 〇(2)若定义float b[3][4]:则b数组中含有 个 类型的数组元素。
3)在C++中二维数组的存放顺序为 〇(4)要使一个数组a[5]中全部元素的值为0,可以定义为 〇(5)以下程序段为数组a中所有元素输入数据,请填空void main()(int i,a[5];fbr(i=O;i<5;i++)cin»;)(6)以下程序按2行3列输出二维数组,请填空includevoid main(){intb[2][3]={l,2,3,4,5,6),ij;fbr(i=O;;i++)(fbr(j=O;コ++)cout«b[i][j]«"(7)下列函数的功能是:将数组a中n个元素逆序存放,请填空 void invert(int a[], int n){int i=0j=n-l;while()(int t;t=a[i];a[j]=t;if)(8)一知整数数组"2][5]={{7」5,2,8,20},{12,25,37,16,28}},求数组中所有元素的最大 值,请填空include void main()int b[2][5]=:int i,j,c,d,k=O;fbr(i=0;i<2;i-H-)命 Ki=J-H-) if(b[i]U]>k)C=l; d=j; }cout«"b["«c«"]["«d«"]="«k«endl;)参考答案:(DO, 7(2) 12, float(3) 按行优先顺序存放(4) int a[5]={0,0,0,0,0}5或 int a[5]={〇};或 static int a[5];(5) a[i](6) i<2. j<3, cout«endl;⑺ i<=j, a[i]=a[j], j—(8) {{7,15,2,8,20},{12,25,37,16,28}}, j<5, k=b[i][j]2.选择题(1) C++中引用数组元素时,其数组下标的数据类型允许是( )。
A.整型表达式 B.整型常量C.整型常量或整型表达式 D.任何类型的表达式(2)下列对ー维整型数组a的正确说明是( )»A. int a( 10); B. int n=10,a[n];C. int n; D. #define SIZE 10;cin»n; int a[SIZE];int a[n];(3)下列数组说明和初始化正确的是( )〇A. int a[5]=0; B. int b[3]={l,2,3,4};C. float c[ ]={ 1,2,3}; D. float d={5.3,6.0};(4)下列数组说明和初始化错误的是( )A. int a[2][3]={l,2,3,4,5,6}; B. int b[ ][3]={2,3,4,5};C. int c[3][2]={{1},{2},{3}}; D. float d[3][ ]={5.3,6.0,6.8};(5)若有以下定义,则对a数组元素错误的引用是( )int a[5]={l,2,3,4,5};A. a[0] B. a[2] C. a[a[4]-2] D. a[5](6)若有以下定义,则数组元素a[3]的值是( )int a[5]={ 1,2,3};A. 0 B. 1 C. 2 D. 3(7)若有以下定义,则对a数组元素正确的引用是( )〇float a[2][3]={l,2,3,4,5,6};A. a[l] B. a[0][3] C. a[2][2] D. a[l][l](8)若有以下定义,则数组元素b[2][2]的值是( )〇 intb[][3]={{l},{253},{4,5,6},{7});A. 0 B.3 C. 5 D. 6(9)下列对字符数组s初始化错误的是( )〇A. char s[5]={MabcM}; B. char s[5]=「a丁b/ご};C. char s[5]= " M; D. char s[5]="abcde”;(10)对两个数组a和b进行初始化:char a[ ]=,,abcde";charb[ ]=则下列叙述正确的是( )。
A. a与b完全相同 B. a与b长度相同C. a与b中都存放字符 D. a数组比b数组长度长(11)若有以下定义,则对字符串的操作错误的是( )char s[10]= "program”,t[ ]= "test ”;A. strcpy(s,t) B. cout«strlen(s);C. strcat(s,t) D. cin»t;(12)下列程序的运行结果是( )A. 0 B.6 C.7 D. 8#include int fiin(char s[]){int i=0;while(s[i])i++;return i;)void main()(cout«fun(HabcdefgH)«endl;)(13)下列程序的运行结果是( )〇A. ABC 123 B. 123abc C. 123 ABC D. 123ABCde#include #include void main()(charsl[10]= HabcdeM ,s2[10]= "123",s3[]= “ABC”; cout«strcat(s2,strcpy(s l,s3))«endl;}参考答案:(1) C (2) D (3) C (4) D (5) D (6) A (7) D (8) D(9) D (10) D (11) C (12) C (13) C3.编程题(1)定义ー个整型的ー维数组,并将各数组元素都赋值为该数组下标值的2倍。
2)定义ー个整型的二维数组,每个数组元素的赋值规则为:行下标值加上列下标值3)定义一个整型的二维数组,要求使用二重循环将每个数组元素都赋值为24)统计输入字符串中数字,字母和其它字符的个数5)从键盘上任意输入15个数,找出其中的最大数及其位置6)从键盘上任意输入!5个数,按照从大到小的顺序输出(7)从键盘上任意输入15个小写字母,变成大写字母后按反序输出8) Erarosthenes法求100以内的所有素数,按从小到大依次排列所谓Erarosthenes 法:1不是素数,除去它;2是素数,则它的倍数不是素数,去掉它们;3是素数,则它的 倍数不是素数,去掉它们依次类推,直到所给定的数9)打印如下图形参考答案:(1) #include void main() {int a[5];fbr(int i=0;i<5;i++) a[i]=2*i;)(2) #include void main() (int a[5][10];fbr(int i=0;i<5;i++)(fbr(intj=0;j<10;j++){a[i][j]=i+j;cout«a[i][j]«")cout«endl;(3) #include void main(){int a[5][10];fbr(int i=0;i<5;i++)for(intj=0J<10;j-H-){a[i]U]=2;cout«a[i]U]«n ”;cout«endl;}}(4) #include#includevoid main(){char s[20];int i=0;int digit=0,letters=0,other=0;coutvv”请输入字符串,以、〇结束:”;cin»s;while(s[i]!=W){if(s[i]>=,0,&&s[i]<=,9,) digit++;elseif(s[i]>=,a'&&s[i]<=,z,||s[i]>='A,&&s[i]<=,Z,) letters-H-;elseother+4-;if)cout«"数字个数为:"«digit«endl;cout«"字符个数为:"《letters«endl;cout<〈"其他字符:"«other«endl;)(5) #includevoid main(){int a[15];coutw”请输入数值(nvl5)”《endl;int i,k,max;fbr(i=O;i<15;i++)cin»a[i];max=a[0];fbr(i=0;i<15;i-H-)if(a[i]>max)max=a[i];k=i;cout«"最大值为"《max«*\ty<"下标位置为""k«endl;)(6) #includevoid main(){int a[15];cout«"请输入数值(nV 15)"«endl;int ij,t;fbr(i=0;i<15;i-H-)cin»a[i];for(i=0;i<15;i-H-)(int flag=0;fbr(j=Oj<15-i-l;j++){if(aU]#includevoid main()(char a[20];int n=0,j,i=0;char c;coutvv”请输入小写字母" vvendl;c=getchar();while(n<15)a[i]=c;i-H-;n++;c=getchar();a[i]=、(T;fbr(i=O;i=*a,&&a[i]<=,z,)a[i]=a[i]-32;i=Oj=n-l;while(i<=j/2){int t;t=a[i];a[i]=a[j];a[j]=t;ifj--;}fbr(i=O;i#define N 100void main()(inta[N+l];〃元素值置1,表示该元素是素数;置〇,表示该元素不是素数 int i;for (i=l;i<=N;i++)a[i]=l;i=l;while((i<=N)&&(a[i]=l))(if(i=l)a[i]=0;//l不是素数else{intj=i+l;while(j<=N)(if(j%i=O)a[j]=O;j++;i++; cout«"输出100以内的素数:"《endl; for(i=l;i<=N;i-H-)if(a[i]=l)coutwiw へ t';cout«endl;}(9) #includevoid main()(int ij;for(i=0;i<5;i++)fbr(j=O;j<=ij++) cout«" for(j=0;j<5j++) cout«"*";cout«endl;第5章 结构体和共用体1.填空题(1)通常定义结构体变量可采用3种形式,即 定义、定义和 定义。
2)用于访问ー个结构体变量中的某个结构体成员要用 运算符3)因为共用体成员采用 技术,因此,每ー时刻共用体变量只有一个成员起作用,其他的成员不起作用4)下列程序的输出结果为includestruct abc{char c;float v;);void main()(abc a={B,98.5};cout«a.c«M H«a.v«endl;)(5)函数caculate的功能是:计算45名学生4门课的平均分,请填空includeconst int m=4;const int n=45;struct student(int number;char name[12];float score[m]; 〃m门课的成绩float ave; 〃平均分}stu[n]={{0}};void caculate(student s[],int n){int ij;float sum; fbr(i=O;istruct flower(int num; 〃花号char name[20]; 〃花名char color[l 0]; 〃花色float price;} mudan= {110245「 牡丹“,“ red”, 12};void main()cout«mudan.num«^*«mudan.name«,\t'«mudan.color«,\t,«mudan.price«endl;}参考答案:(1)直接定义,间接定义,无名定义(2)成员(3)覆盖(4) B, 9。