《2021年计算机二级C语言测试题库及答案解析.docx》由会员分享,可在线阅读,更多相关《2021年计算机二级C语言测试题库及答案解析.docx(83页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2021计算机二级C语言测试题库及答案解析 计算机二级c语言测试题及答案解析11. (A )是构成C语言程序的基本单位。A、函数B、过程C、子程序D、子例程2. C语言程序从C开始执行。A、程序中第一条可执行语句B、程序中第一个函数C、程序中的main函数D、包含文件中的第一个函数3、以下说法中正确的是(C ),.A、C语言程序总是从第一个定义的函数开始执行B、在C语言程序中,要调用的函数必须在main()函数中 定义C、C语言程序总是从main()函数开始执行D、C语言程序中的main()函数必须放在程序的开始部分4 .下列关于C语言的说法错误的是(B ) oA、C程序的工作过程是编辑、编译
2、、连接、运行B、C语言不区分大小写。C、C程序的三种基本结构是顺序、选择、循环D、C程序从main函数开始执行5 .下列正确的标识符是(C )oA、-a1B、aiC、 a2_iD、 int t58题为相同类型题考点:标识符的命名规则只能由字母、数字、下划线构成数字不能作为标识符的开头关键字不能作为标识符选项A中的,选项B中与不满足(1);选项 D中的int为关键字,不满足(3)6 .下列C语言用户标识符中合法的是(B )0A、3axB、xC、 caseD、-e2 E)un i on选项A中的标识符以数字开头不满足(2);选项C, E均为为 关键字,不满足(3);选项D中的不满足(1);D、 下
3、列四组选项中,正确的C语言标识符是(C )。B、a+bC、 a123D、123选项A中的“” ,选项B中“+”不满足(1);选项D中的 标识符以数字开头不满足(2)8、下列四组字符串中都可以用作C语言程序中的标识符的 是(A)oA、pr i nt _3d db8 aBcE、 lam one_haIf start$it 3paiF、 str_1 Cpp pow whileD、Pxq My-book Iine# His. age选项 B 中的,选项 D 中一”不满足(1);选项C中的while为关键字,不满足(3)9 .C语言中的简单数据类型包括(D )oA、整型、实型、逻辑型B、整型、实型、逻楫
4、型、字符型C、整型、字符型、逻辑型D、整型、实型、字符型10 .在C语言程序中,表达式5%2的结果是C oA、2.5D、3%为求余运算符,该运算符只能对整型数据进行运算。且符 号与被模数相同 o 5%2=1 ; 5% (-2) =1 ;(-5) %2=-1 ; (-5) % (-2) =-1;/为求商运算符,该运算符能够对整型、字符、浮点等类型 的数据进行运算,5/2=211 .如果int a=3,b=4;则条件表达式aA、3B、4C、0D、1详见教材P97.表达式1?表达式2:表达式3先计算表达式1,若表达式1成立,则选择计算表达式2,并表达式2的值 作为整个大表达式的值;若表达式1不成立,
5、则选择计算表达式3,并将表达式3的 值作为整个大表达式的值此题中的aa为3, b为4。a12.若int x=2, y=3, z=4则表达 式xA、4B、3C、2E)113.C语言中,关系表达式和逻辑表达式的值是(B ) oA、0B、0或 1C、1G、 T 或F14 .下面(D )表达式的值为4.A、 11/3B、11.0/3C、 (fl oat)11/3D、 (int) (11.0/3+0. 5)1416题为同一类型详见教材P5456.(1)相同数据类型的元素进行数学运算(+、-、*、/)得到结 果还保持原数据类型。(2)不同数据类型的元素进行数学运算,先要统一数据类型, 统一的标准是低精度类
6、型转换为高精度的数据类型。选项A, 11与3为两个整数,11/3结果的数据类型也应为 整数,因此将3. 666666的小数部分全部舍掉,仅保留整数,因 此11/3=3.选项B, 11.0为实数,3为整数,因此首先要统一数据类型,将整型数据3转换为3.0,转换后数据类型统一为实型数据,选项B变为11.0/3.0,结果的数据类型也应为实型数据,因此选项B 11.0/3=3. 666666选项C,先将整数11强制类型转换,转换为实型11.0,因 此选项C变为11.0/3,其后计算过程、结果与选项B同选项D,首先计算11.0/3,其计算过程、结果与选项B同, 得到 3. 666666;再计算 3. 6
7、66666+0. 5=4.166666 ,最后将 4.166666强制类型转换为整型,即将其小数部分全部舍掉,结 果为415 .设整型变量a=2,则执行下列语句后,浮点型变量b的 值不为0.5的是(B )A、b=1.0/aB、b=(f loat) (1/AC、b=1/(f loat)aD、b=1/(a*1.0)16 .若 “int n; float f=13. 8; ”,贝”执行 “n=(int)f%3” 后,n的值是(A)A、1B、4C、4. 333333D、4.6“(int)f ”表示将f中的值强制类型转换为整型,即将13. 8 的小数部分舍掉,转换为13;然后计算13%3,结果为1,再将
8、结果赋给变量n,因此n的值为117 .以下对一维数组a的正确说明是:DA、char a (10);B、 i nt a ;C、 int k=5, ak;D、char a3 = ta, b , c, !;详见教材P143144, 一维数组的定义、初始化类型符数组名常量表达式类型符是指数组中数组元素的类型;数组名要符合标识符命 名规则;常量表达式是指数组的长度(数组中包含元素的个数), 其值只能是整数,不可以是变量,而且从1开始计数。选项A,常量表达式只能放在中括号中选项B,只有在对数组初始化(即赋值)的时候才可以省略数 组的长度,B中并未对a进行初始化。选项C,常量表达式不能为变量。18.以下能对
9、一维数组a进行初始化的语句是:(C )A、int a5 = (0,1,2, 3,4,)B、 i nta (5) = C、 int a3 = 0,1,2)D、 int a5 = 10*1详见教材P145, 一维数组的定义、初始化选项B,D,常量表达式只能放在中括号中选项A,数组可以看做是若干个相同数据类型元素的有序集 合,因此以集合的形式对其初始化,使用对其初始化,选项 A 用了 ().19.在C语言中对一维整型数组的正确定义为D。A、int a (10);B、int n=10, an;C、 int n;an;D、 #define N 10int aN;20、已知:inta10;则对a数组元素的
10、正确引用是(D)。A、a 10B、a 3. 5C、a (5)D、a0详见教材P144,数组元素的引用数组名下标引用数组元素时,中的下标为逻辑地址下标,只能为整 数,可以为变量,且从。开始计数int a10表示定义了一个包含10个整型数据的数组a,数 组元素的逻辑地址下标范围为09,即a0表示组中第1个元 素;a1表示组中第2个元素;a2表示组中第3个元 素;;a9表示组中第10个元素.选项A,趣过了数组a的逻辑地址下标范围;选项B,逻辑地址下标只能为整数选项C,逻辑地址下标只能放在1中21 .若有以下数组说明,则i=10;aai元素数值是(C )。int a12 = 1,4, 7,10, 2,
11、5,8,11,3, 6,9,12;A、10B、9C、6D、5先算aai内层的ai,由于i=10,因此ai即a10.a10对应下面数组中的元素为9.因此aai即为a9a9对应下面数组中的元素为6.因此a9即为622 .若有说明:int aD3 = 1,2,3, 4,5, 6,7;则数组a的第一维的大小为:(B )A、2B、3C、4D、无确定值5 7D、3 6 9二维数组的一维大小,即指二维数组的行数,在本题中,按 行对二维数组赋值,因此内层有几个大括号,数组就有几行23 .对二维数组的正确定义是(C )详见教材P149152,二维数组的定义、初始化类型符数组名常量表达式常量表达式二维数组可以看做
12、是矩阵类型符是指数组中数组元素的类型;数组名要符合标识符命 名规则;第一个常量表达式是指数组的行数;第二个常量表达式 是指数组的列数;常量表达式的值只能是整数,不可以是变量, 而且从1开始计数。一维数组初始化时可以省略数组长度二维数组初始化时可以省略行数,但不能省略列数选项A,B,都省略了列数选项D,不符合二维数组定义的一般形式,行、列常量表达 式应该放在不同的口中int a = 1,2, 3,4,5,6);B、int a 2 = 1,2, 3,4,5,6);C、int a 3 = 1,2, 3,4,5, 6);D、int a2,3=1,2,3,4,5, 6);24 .已知int a34;则对
13、数组元素引用正确的是_CA、aB、a1,3C、a 0D、a (2) (1)详见教材P150,数组元素的引用数组名下标下标引用数组元素时,中的下标为逻辑地址下标,只能为整 数,可以为变量,且从0开始计数第一个下标表示行逻辑地址下标,第二个下标表示列逻 辑地址下标。本题图示详见P149图6.7因此a的行逻辑地址范围。2;a的列逻辑地址范围。3;选项A,列逻辑地址下标超过范围选项B,D,的引用形式不正确。25 . C语言中函数返回值的类型是由A决定的.A、函数定义时指定的类型B、return语句中的表达式类型C、调用该函数时的实参的数据类型D、形参的数据类型26 .在C语言中,函数的数据类型是指(A
14、)A、函数返回值的数据类型B、函数形参的数据类型C、调用该函数时的实参的数据类型D、任意指定的数据类型27 .在函数调用时,以下说法正确的是(B )A、函数调用后必须带回返回值B、实际参数和形式参数可以同名C、函数间的数据传递不可以使用全局变量D、主调函数和被调函数总是在同一个文件里28 .在C语言中,表示静态存储类别的关键字是:(C)A、 autoB、 registerC、 staticD、 extern29 .未指定存储类别的变量,其隐含的存储类别为(A )。A、 autoB、 staticC、 externD、 register30 .若有以下说明语句:struct student in
15、t num;char name;float score; stu;则下面的叙述不正确的是:(D )A、struct是结构体类型的关键字B、struct student是用户定义的结构体类型C、num, score都是结构体成员名D、stu是用户定义的结构体类型名31 .若有以下说明语句:struct date( int year;int month;int day;br ithday;则下面的.叙述不正确的是 C .A、struct是声明结构体类型时用的关键字B、struct date是用户定义的结构体类型名C、brithday是用户定义的结构体类型名D、year, day都是结构体成员名32
16、 .以下对结构变量stul中成员age的非法引用是B struct student int age;int num; stul, *p;p=&stu1;A stul. ageB、 student, ageD、(*p). age33 .设有如下定义:struck sk int a;float b;data;int *p;若要使P指向data中的a域,正确的赋值语句是CA、 p=&a;B、 p=datAs a;C、 p=&datA、 a;D、 *p=datA a;34 .设有以下说明语句:typedef struct stu int a;float b; stutype;则下面叙述中错误的是(D
17、)oA、struct是结构类型的关键字B、struct stu是用户定义的结构类型C、a和b都是结构成员名D、stutype是用户定义的结构体变量名35 .语句int *p;说明了 C 。A、p是指向一维数组的指针B、p是指向函数的指针,该函数返回一 int型数据C、p是指向int型数据的指针/指针的定义教材P223D、p是函数名,该函数返回一指向int型数据的指针36 .下列不正确的定义是(A )0A、int *p=&i, i;B、 int *p, i;C、 int i, *p=&i;D、int i,*p;选项A先定义一个整型指针变量p,然后将变量i的地址赋 给P。然而此时还未定义变量i因此
18、编译器无法获得变量i的地 址。(A与C对比,选项C先定义变量i,则在内存中为i分配空 间,因此i在内存空间的地址就可以确定了;然后再定义p,此 时可以为p赋i的地址,C正确)37.若有说明:int n=2,*p=&n,*q=p,则以下非法的赋值语 句是:(D )A、p=qB、 *p=*qC、 n=*qD p=np,q同为整型指针变量,二者里面仅能存放整型变量的地址。选项A, q中为地址,因此可将此地址赋给p选项B, *p表示p所指向对象n的内容,即一个整数;*q表 示q所指向对象的内容,由于在定义q时为其初始化,将p中n 的地址给q,因此p中存放n的地址,*q表示q所指向对象n 的内容.因此*
19、p=*q相当于n=n;选项C, n=*q等价于n=n;选项D, p中只能存放地址,不能将n中的整数值赋给p38.有语句:int 则B是对指针变量p的正确定义 和初始化。A、 int p=*a;B、 int *p=a;C、 int p=&a;D、 int *p=&a;选项A, a是数组名,不是指针变量名,因此不可用*标注数 组名a选项C, a是数组名,数组名就是地址,无需再用地址符号。 而且在定义指针变量p时,应在变量名前加*,标明p是指针变 量选项D, a是数组名,数组名就是地址,无需再用地址符号。39 .若有说明语句rtint a5,*p=a;w ,则对数组元素的正确引用是(C )0A、ap
20、B、paC、* (p+2)D、p+2首先定义一个整型数组a, a的长度为5,然后定义一个指 针变量P,并同时对p进行初始化,将数组a的地址赋给p。因 此此时p中存放的数组a的首地址,即数组中第一个元素a0 的地址。对于数组元素下标的引用(详见p144), 一般形式 数组名 下标其中下标为逻辑地址下标,从。开始计数,方括号中的 下标可以是变量,可以是表达式,但结果一定要是整数。选项A, p中存放的是地址,不是整数,不能做数组元素的 下标选项B, a是数组名,数组名就是地址,不是整数,不能做 数组元素的下标选项C,(重点! !详见p23/234) p+2表示指向同一数组中 的下两个元素的地址,当前
21、p指向a0,则p+2表示a2的地 址,因此*(p+2)表示a2的内容40 .有如下程序int a10 = 1,2, 3,4,5, 6,7, 8,9,10),*P=a;则数值为9的表达式是B*p+9B、 *(P+8)C、 *P+=9D、P+8(重点! !详见 p231234)首先定义一个整型数组a, a的长度为5,然后定义一个指 针变量P,并同时对P进行初始化,将数组a的地址赋给P。因 此此时P中存放的数组a的首地址,即数组中第一个元素a0 的地址。数组中9对应的是a8,选项B, P+8表示数组中后8个元 素的地址,即a8的地址。*(P+8)则表示该地址内所存放的内 容,即a 8的值。选项A,
22、*P表示P所指向对象的内容,此时P指向a0, *P 即 a0的值 1. *P+9=1+9=10选项C, *P表示P所指向对象的内容,此时P指向a0, *P 即 a0的值。因此*P+=9 即*P =*P+9,等价于 a0=a0+9.选项D, P+8表示数组中后8个元素的地址,即a8的地址, 而非a8中的值。41 .在C语言中,以D作为字符串结束标志A、,B、,C、 0D、 042.下列数据中属于“字符串常量”的是(A ),.A、“a”B、 ABC)C、 abcOD、 a若干个字符构成字符串在C语言中,用单引号标识字符;用双引号标识字符串选项B, C,分别用。和标识字符串选项D,标识字符。43.已
23、知 char x=hel Io, y = h,e,a,b,e) 则关于两个数组长度的正确描述是B .A、相同B、x大于yC、x小于yD、以上答案都不对C语言中,字符串后面需要一个结束标志位0,通常系统 会自动添加。对一维数组初始化时可采用字符串的形式(例如本题数组 x),也可采用字符集合的形式(例如本题数组y)。在以字符串形 式初始化时,数组x不尽要存储字符串中的字符,还要存储字符 串后的结束标志位,因此数组x的长度为6;在以字符集合形式 初始化时,数组y,仅存储集合中的元素,因此数组y长度为5计算机二级c语言测试题及答案解析21、设一棵满二叉树共有15个结点,则在该满二叉树中的叶子结点数为(
24、)oA. 7 B. 8 C. 9 D. 10参考答案:B参考解析:在具有n个结点的满二叉树,其非叶子结点数为 int(n/2),而叶子结点数等于总结点数减去非叶子结点数。本题 n=15,故非叶子结点数等于int(15/2) =7,叶子结点数等于 15-7=8o2、数据流图用于抽象描述一个软件的逻辑模型,数据流图 由一些特定的图符构成。下列图符名标识的图符不属于数据流图 合法图符的是( )oA.控制流B.加工C.存储文件D.源和潭参考答案:A参考解析:数据流图用于抽象描述一个软件的逻辑模型,它 由一些特定的图符构成,包括4个方面,即加工、数据流、存储 文件、源和潭。3、对关系S和R进行集合运算,
25、结果中既包含S中的所有 元组也包含R中的所有元组,这样的集合运算称为()0A,并运算B.交运算C.差运算D.积运算参考答案:A参考解析:关系的并运算是指由结构相同的两个关系合并,形成一个新的关系,新关系中包含两个关系中的所有元组。4、下列方法中,属于白盒法设计测试用例的方法的是 ()。A.错误推测B.因果图C.基本路径测试D.边界值分析参考答案:C参考解析:白盒测试方法也称为结构测试或逻辑测试,主要 方法有逻楫覆盖测试、基本路径测试等。5、设R是一个2元关系,有3个元组,S是一个3元关系, 有3个元组。如T=RX S,则T的元组的个数为()。A. 6 B. 8 C. 9 D. 12参考答案:C
26、参考解析:R为n元关系,有P个元组S为m元关系,有q 个元组。两个关系笛卡儿积是一个n+m元的关系,元组个数是 qXpo所以T的元组的个数为9个。6、在数据库系统中,数据库用户能够看见和使用的局部数 据的逻辑结构和特征的描述是()。A.外模式B.逻辑模式C.概念模式D.物理模式参考答案:A参考解析:外模式也称子模式,它是数据库用户(包括应用 程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特 征的描述,它是由概念模式推导出来的,是数据库用户的数据视 图,是与某一应用有关的数据的逻辑表示。个概念模式可以有若干个外模式。7、数据管理技术发展的三个阶段中,()没有专门的软件对数据进行管理。I
27、.人工管理阶段II .文件系统阶段川.数据库阶段A.仅 I B.仅川 C. I 和 II D. II 和 III参考答案:A参考解析:数据管理技术发展的兰个阶段中,只有人工管理 阶段,没有操作系统,没有管理数据的软件,数据处理方式是 批处理。在文件系统阶段,操作系统中已经有了专门数据管理软 件,一般称为文件系统。在数据库系统阶段,出现了统一管理数 据的专门软件系统,即数据库管理系统。8、数据库系统的核心是()oA.数据模型B.软件开发G数据库设计D.数据库管理系统 参考答案:D参考解析:数据库管理系统DBMS是数据库系统的核心。DBMS 是负责数据库的建立、使用和维护的软件。DBMS建立在操作
28、系 统之上,实施对数据库的统一管理和控制。用户使用的各种数据 库命令以及应用程序的执行,最终都必须通过DBMS。另外,DBMS 还承担着数据库的安全保护工作,按照DBA所规定的要求,保证 数据库的完整性和安全性。9、以下叙述正确的是()A.变量的作用域取决于变量定义语句的位置B.全局变量可以在函数以外的任何部位进行定义C.局部变量的作用域可用于其他函数的调用D. 一个变量说明为static存储类型是为了限制其他编译单 元的引用参考答案:D参考解析:本题考查函数调用的变量作用域。全局变量不在 任何函数俸内定义,作用域为整个文件i局部变量在函数体内定 义,作用域仅为本次函数;static类型是静态
29、变量,为了方便其 他编译单元的引用,不能随意改变。一个函数包含两部分:函数 首和函数体,函数体包括花括号内的所有语句。10、下列选项中,不属于数据管理员(DBA)职责的是( )oA.数据库维护B.数据库设计C.改善系统性能,提高系统效率D.数据类型转换参考答案:D参考解析:数据库管理员(DataBaseAdministrator, DBA) 是指对数据库的规划、设计、维护、监视等的人员,其主要工作 如下:数据库设计。DBA的主要任务之一是数据库设计,具体地 说是进行数据模式的设计。数据库维护。DBA必须对数据库中的数据安全性、完整性、并发控制及系统恢复、数据定期转储等进行实施与维护。改善系统性
30、能,提高系统效率。DBA必须随时监视数据库 的运行状态,不断调整内部结构,使系统保持最佳状态与效率。计算机二级C语言测试题及答案解析31.# i ncIude stdio. hma i n ()(char c;c=get);whiIe(c!=,?) putc);c=get); 如果从键盘输入abcde?f gh (回车)运行结果为:abode2.#includema i n () char c;wh iIe (c=get)!= $)(if ( A =c&c= Z )putc);else if( a =c&c= iz, )putc-32);当输入为ab*AB%cd#CD$时,运行结果为:ABAB
31、CDCD3.#includema i n ()I int x, y =0;for (x=1;x=10)break;y=y+x;printf ( w%d %d w , y,x);运行结果为:10 5详见教材p120for语句详见教材p126128break, continue语句for(表达式1;表达式2;表达式3)(1)先求解表达式1(2)求解表达式2,若其值为真,执行循环体,然后执行(3).若为假,则结束循环,转到(5)(3)求解表达式3(4)转回上面(2)继续执行(5)循环结束,执行for语句下面的一个语句break ,跳出循环体;continue,结束本次循环(第i次循 环),继续执行下
32、一次循环(第i+1次循环)此题 表达式1为x=1,表达式2(循环条件)为x=10,表达 式3为x+初值x为1, y为0,循环条件(即表达式2)x=10成立,进 入循环体第1次循环执行if语句。小于10, if语句的条件表达式不成立,不 执行break;执行 y=y+x; y=0+1=1转向表达式3,执行x+,x=x+1=1+1=2。循环条件x=10成 立,进入第2次循环第2次循环执行if语句。1小于10, if语句的条件表达式不成立,不 执行break;执行 y=y+x; y=1+2=3转向表达式3,执行x+,x=x+1=2+1=3。循环条件x=10成 立,进入第3次循环第3次循环执行if语句
33、。3小于10, if语句的条件表达式不成立,不执行break;执行 y=y+x; y=3+3=6转向表达式3,执行x+,x=x+1=3+1=4。循环条件x=10成 立,进入第4次循环第4次循环执行if语句。6小于10, if语句的条件表达式不成立,不 执行break;执行 y=y+x; y=6+4=10转向表达式3,执行x+,x=x+1 =4+1=5。循环条件x=10成 立,进入第5次循环第5次循环执行汗语句。10等于10, if语句的条件表达式成立,执 行break,跳出循环。从break跳出至for语句的下一条语句。执行 printf( rt%d %dn , y,x);输出当前的y与x.结
34、果为10 54.#includemain()(char ch;ch=get );sw i tch (ch)case A : pr intf ( %c, A);case B : printf( “c”, B ); break;default: pr intf ( a%s , otherw ;) 当从键盘输入字母A时,运行结果为:AB详见教材p103, switch语句 switch (表达式) case常量1 :语句1case常量2 :语句2I I I I I I I I Icase常量n :语句ndefault :语句 n+1 )其中表达式,常量1,,常量n都为整型或字符型case相当于给出执
35、行程序的入口和起始位置,若找到匹配 的常量,则从此处开始往下执行程序,不再匹配常量,直至遇到break 或 switch 结束本题过程:首先从键盘接收一个字符A并将其放在变量ch中。执行switch语句。Switch后面的条件表达式为ch,因此表 达式的值即为字符A.用字符A依次与下面的case中的 常量四配。与第1个case后的常量四配,则从其后的语句开始往下执行程序(在执行过程中不再进行匹配。)因此先执行 printf( “c”, A),屏幕上榆出A;再往下继续执行 pr intf ( %c”, B),屏幕上输出B;再继续执行break,此 时跳出swi tch语句。5.#includem
36、ain() int a=1, b=0;scanf( %d,&a);switch (a)case 1: b=1;break;case 2: b=2;break;default : b=10; pr intf (%d , b);若键盘输入5,运行结果为:10本题过程:首先用scanf函数为变量a赋值为5。执行switch语句oswitch后面的条件表达式为a,因此表达 式的值即为5.用5依次与下面case中的常量匹配。没有找到 匹配的常量,因此两个case后的语句都不执行。执行default 后面的语句b=10;将10瓶给变量b。输出变量b,结果为106.#includema i n () _ c
37、har grade=, C;switch(grade)Icase A : printf( a90-100 ”);case ,B : printf( w80-90 ” );case C : printf( w70-80 ”);case D : printf( “60-70 ”); break;case ,E : printf( a0; y)if (y%3=0) printf (%dw ,y);)运行结果为:852详见教材p53,自增自减符号此题 表达式1被省略,表达式2 (循环条件)为y0,表达式 3为y初值y为9,循环条件(即表达式2) y0成立,进入循环体第1次循环执行if语句。9%3=0,
38、 if语句的条件表达式成立,执行 printf(%dw ,y),即y先自减1变为8,然后在榆出,因此屏幕上输出8转向表达式3,执行y, y=y-1=8-1=7o循环条件y0成立, 进入第2次循环第2次循环执行if语句。7%3不为0, if语句的条件表达式不成立, 不执行 pr intf (%d” ,y)转向表达式3,执行v, y=y-1=7-1=6o循环条件y0成立, 进入第3次循环第3次循环执行if语句。6%3=0, if语句的条件表达式成立,执行 printf (%dw ,y),即y先自减1变为5,然后在输出,因此屏幕上输出5转向表达式3,执行v, y=y-1=5-1=4o循环条件y0成立
39、, 进入第4次循环第4次循环执行if语句。4%3不为0, if语句的条件表达式不成立, 不执行 pr intf (%d”,y)转向表达式3,执行y-,y=4-1=3。循环条件y0成立,进 入第5次循环第5次循环执行if语句。3%3=0, if语句的条件表达式成立,执行 printf(%dw ,y),即y先自减1变为2,然后在榆出,因此屏幕上输出2转向表达式3,执行vy=y-1 =2-1 =1。循环条件y0成立, 进入第5次循环第6次循环执行if语句。1%3不为0, if语句的条件表达式不成立, 不执行 pr intf (%d” ,y)转向表达式3,执行y,y=1-1=0。循环条件y0不成立,
40、循环结束。8.#includema i n () int i, sum=0;i=1;do sum=sum+i; i+; whiIe(i=10);printf( “d” ,sum);运行结果为:559.#include#define N 4ma i n () int i;int x1=1, x2=2;printfC );for(i=1;i=N;i+) pr intf (%4d%4d, x1, x2);if (i%2=0)pr intf ();x1=x1+x2;x2=x2+x1;运行结果为:12 3 58 132134此题 首先为整型变量赋初值x1=1,x2=2表达式1为i=1,表达式2(循环条件
41、)为i=N即i=4,表 达式3为i+循环变量初值i为1,循环条件(即表达式2) i=4成立,进 入第1次循环第1次循环执行printf (%4d%4d,x1,x2);因此屏幕上输出12执行if语句。1%2不为0, if语句的条件表达式不成立,不执行 printf();执行x1=x1+x2=1+2=3;此时x1中的值已变为3执行 x2=x2+x1 =2+3=5 o转向表达式3,执行i+, i为2O循环条件i=4成立,进入第2次循环第2次循环执行pr intf (%4d%4d, x1, x2);因此屏幕上输出35执行if语句。2%2=0, if语句的条件表达式成立,执行printf();换行执行x
42、1=x1+x2=3+5=8;此时x1中的值已变为8执行 x2=x2+x1 =5+8=13 o转向表达式3,执行i+, i为3o循环条件i=4成立,进入第3次循环第3次循环执行pr intf (%4d%4d, x1, x2);因此屏幕上输出813执行if语句。3%2不为0, if语句的条件表达式不成立,不执行 pr intf执行x1=x1+x2=8+13=21;此时x1中的值已变为21执行 x2=x2+x1 =21 +13=34转向表达式3,执行i+, i为4循环条件i=4成立,进入第4次循环第2次循环执行pr intf C,%4d%4d, x1, x2);因此屏幕上输出2134执行if语句。4%2=0, if语句的条件表达式成立,执行 printf(换行执行x1=x1+x2=21+34=55;此时x1中的值已变为55执行 x2=x2+x1 =34+55=89 o转向表达式3,执行i+, i为5o循环条件i=10, y10; x, y+)x/=2, y+=2;printf ( “x=%d,y=%d ”,x,y);运行结果为:x=0, y=12 11.#include#define N 4main()I i nt i,j;for