顺序结构选择结构和循环结构的程序设计典型例题分析与解答

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

顺序结构、选择结构和循环结构的程序设计典型例题分析与解答

1 在三种选择结构中,能用2个条件,控制从3个操作中选择一个操作执行的选择结构是______选择结构

【分析】能用1个条件,控制某个操作做或不做的选择结构是单分支结构;能用1个条件,控制从2个操作中选择一个操作执行的选择结构是双分支结构;能用n(n>l)个条件,控制从n+ l个操作中选择一个操作执行的选择结构是多分支结构。【答案】多分支

2 在三种循环结构中,先执行循环操作内容(即循环体),后判断控制循环条件的循环结构是______循环结构。

【分析】当型循环结构是先判断控制循环的条件,条件成立,执行循环体;条件不成立,则退出循环体。次数型循环结构也是先判断是否达到循环次数,没有达到循环次数,执行循环体;达到循环次数的,退出循环。只有直到型循环结构才是先执行循环体,然后再判断控制循环的条件,如果条件成立,进行循环;条件不成立,退出循环。

【答案】直到型

3 使用“getchar( )”函数时,程序的开头必须写一条包含命令为____________。

【分析】凡是使用系统函数的程序,都要在程序的开头写一条包含命令,包含命令中的“头函数.h”是一个文件,其中有关于该系统函数的定义。系统函数“getchar( )”是在名为“stdio.h(标准输入输出函数)”的头函数文件中定义的。【答案】#include"stdio.h"或#include<stdio.h>

4 执行输入语句“scanf("x=%c,y=%d",&x,&y);”,要使字符型变量X的值为'A'、整型变量y的值为12,则从键盘上正确的输入是( )

①'A'/②A/③x=A/ ④x=A,y=12/

12/ 12/ y=12/ 说明:备选答案中的"/"表示回车换行键

【分析】输入语句的格式控制符串中的“x=”、“,”、“y=”都是非格式控制符,

在输入时必须原样位置输人,所以只有备选答案④才符合这个要求。【答案】④

5 设有下列程序段,则执行该程序段后的输出是( )

int i=012;

float f=1.234E-2;

printf("i=%-5df=%5.3f",i,f);

...

①i=__012f=1.234 ②i=10___f=0.012

③10___O.012 ④___100.012

注:答案中的_代表一个空格。

【分析】输出语句的格式控制符串中的“i=”、“f=”都是非格式控制符,在输出时必须原样,原位置输出,所以只有备选答案①和②才符合这个要求;格式控制符“%-5d”的格式控制是数据左对齐、宽度为5的整型数据,备选答案①中的数据是右对齐的;此外,该答案中的实数“1.234E-2”应该代表“0.01234”,而不是“1.234”。只有备选答案②符合题意。【答案】②

6 在Turbo C的主屏幕中,将当前编辑的源程序以原名存盘,可以选用___________菜单项,也可以直热键________。

【分析】如果选用“File/Save”菜单项,或者使用热键(f12),当前编辑的源程序将以原来的文件名存盘;如果选用“File /Write to”,当前编辑的源程序将以新的文件名存盘。

【答案】File/Save

F2

7 下列各种选择结构的问题中,最适合用if-else语句来解决的是( )

①控制单个操作做或不做的问题

②控制两个操作中选取一个操作执行的问题

③控制三个操作中选取一个操作执行的问题

④控制10个操作中选取一个操作执行的问题

【分析】if-else语句是专门解决“双分支结构”的,而“双分支结构”的问题就是用单个条件控制从两个操作中选取一个操作来执行的问题。

【答案】②

8 下列程序是输入一个小写字母,转换成对应大写字母的后一个字母输出。例如:'a'将转换成’B’、…、‘y’将转换成’Z’,其中的’Z’将转换成’A’。请填写程序中所缺少的语句。

main()

{char ch ;

scanf(”%c”,&ch〕;

ch=ch- 32+1;

___________________;

printf("%c\n",ch);

} 【分析】分析程序库中的“ch=ch- 32+ 1;”语句,可知是将字符型变量 ch中的小写字母转换成对应的大写字母(- 32)的后一个字母(+ l)。如果ch中的字母是' a'、' b'、··,'y',转换结果都不会出错,但是,如果 ch中的字母是'Z',则-32后是大写字母'Z',再+l后将不是大写字母了。为了使其转换成'A',需要用一个单分支结构来实现:如果ch的值等于'Z'+ l,则硬性将 ch的值改成'A'。完成这个任务的语句是一条单分支语句,正是所缺少的语句。

【答案】 if (ch=='Z'+l) h='A';

9不能正确计算下列分段函数的程序段是_________

|-1 x<0

y=|0 x=0

x>0

① switch(x< 0)② if(x> 0)

{case1:y=-1;break; y=1;

case 0:switch(x==0)else

{casel:y=0;break;if(x==0)

case 0: y= l;y=0

}

else

} &ny=-l

③ y= l;④ y= l;

if(x==0)if(x<0)

y=0; y =-l;

else else y=- l; if(x== 0)

y=0;

【分析】先来分析备选答案①:表达式“x<0”的值只有两种可能性,成立值为1、不成立值为on如果“x<0”的值为 1(即 x< 0),则执行“easel:”后的语句“y=-l”后,退出 switch语句,符合分段函数要求。如果“x<0”的值为0(即x>=0),则执行“case 0:”后的switch语句。该switch语句的表达式是“x==0”,结果也有两种:成立为1、不成立为0.如果“x==0”的值为1(即x=0),则执行“case l:”后的语句“y=0”后,退出 switch语句,符合分段函数要求。如果“x==0”的值为0(即x>0),则执行“case 0:”后的语句“y=1”,也符合分段函数要求。再分析备选答案②:这是标准的用嵌套双分支结构来实现三分支的分段函数,结果显然是能求解分段函数的。分析备选答案③:双分支语句的条件是“x==0”,条件成立时,y值为0,符合分段函数的要求,条件不成立时(包含x>0和x<0两种情况),结果y值为-l,显然不符合分段函数的要求,所以本题要选该答案。至于备选答案④,是能正确计算分段函数的,首先置y为1;接着用双分支结构处理“x<0”和“x>=0”的两种情况:前者使得y值为一l;后者再执行一个单分支结构,如果“x==0”则使y值为0,否则不改变y值,保持y的原值1,符合分段函数的要求。

【答案】③

10 三种循环语句都能解决循环次数已经确定的次数型循环,其中__________循环语句最适合。

【分析】当“for(表达式 1;表达式 2;表达式 3)语句;”中的表达式1为:整型变量 k=l;表达式

2为:整型变量 k<= n;表达式 3为:整型变量 k++;则这个 for循环就是次数为n次的标准次数型循环结构。

【答案】for

11执行下列程序段后的输出是()

x=l;

while(x<=3) x++,y=x+++x;

printf("%d,%d",x,y);

① 6,10 ②5,8 ③4,6 ④3,4

【分析】我们可以使用逐步记录运行结果的方法来获得输出结果,记录如下:

x=1;

进入循环,条件满足执行循环体:计算x+十得x为2,计算y=x+++x,得y为4、x为3;

继续循环,条件满足执行循环体:计算x+十得x为4,计算y=x+++x,得y为8、x为5;

继续循环,条件不满足退出循环;

输出x和y的值为5,8。

【答案】②

12 执行下列程序段,其中的do-while循环一共执行_次。

static int x;

do x+=x*x;

while (x);

【分析】对静态型变量,不赋初值也有值,对整型变量,其值为 0。执行循环语句 do-while 的循环体,x+=x* x是x=x+(x*

相关文档
最新文档