C重点知识点总结及习题

上传人:仙*** 文档编号:91719948 上传时间:2022-05-17 格式:DOC 页数:143 大小:588.50KB
返回 下载 相关 举报
C重点知识点总结及习题_第1页
第1页 / 共143页
C重点知识点总结及习题_第2页
第2页 / 共143页
C重点知识点总结及习题_第3页
第3页 / 共143页
点击查看更多>>
资源描述
C+的特点:1.支持抽象数据类型 2.多态性,一个接口,多重算法,支持早期联编和滞后联编3.继承性,保证了代码复用,支持分类的概念一个c+程序由一个或多个函数构成,并且在这些函数中只有一个主函数main,它是程序执行的入口。C+程序严格区别字母的大小写。第2章 基本数据类型、运算符与表达式【内容提要】数据类型变量与常量运算符与表达式简单输入与输出【重点与难点】2.1 数据类型在C+程序里,每个名字都有一个与之相关联的类型,这个类型决定了可以对这个名字所指代的实体应用什么操作,并决定这些操作将如何做出解释。数据类型基本数据类型复合数据类型字符型 char结构类型 struct枚举类型 enum单精度型 float数组类型 Type双精度型 double布尔型 bool浮点型指针类型 Type*联合类型 union类类型 class空类型 void整型 int图2.1 C+的数据类型图中Type表示非控数据类型。2.1.1 基本数据类型l 逻辑型:又称布尔型,用关键字bool表示。有两个值true或false。true可以转换成整数1,false可以转换成整数0。与此对应,整数也可以隐式的转换成bool值:非0的整数转换成true,0转换成false。l 字符型:用关键字char表示。取值包含具体实现所用的字符集里的一个字符。字符型数据通常占用1个字节的存储空间。l 整型:用关键字int表示。取值是计算机所能表示的所有整数。l 浮点型:包括单精度型(float)和双精度型(double)。单精度型通常占用4个字节的存储空间,双精度型通常占用8个字节的空间。l 空类型:用关键字void表示。用于说明某个函数没有返回值。没有void类型的对象。在基本的数据类型前可以添加修饰符,以改变基本类型的意义。signed:有符号。 unsigned:无符号。unsigned和signed只用于修饰char和int,且signed修饰词可以省略。当用unsigned修饰词时,后面的类型说明符可以省略。对于有符号和无符号的整型数据,它们所占的存储空间的大小相同,但它们的表数范围却不相同(对字符型意义相同)。short:短型。只用于修饰int,且用short修饰时,int可以省略。long:长型。只用于修饰int和double。当用long修饰int时,int可以省略。数据类型的描述确定了其内存所占空间的大小,也确定了其表示范围。用sizeof(数据类型)可以确定某数据类型的字节长度。请读者查看在你所用的机器上,下面类型的最大值和最小值是什么:char、short、int、long、float、double、long double 、unsigned。2.1.2 复合数据类型l 数组:由具有相同数据类型的元素组成的集合。 l 结构体:由不同的数据类型构成的一种混合的数据结构,构成结构体的成员的数据类型一般不同,并且在内存中分别占据不同的存储单元。 l 共用体:是类似于结构体的一种构造类型,与结构体不同的是构成共同体的数据成员共用同一段内存单元。l 枚举:将变量的值一一列举出来,每个枚举成员(枚举符)都与一个整数相对应。按默认方式,枚举符所赋的值从0开始递增。枚举的值也可以用整型的表达式赋值进行初始化。如果某个枚举中所有枚举符的值均非负,该枚举的表示范围是0: 2K -1,其中2K是能使所有枚举符位于此范围内的最小的2的幂;如果存在负的枚举符值,该枚举的取值范围就是-2K:2K -1。l 指针类型:指针类型变量用于存储另一变量的地址,而不能用来存放基本类型的数据。它在内存中占据一个存储单元。 l 类类型:类是体现面向对象程序设计的最基本特征,也是体现C+与C最大的不同之处。类是一个数据类型,它定义的是一种对象类型,由数据和方法组成,描述了属于该类型的所有对象的性质。 2.2变量与常量2.1.1 变量:指在运行期间其值可以改变的量。变量有三个特征:变量类型、变量名、变量值。l 命名:遵循标识符命名规则。标识符是对实体定义的一种定义符,用来标识用户定义的常量名、变量名、函数名、文件名、数组名、和数据类型名和程序名等。只能由字母、数字和下划线组成,且以字母或下划线开头。命名时注意以下几点:1C+的关键字不能用作用户自定义的实体名;2以下划线开头的名字是保留给实现或者运行环境,用于特殊目的,在应用程序里不要采用这样的名字;3大写与小写字母是区分的;4见名知义。5维持统一的命名风格。l 定义:格式: =,l typedef:为某种类型声明一个新名字,而不是定义一种新类型。格式:typedef 2.1.2 常量:程序执行期间其值不变的量。主要有下列几类常量。l 布尔常量l 字符常量用单引号括起的一个字符。在内存中,字符数据以ASCII码存储,如字符a的ASCII码为97。以转义字符开始的字符常量后跟不同的字符表示不同的特殊字符。l 字符串常量由一对双引号括起来的零个或多个字符序列。 字符串可以写在多行上,不过在这种情况下必须用反斜线表示下一行字符是这一行字符的延续。 字符串常量实际上是一个字符数组,组成数组的字符除显示给出的外,还包括字符结尾处标识字符串结束的符号0,所以字符串“abc”实际上包含4个字符:a、b、c和0。注意字符常量与字符串常量在表示、存储、运算方面的区别。l 整型常量可以用十进制、八进制或十六进制表示。 十进制常量 :一般占一个机器字长,是一个带正负号的常数(默认情况下为正数)。 八进制常量 :由数字0开头,其后由若干0-7的数字组成,如0378,0123等。十六进制常量:以0x或0X开头,其后由若干0-9的数字及A-F(或小写a-f)的字母组成,如0x123,0x3ab。l 浮点型常量只能以十进制形式表示。共有两种表示形式:小数表示法和指数表示法。 如:11.3、.2、2.3e10、-2.3E-1等。l 枚举常量枚举声明形式: enum ;枚举符可以有两种形式:/= l 符号常量定义形式:const =,;表示可选项,以下都采用这种标记。定义的符号常量必须初始化。一个符号常量可看作是一个只读变量,由const定义的常量的值不可以改变。const的最常见的用途是作为数组的界和作为分情况标号。2.3 运算符与表达式在程序中,表达式是计算求值的基本单位,它是由运算符和运算数组成的式子。运算符是表示进行某种运算的符号。运算数包含常量、变量和函数等。C+语言的运算符按其在表达式中与运算对象的关系(连接运算对象的个数)可分为:单目运算、双目运算、三目运算。C+运算符一览表名称运算符举例优先级结合性作用域区分符:x1左结合性分量运算符. -p.next,p-next2函数调用运算符()fac()下标运算符p10后增量、后减量前增量、前减量+ -+ -p+-p23右结合性求字节运算符sizeofsizeof(int)3正号、负号+ -1,+3指针运算符* 和 &*p,&x分配、回收空间运算符New deletep=new int;delete p;强制类型转换运算符(type)(int)x算术运算符* / % + -3%5(取模)45左结合性左移、右移83, 836关系运算符 = !=3b?x:y14右结合性赋值运算符= 及其扩展(+= -= *= /= %= 等)a=2a+=215逗号运算符,a=1,b=2,c=316左结合性表2.1 C+运算符一览表2.4 简单输入与输出在C+中,I/O使用了流的概念-字符(或字节)流。每一个I/O 设备传送和接收一系列的字节,称之为流。输入操作可以看成是字节从一个设备流入内存,而输出操作可以看成是字节从内存流出到一个设备。要使用C+标准的I/O流库的功能,需要包括两个头文件:iostream.h用于提供基本的输入输出功能,iomanip.h用于提供格式化的功能。2.4.1 I/O的书写格式(基本数据类型的输入输出)头文件iostream.h包含有cin和cout对象,对应于标准输入流和标准输出流。流读取运算符“”表示流的输入,可以从cin输入流中读取字符;流插入运算符“”表示流的输出,可以向cout输出流插入字符。如:cout”hello world.”ij; /输入i,j的值2.4.2使用控制符(基本数据类型输入输出的格式控制)C+中提供了大量的用于执行格式化输入输出的格式控制符,具体名称及作用请参看表2.2。控制符描述所在头文件dec 置基数为10iostream.hhex置基数为16oct置基数为8setfill(c)设填充字符为csetprecision(n)设显示小数精度为n位setw(n)设域宽为n个字符setiosflags(ios:fixed)固定的浮点显示iomanip.hsetiosflags(ios:scientific)指数表示setiosflags(ios:left)左对齐setiosflags(ios:right)右对齐setiosflags(ios:skipws)忽略前导空白setiosflags(ios:uppercase)16进制数大写输出setiosflags(ios:lowercase)16进制数小写输出setiosflags(ios:showpoin)显示小数点setiosflags(ios:showpos)显示符号(正负号)setiosflags(ios:showbase)指定在数值前输出进制(0表示八进制,0x或0X表示十六进制)表2.2 I/O流的常用控制符【典型例题】例题1:对以下各种数据类型比较所占用存储空间的大小: (1)char、int、short int、long int、double、long double. (2) signed int、unsigned int.解答:(1) 本题主要考查的知识点是各种类型所占用的存储空间的大小以及相应的表数范围。在32位计算机中,char占1个字节,short int 占2个字节,int占4个字节,long int占4个字节,double占8个字节。sizeof运算符用于求解某种数据类型的大小。short和long在修饰整型时可以省略int。答案为: (2)对于一种确定的数据类型有符号数与无符号数所占的存储空间相同,表数范围不同。修饰符signed和unsigned只能用于修饰字符型和整型。答案为: 例题2:下列哪一项能用作用户自定义的标识符: (a)const (b)2var (c)my name (d)var2解答:本题主要考查标识符命名规则。C+关键字不能用于用户自定义标识符,(a)中const是关键字;第一个字符必须是字母或下划线,(b)中2var是以数字开头;不能含有空格,(c)中my name含有空格。答案为:d。例题3:指出下列程序中的错误:_。int main()const int x; x=100; return 0;解答:本题主要考查对符号常量的理解。const定义的符号常量必须初始化,由const定义的常量的值不可以改变。所以本题有两处错误:第一、没有对符号常量x进行初始化;第二、给符号常量赋值是错误的。 例题4:给下列表达式加上全部的括号(假设所用变量均已定义):(1) a+b-c-%b(2) ab?b:cd?a:cb?b:(cd?a:(cb?(ac?a:c):(bc?b:c)。(2) 主要考查对逻辑表达式的理解和书写。答案为:1=age&age=100。(3) 主要考查如何在计算机中表示一个数学公式。答案为:(a+b)*h/2。(4) 主要考查对逻辑表达式的理解和书写。答案为:(year%4=0&year%100!=0)|(year%400=0)。例题6:下列选项中两个表达式的运算结果相同的是( )。(a)3/2和3.0/2.0 (b)3/2和3.0/2 (c) 3/2.0和3.0/2.0 (d) 3/2.0和3/2解答:本题考查数据类型及表达式中数据类型的隐式转换。3/2中两个操作数都为整型,运算结果仍为整型即1;3.0/2和3/2.0中一个操作数为整型另一个为浮点型,运算时整型隐式转换为浮点型,运算结果也为浮点型即1.5;3.0/2.0两个操作数均为浮点型,结果也为浮点型即1.5。答案为:(c)。例题7:下列程序的运行结果为:_。#includevoid main()int a=2,b=4,i=0,x; x=ab&+i;coutx:xendl;couti:ib为假,所以表达式ab&+i为假,而+i没有执行。故i为0。答案为:x:0 i:0例题8:求解下列各表达式的值(其中x的值为100)。(1) (a=1,b=2,c=3)(2) 1|35(3) a+3&!0%1(4) x%2?“odd”:” even” 解答:(1) 逗号表达式的值是其最后一个表达式的值。答案为:3。(2) 运算符的优先级高于|运算符,所以先算35结果为96(二进制1100000),然后与1做按位与运算则结果为97(二进制1100001)。答案为:97。(3) 参与本题的运算符,按优先级由高到低依次是:!运算符、算术运算符、逻辑运算符。a+3时字符型首先隐式转换成整型然后相加结果为100,!0%1即1%1结果为0,100&0结果为0。答案为:0。(4) 算术表达式的优先级高于条件表达式,所以先算x%2结果为0,0?”odd”:”even”结果为”even”。本题完成判断一个数是奇数还是偶数,若该数为奇数,则表达式的值为”odd”,为偶数,则表达式的值为”even”。答案为:”odd”。例题9:下列程序运行结果为:_。#include#includevoid main() int a=23; double b=23.123456789; coutatbendl; coutsetprecision(0)bendl; coutsetiosflags(ios:fixed)setprecision(7)bendl; coutsetiosflags(ios:scientific)bendl; coutsetprecision(6); coutsetiosflags(ios:showbase); couthexataendl; coutdec; coutsetw(10)setfill(*)setiosflags(ios:left)aendl;coutsetfill( );解答:本题主要考查对格式化输入输出的掌握。本题主函数中第三行输出a,b,t为转义字符,其含义是跳过一个制表位。不设置输出宽度时,默认输出6位有效数字,超出部分四舍五入。所以该行输出为:23 23.1235。 setprecision(n)设置显示精度,最少显示一位有效数字。如果不重新设置,则其保持效力,所以使用完后要还原为6位默认值。第四行中设置setprecision(0)与setprecision(1)作用相同,结果显示一位有效数字即为:2e+001。 setiosflags(ios:fixed)为固定的浮点显示,其后跟setprecision(n)表示小数点后显示精度为n。所以第五行输出结果为:23.1234568。 setiosflags(ios:scientific)为指数显示,当其整数部分宽度大于设置的显示精度(默认为6位)时,以指数形式显示结果。否则根据设置的(或默认的)显示精度显示n位有效数字。所以第六行输出结果为:23.12346。 setiosflags(ios:showbase)为指定在数值前输出进制。hex置基数为16,且该操作保持效力,所以使用完后应该恢复为默认值10进制。第九行输出结果为:0x17 0x17。setw(n) 设域宽为n个字符,setfill(c) 设填充字符为c ,setiosflags(ios:left)为左对齐。第十一行输出结果为:23*。答案为:23 23.12352e+00123.123456823.123460x17 0x1723*【习题】一、 选择题1. 下列数据类型不是C+语言基本数据类型的是( )。(a)字符型 (b)整型 (c)浮点型 (d)数组一、 下列字符列中,可作为C+语言程序自定义标识符是( )。选择题2.(a)x (b)-var (c)new (d)3i3. 下列数中哪一个是8进制数( )。(a)0x1g (b)010 (c)080 (d)01b4. 已知a=1,b=2,c=3,则表达是+a|-b&+c的值为( )。(a)0 (b)1 (c)2 (d)35. 下列表达式选项中,( )是正确的。(a)+(a+) (b)a+b (c)a+b (d)a+b6. 已知枚举类型定义语句为:( )。enum colorRED,BLUE,PINK=6,YELLOW,GREEN,PURPLE=15;则下列叙述中错误的是( )。(a)枚举常量RED的值为1 (b)枚举常量BLUE的值为1(c)枚举常量YELLOW的值为7 (d)枚举常量PURPLE的值为157. 下列程序的运行结果正确的是( )。#include#includevoid main()const double pi=3.1415926;coutsetprecision(3)piendlsetiosflags(ios:fixed)piendlsetprecision(8)setfill(*)setw(12)piendl;return;(a) 3.1423.142*3.14159260(b) 3.143.142*3.14159260(c) 3.143.143.14159260*(d) 3.143.142*3.14159268. 若int x=3,y=5;则表达式x&y+%3的值为( )。(a)0 (b)1 (c)2 (d)39. 下列常量正确的是( )。(a) ”hello (b)1FL (c) 3.14UL (d) 1.8E-3 World” 10. 若char x=97;,则变量x包含几个字符( )。(a)1个 (b)2个 (c)4个 (d)8个一、 填空题1. c+语言标示符是以字母或_开头的,由字母、数字、下划线组成。2. 在C+语言中,char型数据在内存中的存储形式是_。3. 在内存中,存储字符x占用1个字节,存储字符串“x”要占用_个字节。4. 符号常量可以用宏定义define和_表示。5. 转义字符序列中的首字符是_。6. 空字符串的长度是_。7. 表达式coutn;还可以表示为_。8. 若要为unsigned int定义一个新的名字UINT应采用的语句是_。9. 以下程序不借助第3个变量实现a,b值得交换,请填空。#includeVoid main()int a,b;coutab;a=_a+b_;b=_a-b_;a=_(a-b)/2;coutatbendl;10. 大多数C+程序都要包含头文件_。该文件中包含了所有输入/输出流操作所需的基本信息。当使用带参数的操作时,程序中必须包含头文件_。二、 编程题1. 编写一个程序,输入一个三位数,分别输出该数的百位、十位和个位。2. 编写一个程序打印出各种基本数据类型、几个你自己定义的复合数据类型的大小。使用sizeof运算符。【参考答案】一、 选择题1 d2 a3 b4 b5 c6 a7 b8 c9 d10 a二、 填空题1 下划线2 ASCII3 24 const5 6 07 coutendl;8 typedef unsigned int UINT;9 a+b a-b a-b10 iomanip.h iostream.h三、 编程题1#includevoid main()int num,var1,var2,var3;cout请输入一个三位数:num;if(num999|num100) /用于检查输入数据的合法性cout您的输入有误!endl;elsevar1=num/100;var2=(num-var1*100)/10;var3=num%10;cout百位数为:var1endl十位数为:var2endl个位数为:var3endl;2#include#includevoid main() int array10; enum monthJan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec; char *p;coutThe size of char is:sizeof(char)endl The size of int is:sizeof(int)endl The size of short int is:sizeof(short int)endl The size of long int is:sizeof(long int)endl The size of float is:sizeof(float)endl The size of double is:sizeof(double)endlThe size of long double is:sizeof(long double)endlThe size of signed int is:sizeof(int)endlThe size of unsigned int is:sizeof(unsigned)endlThe size of array is:sizeof(array)endlThe size of month is:sizeof(month)endlThe size of p is:sizeof(p)表达式1表达式2; 向屏幕输出语句格式为: cout表达式1表达式2; 注意:连续输入多项数据时应键入空白字符(包括空格键、回车键和Tab键)将相邻的两项数据分开。而连续输出时,cout不会在相邻数据项间加分隔符,为了增强显示效果,用户可通过控制符自定义显示宽度,换行等(部分控制符在iomanip.h头文件中声明)。3.1.3 复合语句 C+语言允许把一组语句用一对花括号括起来,构成一个复合语句。复合语句被视为一个独立的单元它可以出现在程序中任何单个语句可以出现的地方复合语句不需要用分号作为结束。注意空语句;和空复合语句 是等价的。3.2 选择控制语句 针对于不同情况采用不同的处理方式的问题,用选择结构来实现。选择语句包含:if语句和switch语句。3.2.1 if语句 if语句: 格式:if() 作用:当为真时,执行,否则直接执行if语句后边的语句。这里的可以是一条语句,也可以是几条语句,但对于多条语句的情况必须用 将几条语句括起来构成复合语句,在if语句中当做一个整体处理。 ifelse语句: 格式:if() else 作用:当为真时,执行;当为假时,执行。这里和可以是一条语句也可以是复合语句。说明:if语句有时可以用条件表达式替代。if语句支持多种形式的嵌套使用,但一般嵌套层次不超过三层。另外约定else总是与它上边最近的一个if配对。为了防止语法或逻辑错误的发生,建议在较复杂的情形中使用花括号区分。3.2.2 switch语句 格式:switch()case :case :case :default: 作用:计算判断它与哪个匹配,执行第一个相匹配的后的语句,直到遇到break转去执行switch语句以外的语句;如果均不匹配则执行default后定义的语句(在default省略的情形中,直接执行switch语句以外的语句)。 说明: switch语句中的的值只能是整型、字符型或枚举型表达式。switch语句中,case和其后的间必须有空格否则会产生逻辑错误。case后的的值是互不相同的,且它的类型与switch后的的类型一致。通常情况下,每个case分支语句结束后都要加一个break语句来结束switch语句。但在要表示一个范围,或描述一类对象时(如A,B,C都属于合格,D属于不合格)有可能几条case分支语句后才有一个break语句。switch语句与嵌套的if语句都可以用于处理多分支选择的问题。3.3 循环控制语句对于同一个语句或同一组语句序列需要重复多次,则采用循环结构。C+提供了三种循环控制语句:while语句,dowhile语句,for语句。3.3.1 while语句 格式:while() 作用:判断是否为真,若为真则执行,然后重复判断,直到为假时跳出while循环执行其后的语句。说明:这里的可以是单条语句也可以是复合语句。当在循环开始就不满足,则不执行while循环也就是说while循环有可能一次都不执行。3.3.2 dowhile语句 格式: do while(); 作用:当流程到达do后,立即执行循环体语句,然后再对条件表达式进行判断。若的值为真,则重复执行循环体语句,直到为假时退出循环,执行dowhile循环后的语句。 说明:这种循环中至少执行一次,当条件在循环开始时就不满足时这种做法是危险的,所以应尽量使用while语句而避免使用dowhile语句。3.3.3 for语句 格式:for(;) 作用:可以称为初始化表达式,一般用于对循环变量进行初始化或赋初值;可以称为条件表达式,当它的判断条件为真时,就执行循环体,否则终止循环,退出for循环;可以称为修正表达式,一般用于在每次循环体执行之后,对循环变量进行修改操作。说明:这里的可以是一条语句也可以是复合语句。for循环中三个表达式可能省略一个、两个或三个都省略,但它们之间分号在三种情况下都不可以省略。3.4 跳转语句3.4.1 break语句 格式:break; 作用:结束当前正在执行的循环(for、while、dowhile)或多路分支(switch)程序结构,转而执行这些结构后面的语句。 说明:在循环结构中使用时,如果有多层循环,只跳出其所在的最近的循环层。3.4.2 continue语句 格式:continue; 作用:结束当前正在执行的这一次循环(for、while、dowhile),接着执行下一次循环。即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环语句的判定。【典型例题】 例题1:下列程序的运行结果为_。 #include void main( ) char c= ; if (c=A & c=Z) cout=a & c=z) cout是小写字母; else cout=A & c=a & c=z,如果满足则输出是小写字母否则输出是其它字符。else总是与离它最近的前一个if配对。答案为:是其它字符。例题2:已定义:char grade; ,若成绩为A、B、C时输出合格,成绩为D时输出不合格,其他情况提示重新输入。要完成以上功能,则下列switch语句正确的是( )。(a) switch(grade) case A: case B: case C: cout”合格”;break; case D: cout”不合格”;break; default: cout”请重新输入:”;(b) switch(grade) case A: case B: case C: cout”合格”; case D: cout”不合格”;default: cout”请重新输入:”;(c) switch(grade) caseA, B, C: cout”合格”;break; case D: cout”不合格”;break;default: cout”请重新输入:”;(d) switch(grade) case A: case B: case C: cout”合格”;break; case D: cout”不合格”;break;default: cout0);- y=x+1;-else;- y=x-1;-(2) While(i) - coutiendl; - i-;-(3) int i=1,sum; -while(i=100) - sum+=i; - i+;-(4) int i=1,sum=0;-do - sum+=i; - i+;while(i=100) -解答:本题中包含了初学者在编程中容易犯的一些错误,提醒读者注意。(1)本题考查对if语句的语法结构的掌握。本题的错误在于在if和else后不应加分号。答案为:将、句末的分号去掉。(2)C+是大小写敏感的语言。答案为:将中While改为while。(3)本题目的是完成1到100求和,结果放在sum中,但是sum在参与运算前应该首先对其赋值。答案为:将改为 int i=1,sum=0;(4)本题主要考查对dowhile的语法结构的掌握以及与while结构进行对比区别两者在作用和语法上的不同。答案为:将第行while后加分号即while(i=100);例题4:循环语句for(int i=0;i=5&!i;i+) coutiendl;执行循环次数为( )。 (a) 1次 (b)3次 (c) 5次 (d)6次解答:本题考查对for循环的理解以及表达式运算。执行for循环i的初值为0,第一次循环时表达式0=5&!0结果为1所以执行循环体输出0;然后i自加为1,计算表达式1=5&!1结果为0,所以退出循环。答案为:a。例题5:程序段:int i,sum=0;for(i=1;i=100;sum+=i,i+);与上边程序段不等价的是( )。(a) int sum=0,i=1;dosum+=i+;while(i=100);(b) int i=1,sum=0;while(i100) break;sum+=i+;(d) int i,sum=0;for(i=1;i=100;i+,sum+=i);解答:本题主要考查对各种循环结构的以及它们之间转换关系的理解。本题中的程序段是求解1到100的和,循环结束后i的值为101,sum的值为5050。选项a、b分别用dowhile和while循环完成求解1到100的和;选项c是永真循环,通过break语句退出循环,其作用也是求解1到100的和;选项d中i先自加然后求和,其作用为求解2到101的和,循环结束后i的值为101,sum的值为5150。答案为:d。例题6:运行下列程序的结果为(1)_。(2)_。(1)#includevoid main() int x,y,cmultiple; coutxy; cmultiple=x; while(1) if(cmultiple%y=0)break; cmultiple+=x; cout最小公倍数:cmultipleendl;输入:24 7(2)#includevoid main() int x,y,var1; coutxy; if(xy)var1=x,x=y,y=var1; var1=x%y; while(var1) x=y;y=var1;var1=x%y; cout最大公约数:yendl;输入:247解答:本题考查理解程序的能力。(1)中求解两个数x,y的最小公倍数思路为若x能够被y整除则x就是这两个数的最小公倍数,否则判断x的整数倍是否能被y整除,直到x的某个倍数可以被y整除,则该数即为这两个数的最小公倍数。(2)中求解两个数x,y的最大公约数思路为用两个数中较大的数作为被除数,较小的数作为除数,如果能够整除则较小的数就是这两个数的最大公约数,否则,将较小的数作为新的被除数,将两个数的模作为除数,重复以上工作直到模为0,则这个除数就是x和y的最大公约数。答案为:(1) 最小公倍数:168 (2) 最大公约数:1例题7:以下程序的功能是输出1到100之间每位数的乘积大于每位数的和的数,如对数字12有1*22+3所以输出这个数。请填空。#includevoid main() int num,product=1,sum=0,n; for(num=1;numsum) coutnumendl; 解答:本题中变量num用于表示1到100的整数,变量product用于存放每位数的乘积,变量sum用于存放每位数的和,变量n用于存放求解每位数的中间结果。外层for循环用于控制判断1到100的数,内层while循环用于计算每位数的积与每位数的和,if语句用于判断该数的每位数的乘积是否大于每位数的和,若满足此条件,则输出这个数。在处要对n赋值,最初它是num的副本而后用于存放计算每位数的中间结果;处为退出while循环的条件,当当前这个数的每位数都被取出,则内层循环结束;改变循环变量的语句,使得循环在某种情况下可以结束,这里取n除10的商,直到商为0时结束内层循环。答案为: 例题8:以下程序的功能是判断一个数是否为素数。请填空。#includevoid main() int num; cout输入一个正整数:; _; int isprime=1; for(int i=2;i=num-1;i+) if(_) isprime=0; _; if(isprime) coutnum 是一个素数。endl; else coutnum 不是一个素数。endl;解答: 本题中变量num存放要判断的数,变量isprime用于记录该数是否为素数,当isprime为1时即该数为素数,否则为合数。判断思路为如果num能被2到num-1的任意一个数整除则该数不是素数。处需要输入待判断的数,处为判断条件,当检测到2到num-1中第一个能整
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


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

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


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