计算机二级c语言测试题及解析.pdf
2015 年计算机二级 C 语言测试题及答案分析(1)1.(A)是组成 C 语言程序的基本单位。A、函数 B、过程 C、子程序 D、子例程 语言程序从 C 开始履行。A、程序中第一条可履行语句 B、程序中第一个函数 C、程序中的 main 函数 D、包含文件中的第一个函数 3、以下说法中正确的选项是 (C)。A、C 语言程序老是从第一个定义的函数开始履行 B、在 C 语言程序中,要调用的函数一定在 main()函数中定义 C、C 语言程序老是从 main()函数开始履行 D、C 语言程序中的 main()函数一定放在程序的开始部分 4.以下对于 C 语言的说法错误的选项是 (B)。A、C 程序的工作过程是编写、编译、连结、运转 B、C 语言不划分大小写。C、C 程序的三种基本构造是次序、选择、循环 D、C 程序从 main 函数开始履行 5.以下正确的表记符是 (C )。A、-a1 B、ai C、a2_i D、int t 58 题为同样种类题 考点:表记符的命名规则 只好由字母、数字、下划线组成 数字不可以作为表记符的开头 要点字不可以作为表记符 选项 A 中的“-”,选项 B 中“”与“”不知足(1);选项 D 中的 int 为关 键字,不知足(3)6.以下 C 语言用户表记符中合法的是 (B)。A、3ax B、x C、case D、-e2 E)union 选项 A 中的表记符以数字开头不知足(2);选项 C,E 均为为要点字,不知足 (3);选项 D 中的“-”不知足(1);7.以下四组选项中,正确的 C 语言表记符是(C)。A、%x B、a+b C、a123 D、123 选项 A 中的“%”,选项 B 中“+”不知足(1);选项 D 中的表记符以数字开 头不知足(2)8、以下四组字符串中都能够用作 C 语言程序中的表记符的是(A)。A、print _3d db8 aBc B、Iam one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My-book line#选项 B 中的“”,”$”,选项 D 中“”,”#”,”.”,”-”不知足(1);选项 C 中的 while 为要点字,不知足(3)语言中的简单数据种类包含(D)。A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在 C 语言程序中,表达式 5%2 的结果是 C。A、B、2 C、1 D、3%为求余运算符,该运算符只好对整型数据进行运算。且符号与被模数同样。5%2=1;5%(-2)=1;(-5)%2=-1;(-5)%(-2)=-1;/为求商运算符,该运算符能够对整型、字符、浮点等种类的数据进行运算,5/2=2 11.假如 int a=3,b=4;则条件表达式 aA、3 B、4 C、0 D、1 详赐教材 P97.表达式 1?表达式 2:表达式 3 先计算表达式 1,若表达式 1 建立,则选择计算表达式 2,并表达式 2 的值作为整个大表达 式的值;若表达式 1 不建立,则选择计算表达式 3,并将表达式 3 的值作为整个大表 达式的值 本题中的 aa 为 3,b 为 4。a12.若 int x=2,y=3,z=4 则表达式 x A、4 B、3 C、2 D、0 E)1 语言中,关系表达式和逻辑表达式的值是(B)。A、0 B、0 或 1 C、1 D、T或 F 14.下边(D)表达式的值为 4.A、11/3 B、3 C、(float)11/3 D、(int)3+1416 题为同一种类详赐教材 P5456.(1)同样数据种类的元素进行数学运算 (+、-、*、/)获取结果还保持原数据 种类。(2)不一样数据种类的元素进行数学运算,先要一致数据种类,一致的标准是低精度种类变换为高精度的数据种类。选项 A,11 与 3 为两个整数,11/3 结果的数据种类也应为整数,所以将的小数部分所有舍掉,仅保存整数,所以 11/3=3.选项 B,为实数,3 为整数,所以第一要一致数据种类,将整型数据 3 变换 为,变换后数据种类一致为实型数据,选项 B 变成,结果的数据种类也应为实型 数据,所以选项 B 3=选项 C,先将整数 11 强迫种类变换,变换为实型,所以选项 C 变成 3,后来 计算过程、结果与选项 B 同 选项 D,第一计算 3,其计算过程、结果与选项 B 同,获取;再计算+=,最后 将强迫种类变换为整型,马上其小数部分所有舍掉,结果为 4 15.设整型变量 a=2,则履行以下语句后,浮点型变量 b 的值不为的是(B)A、b=a B、b=(float)(1/A 、C、b=1/(float)a D、b=1/(a*16.若“int n;float f=;”,则履行“n=(int)f%3”后,n 的值是(A)A、1 B、4 C、D、“(int)f“表示将 f 中的值强迫种类变换为整型,马上的小数部分舍掉,变换为 13;而后计算 13%3,结果为 1,再将结果赋给变量 n,所以 n 的值为 1 17.以下对一维数组 a 的正确说明是:D A、char a(10);B、int a;C、int k=5,ak;D、char a3=a,b,c;详赐教材 P143144,一维数组的定义、初始化 种类符 数组名 常量表达式 种类符是指数组中数组元素的种类;数组名要切合表记符命名规则;常量表 达式是指数组的长度 (数组中包含元素的个数 ),其值只好是整数,不可以够是变量,并且从 1 开始计数。选项 A,常量表达式只好放在中括号 中 选项 B,只有在对数组初始化 (即赋值)的时候才能够省略数组的长度,B 中 并未对 a 进行初始化。选项 C,常量表达式不可认为变量。18.以下能对一维数组 a 进行初始化的语句是:(C)A、int a5=(0,1,2,3,4,)B、inta(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 10 int aN;20、已知:int a10;则对 a 数组元素的正确引用是 (D)。A、a10 B、a C、a(5)D、a0 详赐教材 P144,数组元素的引用 数组名 下标 引用数组元素时,中的下标为逻辑地点下标,只好为整数,能够为变量,且从 0 开始计数 int a10 表示定义了一个包含 10 个整型数据的数组 a,数组元素的逻辑地 址下标范围为 09,即 a0 表示组中第 1 个元素;a1 表示组中第 2 个元素;a2 表示组中第 3 个元素;.;a9 表示组中第 10 个元素.选项 A,超出了数组 a 的逻辑地点下标范围 ;选项 B,逻辑地点下标只好为整数 选项 C,逻辑地点下标只好放在 中 21.如有以下数组说明,则 i=10;aai 元素数值是 (C )。int a12=1,4,7,10,2,5,8,11,3,6,9,12;A、10 B、9 C、6 D、5 先算 aai 内层的 ai ,因为 i=10,所以 ai 即 a10.a10 对应下边数组中的元素为 9.所以 aai 即为 a9 a9 对应下边数组中的元素为 6.所以 a9 即为 6 22.如有说明:int a3=1,2,3,4,5,6,7;则数组 a 的第一维的 大小为:(B)A、2 B、3 C、4 D、无确立值 5 7 D、369 二维数组的一维大小,即指二维数组的行数,在本题中,按行对二维数组赋值,所以内层有几个大括号,数组就有几行 23.对二维数组的正确立义是 (C )详赐教材 P149152,二维数组的定义、初始化 种类符 数组名 常量表达式 常量表达式 二维数组能够看做是矩阵 种类符是指数组中数组元素的种类;数组名要切合表记符命名规则;第一个 常量表达式是指数组的行数;第二个常量表达式是指数组的列数;常量表达式的 值只好是整数,不可以够是变量,并且从 1 开始计数。一维数组初始化时能够省略数组长度 二维数组初始化时能够省略行数,但不可以省略列数 选项 A,B,都省略了列数 选项 D,不切合二维数组定义的一般形式,行、列常量表达式应当放在不一样 的 中 A、int a =1,2,3,4,5,6;B、int a2=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;则对数组元素引用正确的选项是 _C_ A、a24 B、a1,3 C、a20 D、a(2)(1)详赐教材 P150,数组元素的引用 数组名 下标 下标 引用数组元素时,中的下标为逻辑地点下标,只好为整数,能够为变量,且从 0 开始计数 第一个 下标 表示行逻辑地点下标,第二个 下标 表示列逻辑地点下标。本题图示详见 P149 图 所以 a 的行逻辑地点范围 02;a 的列逻辑地点范围 03;选项 A,列逻辑地点下标超出范围 选项 B,D,的引用形式不正确。语言中函数返回值的种类是由 A 决定的.A、函数定义时指定的种类 B、return 语句中的表达式种类 C、调用该函数时的实参的数据种类 D、形参的数据种类 26.在 C 语言中,函数的数据种类是指(A)A、函数返回值的数据种类 B、函数形参的数据种类 C、调用该函数时的实参的数据种类 D、随意指定的数据种类 27.在函数调用时,以下说法正确的选项是(B)A、函数调用后一定带回返回值 B、实质参数和形式参数能够同名 C、函数间的数据传达不可以够使用全局变量 D、主调函数和被调函数老是在同一个文件里 28.在 C 语言中,表示静态储存类其他要点字是:(C)A、auto B、register C、static D、extern 29.未指定储存类其他变量,其隐含的储存类型为 (A)。A、auto B、static C、extern D、register 30.如有以下说明语句:struct student int 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;brithday;则下边的表达不正确的选项是 _C_.A、struct 是申明构造体种类时用的要点字 B、struct date 是用户定义的构造体种类名 C、brithday 是用户定义的构造体种类名 D、year,day 都是构造体成员名 32.以下对构造变量 stul 中成员 age 的非法引用是 B struct student int age;int num;stu1,*p;p=&stu1;A、B、C、p-age D、(*p).age 33.设有以下定义:struck sk int a;float b;data;int*p;若要使 P 指向 data 中的 a 域,正确的赋值语句是 C A、p=&a;B、p=datA、a;C、p=&datA、a;D、*p=datA、a;34.设有以下说明语句:typedef struct stu int a;float b;stutype;则下边表达中错误的选项是 (D)。A、struct 是构造种类的要点字 B、struct stu 是用户定义的构造种类 C、a 和 b 都是构造成员名 D、stutype 是用户定义的构造体变量名 35.语句 int*p;说了然 C。A、p 是指向一维数组的指针 B、p 是指向函数的指针,该函数返回一 int 型数据 C、p 是指向 int 型数据的指针 列不正确的定义是(A)。A、int*p=&i,i;B、int*p,i;i,*p=&i;D、int i,*p;选项 A 先定义一个整型指针变量 p,而后将变量 i 的地点赋给 p。但是此时 还不决义变量 i 所以编译器没法获取变量 i 的地点。(A 与 C 对照,选项 C 先定义变量 i,则在内存中为 i 分派空间,所以 i 在内存空间的地点就能够确立了 ;而后再定义 p,此时能够为 p 赋 i 的地点,C 正确)37.如有说明:int n=2,*p=&n,*q=p,则以下非法的赋值语句是:(D)A、p=q B、*p=*q C、n=*q D、p=n p,q 同为整型指针变量,两者里面仅能寄存整型变量的地点。选项 A,q 中为地点,所以可将此地点赋给 p 选项 B,*p 表示 p 所指向对象 n 的内容,即一个整数 ;*q 表示 q 所指向对象的内容,因为在定义 q 时为其初始化,将 p 中 n 的地点给 q,所以 p 中寄存 n 的地点,*q 表示 q 所指向对象 n 的内容.所以*p=*q 相当于 n=n;选项 C,n=*q 等价于 n=n;选项 D,p 中只好寄存地点,不可以将 n 中的整数值赋给 p 38.有语句:int a10,;则 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.如有说明语句“int a5,*p=a;”,则对数组元素的正确引用是 (C)。A、ap B、pa C、*(p+2)D、p+2 第一定义一个整型数组 a,a 的长度为 5,而后定义一个指针变量 p,并同时 对 p 进行初始化,将数组 a 的地点赋给 p。所以此时 p 中寄存的数组 a 的首地点,即数组中第一个元素 a0 的地点。对于数组元素下标的引用(详见 p144),一般形式 数组名 下标 此中下标为逻辑地点下标,从 0 开始计数,方括号中的下标能够是变量,能够是表达式,但结果必定假如整数。选项 A,p 中寄存的是地点,不是整数,不可以做数组元素的下标 选项 B,a 是数组名,数组名就是地点,不是整数,不可以做数组元素的下标选项 C,(要点!详见 p231234)p+2 表示指向同一数组中的下两个元素的 地点,目前 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 A、*P+9 B、*(P+8)C、*P+=9 D、P+8 (要点!详见 p231234)第一定义一个整型数组 a,a 的长度为 5,而后定义一个指针变量 P,并同时 对 P 进行初始化,将数组 a 的地点赋给 P。所以此时 P 中寄存的数组 a 的首地点,即数组中第一个元素 a0 的地点。数组中 9 对应的是 a8,选项 B,P+8 表示数组中后 8 个元素的地点,即 a8 的地点。*(P+8)则表示该地点内所寄存的内容,即 a8 的值。选项 A,*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、n B、C、0 D、0 42.以下数据中属于“字符串常量”的是 (A)。A、“a”B、ABC C、abc0 D、a 若干个字符组成字符串 在 C 语言中,用单引号表记字符;用双引号表记字符串选项 B,C,分别用 和表记字符串 选项 D,表记字符。43.已知 char x=hello,y=h,e,a,b,e;,则对于两个数 组长度的正确描绘是 B.A、同样 B、x 大于 y C、x 小于 y D、以上答案都不对 C 语言中,字符串后边需要一个结束标记位 0,往常系统会自动增添。对一维数组初始化时可采纳字符串的形式(比如本题数组 x),也可采纳字符 会合的形式 (比如本题数组 y)。在以字符串形式初始化时,数组 x 不尽要储存字 符串中的字符,还要储存字符串后的结束标记位,所以数组 x 的长度为 6;在以 字符会合形式初始化时,数组 y,仅储存会合中的元素,所以数组 y 长度为 5 2015 年计算机二级 C 语言测试题及答案分析(2)基本输入输出及流程控制 1.#include main()int a=1,b=3,c=5;if(c=a+b)printf(yesn);else printf(non);运转结果为:no 详赐教材 p89 选择构造 详赐教材 p91 关系符号 详见附录 D p378 符号的优先级 =表示判断符号两边的值能否相等;=表示将符号右侧的值赋给左侧的 变量 本题考点是选择构造 3 种基本形式的第二种 选择构造三种一般形式中的“语句”皆为复合语句,复合语句要用 括起来,只有当复合语句中只包含一条语句时能够省略 ,本题即这样,所以 两个 printf 操作没有加 若 c=a+b 建立,则履行 printf(yesn);不然(即 c=a+b 不建立),履行 printf(non);+的优先级高于=,所以先算 a+b,值为 4,表达式 5=4 不建立,所以 履行 printf(non);即输出字符串 no 2.#include main()int a=12,b=-34,c=56,min=0;min=a;if(minb)min=b;if(minc)min=c;printf(min=%d,min);运转结果为:min=-34 详赐教材 p89 选择构造 本题考点是选择构造 3 种基本形式的第一种 一共包含了两个选择构造 (两个 if 语句)定义变量,并赋值 此时 a=12,b=-34,c=56,min=0 将 a 中值拷贝,赋给 min,覆盖了 min 中的 0,此时 min 中的值被更新 为 12。若 minb 建立,则履行 min=b;若 minc 建立,则履行 min=c;输出 min 中的值 12 大于-34,第一个 if 语句的表达式建立,所以履行 min=b;履行后 min 中的值被更新为-34.-34 小于 56,第二个 if 语句的表达式不建立,所以不履行 min=c;最后输出 min 中的值,为-34.3.#include main()int x=2,y=-1,z=5;if(x if(y0)z=0;else z=z+1;printf(“%dn”,z);运转结果为:5 碰到选择构造,第一要明确条件表达式建即刻履行哪些操作。本题中,第一个 if 语句,后来的复合语句没有大括号 ,说明复合语句中只包含一条语 句,从而省略了 。内层的 if.else.是选择构造的第二种基本形式,在结 构上视为一条语句。所以内层的 if.else.作为第一个 if 语句的复合语句。若表达式 x 若 y=0),履行 z=z+1;输出 z 2-1,表达式 x 输出 z 中的值为 5 4.#include main()float a,b,c,t;a=3;b=7;c=1;if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(bc)t=b;b=c;c=t;printf(%,%,%,a,b,c);运转结果为:,详赐教材 p72 数据的输出形式 本题包含了 3 个 if 语句,每个 if 语句后的 都不行省略,因为每个 中都包含了多条语句 若表达式 ab 建立,则履行 t=a;a=b;b=t;若表达式 ac 建立,则履行 t=a;a=c;c=t;若表达式 bc 建立,则履行 t=b;b=c;c=t;输出 a,b,c 中的值,要求输出的每个数据宽度为 5 个空格,小数部分保 留 2 位,数据右对齐 3 小于 7,所以表达式 ab 不建立,所以不履行 t=a;a=b;b=t;3 大于 1,所以表达式 ac 建立,则履行 t=a;a=b;b=t;。第一句,将 a 中的 3 拷贝,粘贴到 t 中;第二句,将 c 中的 1 拷贝,粘贴到 a 中,覆盖掉先 前的 3;第三句。将 t 中的 3 拷贝到 c 中,覆盖掉 c 中先前的 1.履行完复合语句 后实现了 a,c 元素的值的交换,a 为 1,c 为 3,t 为 3,。7 大于 c 中的 3,所以 bc 建立,履行则履行 t=b;b=c;c=t;,过程同 上,履行后 b 为 3,c 为 7,t 为 7 此时输出 a,b,c 中的值为,5.#include main()floatc=,d=;if(cd)c=;else if(c=d)c=;elsec=;printf(“%.1fn ”,c);if.else.运转结果为:本题为 if.else.语句的嵌套,第二 语句 else 部分的复合语句。if.else.作为第一个 若表达式 cd 建立,则履行 c=;不然(表达式 cd 不建立)若表达式 c=d 建立,则履行 c=;不然,履行 c=;输出 c 中的值 小于,所以表达式 cd 不建立,履行第二个 if else 。不等于,所以表达式 c=d 不建立,履行 c=,将赋给 c,覆盖掉 c 中的,此时 c 中的值为 输出此时的 c 中的值 6.#include main()int m;scanf(%d,&m);if(m=0)if(m%2=0)printf(%d is a positive evenn,m);else printf(%d is a positive oddn,m);else if(m%2=0)printf(%d is a negative evenn,m);else printf(%d is a negative oddn,m);若键入-9,则运转结果为:-9 is a negative odd 7.#include main()int num=0;while(num=2)num+;printf(%dn,num);运转结果为:1 2 3 详赐教材 p115 循环构造 当 循 环 条 件 num=2 成 立 的 时 候,执 行 循 环 体 num+;printf(%dn,num);中的语句。循环初值 num 为 0;循环条件 num=2 建立 第 1 次循环:履行 num+;马上 num 中的值加 1,履行后 num 为 1;履行 printf(%dn,num);在屏幕上输出 num 中的值,即输出 1,以后 换行 此时 num 中的值为 1,循环条件 num=2 建立 第 2 此循环:履行 num+;马上 num 中的值加 1,履行后 num 为 2;履行 printf(%dn,num);在屏幕上输出 num 中的值,即输出 2,以后 换行 此时 num 中的值为 2,循环条件 num=2 建立 第 3 此循环:履行 num+;马上 num 中的值加 1,履行后 num 为 3;履行 printf(%dn,num);在屏幕上输出 num 中的值,即输出 3,以后 换行 此时 num 中的值为 3,循环条件 num=2 不建立,结束循环。8.#include main()int sum=10,n=1;while(n3)sum=sum-n;n+;printf(“%d,%d”,n,sum);运转结果为:3,7 当循环条件 n3 建立的时候,履行循环体 sum=sum-n;n+;中的语句。循环初值 sum 为 10,n 为 1;循环条件 n3 建立 第 1 次循环:履行 sum=sum-n=10-1=9;履行 n+,马上 n 中的值加 1,履行后 n 为 2;此时 n 中的值为 2,sum 中的值为 9,循环条件 n0);printf(n);从键盘输入 23,则运转结果为:32 详赐教材 p117 循环构造;p60 复合的赋值运算符 do while(表达式);先无条件履行循环体,再判断循环条件。注意 while(表达式)后有分号 定义整型变量 num,c;为 num 赋一个整型值;履行 c=num%10;printf(%d,c);直到循环条件(num/=10)0 不建立;输出换行 已知为 num 赋值 23 第 1 次履行循环体 履行 c=num%10=23%10=3;履行 printf(%d,c);输出 3 判断循环条件 num/=10 等价于 num=num/10;所以 num=23/10=2,2 大于 0,所以循环条件 (num/=10)0 建立,持续履行循环体。履行完第 1 次循环时,num 为 2,c 为 3 第 2 次履行循环体履行 c=2%10=2;履行 printf(%d,c);再输出 2 判断循环条件 num=2/10=0,0 等于 0,所以循环条件(num/=10)0 不建立。结束循环 10#include main()int s=0,a=5,n;scanf(%d,&n);do s+=1;a=a-2;while(a!=n);printf(%d,%dn,s,a);若输入的值 1,运转结果为:2,1 详赐教材 p117 循环构造;p60 复合的赋值运算符履行 s+=1;a=a-2;直到循环条件 a!=n 不建立;已知为 n 赋值 1,s 为 0,a 为 5 第 1 次履行循环体 履行 s+=1;等价于 s=s+1=0+1 履行 a=a-2;a=5-2=3 判断循环条件,3 不等于 1,所以循环条件 a!=n 建立,持续履行循环体。履行完第 1 次循环时,s 为 1,a 为 3 第 2 次履行循环体 履行 s+=1;等价于 s=s+1=1+1=2 履行 a=a-2;a=3-2=1 判断循环条件,1 等于 1,所以循环条件 a!=n 不建立,结束循环。履行完第 2 次循环时,s 为 2,a 为 1 输出此时 s,a 中的值,结果为 2,1 2015 年计算机二级 C 语言测试题及答案分析(3)1.#include main()char c;c=getchar();while(c!=?)putchar(c);c=getchar();假如从键盘输入 abcde?fgh(回车)运转结果为:abcde 2.#include main()char c;while(c=getchar()!=$)if(A=c&c=Z)putchar(c);else if(a=c&c=z)putchar(c-32);当输入为 ab*AB%cd#CD 时,运转结果为:$ABABCDCD 3.#include main()int x,y=0;for(x=1;x=10)break;y=y+x;printf(“%d%d”,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 次循环),持续履行 下一次循环(第 i+1 次循环)本题 表达式 1 为 x=1,表达式 2(循环条件)为 x=10,表达式 3 为 x+初值 x 为 1,y 为 0,循环条件(即表达式 2)x=10 建立,进入循环体第 1次循环 履行 if 语句。0 小于 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 语句。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 次循环 履行 if 语句。10 等于 10,if 语句的条件表达式建立,履行 break,跳 出循环。从 break 跳出至 for 语句的下一条语句。履行 printf(“%d%d”,y,x);输出目前的 y 与 x.结果为 10 5 4.#include main()char ch;ch=getchar();switch(ch)case A:printf(“%c”,A);case B:printf(“%c”,B);break;default:printf(“%sn”,”other ”);当从键盘输入字母 A 时,运转结果为:AB 详赐教材 p103,switch 语句 switch(表达式)case 常量 1:语句 1 case 常量 2:语句 2 case 常量 n:语句 n default:语句 n+1 此中表达式,常量 1,常量 n 都为整型或字符型 case 相当于给出履行程序的进口和开端地点,若找到般配的常量,则 此后处开始往下履行程序,不再般配常量,直至碰到 break 或 switch 结束 本题过程:第一从键盘接收一个字符 A并将其放在变量 ch 中。履行 switch 语句。Switch 后边的条件表达式为 ch,所以表达式的值即为字符 A.用字符 A挨次与下边的 case 中的常量般配。与第 1 个 case 后的常量般配,则从后来的语句开始往下履行程序(在执 行过程中不再进行般配。)所以先履行 printf(“%c”,A),屏幕上输出 A;再往下持续履行 printf(“%c”,B),屏幕上输出 B;再持续履行 break ,此 时跳出 switch 语句。5.#include main()int a=1,b=0;scanf(“%d”,&a);switch(a)case 1:b=1;break;case 2:b=2;break;default:b=10;printf(%d,b);若键盘输入 5,运转结果为:10 本题过程:第一用 scanf 函数为变量 a 赋值为 5。履行 switch 语句。switch 后边的条件表达式为 a,所以表达式的值即为 5.用 5 挨次与下边 case 中的常量般配。没有找到般配的常量,所以两个 case 后的语句都不履行。履行 default 后边的语句 b=10;将 10 赋给变量 b。输出变量 b,结果为 10 6.#include main()_ char grade=C;switch(grade)case A:printf(“90-100n ”);case B:printf(“80-90n ”);case C:printf(“70-80n ”);case D:printf(“60-70n ”);break;case E:printf(“0;y-)if(y%3=0)printf(%d ”,-y);运转结果为:852 详赐教材 p53,自增自减符号 本题 表达式 1 被省略,表达式 2(循环条件)为 y0,表达式 3 为 y-初值 y 为 9,循环条件(即表达式 2)y0 建立,进入循环体第 1 次循环 履行 if 语句。9%3=0,if 语句的条件表达式建立,履行 printf(%d”,-y),即 y 先自减 1 变成 8,而后在输出,所以屏幕上输出 8 转向表达式 3,履行 y-,y=y-1=8-1=7。循环条件 y0 建立,进入第 2 次循环 第 2 次循环 履行 if 语句。7%3 不为 0,if 语句的条件表达式不建立,不履行 printf(%d”,-y)转向表达式 3,履行 y-,y=y-1=7-1=6。循环条件 y0 建立,进入第 3 次循环 第 3 次循环 履行 if 语句。6%3=0,if 语句的条件表达式建立,履行 printf(%d”,-y),即 y 先自减 1 变成 5,而后在输出,所以屏幕上输出 5 转向表达式 3,履行 y-,y=y-1=5-1=4。循环条件 y0 建立,进入第 4 次循环 第 4 次循环 履行 if 语句。4%3 不为 0,if 语句的条件表达式不建立,不履行 printf(%d”,-y)转向表达式 3,履行 y-,y=4-1=3。循环条件 y0 建立,进入第 5 次循 环 第 5 次循环 履行 if 语句。3%3=0,if 语句的条件表达式建立,履行 printf(%d”,-y),即 y 先自减 1 变成 2,而后在输出,所以屏幕上输出 2 转向表达式 3,履行 y-,y=y-1=2-1=1。循环条件 y0 建立,进入第 5 次循环 第 6 次循环 履行 if 语句。1%3 不为 0,if 语句的条件表达式不建立,不履行 printf(%d”,-y)转向表达式 3,履行 y-,y=1-1=0。循环条件 y0 不建立,循环结束。8.#include main()int i,sum=0;i=1;do sum=sum+i;i+;while(i=10);printf(“%d”,sum);运转结果为:55 9.#include#define N 4 main()int i;int x1=1,x2=2;printf(n);for(i=1;i=N;i+)printf(%4d%4d,x1,x2);if(i%2=0)printf(n);x1=x1+x2;x2=x2+x1;运转结果为:1235 8 132134 本题 第一为整型变量赋初值 x1=1,x2=2 表达式 1 为 i=1,表达式 2(循环条件)为 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(n);履行 x1=x1+x2=1+2=3;此时 x1 中的值已变成 3 履行 x2=x2+x1=2+3=5。转向表达式 3,履行 i+,i 为 2。循环条件 i=4 建立,进入第 2 次循环 第 2 次循环 履行 printf(%4d%4d,x1,x2);所以屏幕上输出 35 履行 if 语句。2%2=0,if 语句的条件表达式建立,履行 printf(n);换行 履行 x1=x1+x2=3+5=8;此时 x1 中的值已变成 8 履行 x2=x2+x1=5+8=13。转向表达式 3,履行 i+,i 为 3。循环条件 i=4 建立,进入第 3 次循环 第 3 次循环 履行 printf(%4d%4d,x1,x2);所以屏幕上输出 813 履行 if 语句。3%2 不为 0,if 语句的条件表达式不建立,不履行 printf(n);履行 x1=x1+x2=8+13=21;此时 x1 中的值已变成 21 履行 x2=x2+x1=21+13=34。转向表达式 3,履行 i+