当前位置:文档之家› 顺序结构选择结构和循环结构的程序设计典型例题分析与解答

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

顺序结构、选择结构和循环结构的程序设计典型例题分析与解答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/SaveF27 下列各种选择结构的问题中,最适合用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<0y=|0 x=0x>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次的标准次数型循环结构。

【答案】for11执行下列程序段后的输出是()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*x)=0+(0* 0)=0;再判断控制循环的条件“x”,结果为0,条件不成立,退出循环。

所以循环仅执行1次。

【答案】 113 下列程序段的输出结果是()for( i=0; i<1;i+=l)for( j= 2;j> 0;j--)printf("*");① **②***③****④******【分析】注意每次内层循环仅输出1个“*”,所以只要分析出二重循环的总次数即可。

首先分析外层循环的次数:控制变量i的初值为0;终值为0(i<1相当于i<=0);步长为1(i+=l相当于 i= i+ l),所以外层循环次数为1。

再分析内层循环次数:控制变量 j的初值为2;终值为1(j>0相当于j>=1);步长为-1(j--),所以内层循环次数为人内层循环体一共执行的次数等于外层循环次数乘以内层循环次数,共计为l*2=2。

【答案】①14 执行下列程序段后的输出是________________。

x=0;while(x<3)for(;x< 4;x++){printf(”%1d”,x++);if( x< 3) continue;else break;printf(”%1d”,x);}【分析】我们用执行程序并记录各变量值的方法来获得程序的输出结果,记录如下:x=0;第一次执while循环,条件x<3成立,执行while的循环体(即for循环);第一次执行for循环,条件x<4成立,执行for的循环体;输出x的值问位整数,其值为0),然后x++,x值为1;if-else的条件 x< 3成立,执订 continue,继续 for循环,执行 x++, x为 2;第二次执行拉循环,条件x<4成立,执行比r的循环体;输出x的值(1位整数,其值为对,然后x++,x值为3;if-else的条件x<3不成立,执行break,退出for循环,返回while循环;第二次执行while循环,条件x<3不成立,退出while循环,结束程序运行。

所以,最终输出结果是两个一位整数0和2。

【答案】 0215 与下列程序段的基本功能不相同的是_____________x=0;LOOP:x++;if(x< 10) gotO LOOP;①for(x=0;x<10;x++);②x=10;③do x=0;④x=0;while (x++<10);while(x++<9);【分析】先分析给出的程序段,很明显这段程序是用 goto语句构成的循环,控制循环的条件是“x<1O”,循环要做的工作是“x++”;当 x值为 9时,进行循环,通过“x++”,使 x值为 10后,条件“x<10”将木再成立,退出循环,则此时 x的值为 10。

相关主题