02选择结构程序设计文档格式.docx
《02选择结构程序设计文档格式.docx》由会员分享,可在线阅读,更多相关《02选择结构程序设计文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
printf("
max=%d\n"
max);
}
注意:
①else之后不能直接写条件,如不能写作else(x<
=y),但可以写作elseif(x<
=y)。
解法2:
同解法1。
max=x>
y?
x:
y;
/*使用条件表达式判断求值*/
2、从键盘输入一个实数,求其绝对值并输出。
①首先定义变量,x存储该实数,y存储其绝对值。
②用输入语句输入变量x的值。
0,则变量y取x的值,否则取-x的值。
④输出求得的变量y的值。
{floatx,y;
%f"
x);
=0)
y=x;
else/*否定x>
=0,即x<
0*/
y=-x;
y=%f\n"
y);
①首先定义变量x,先存储该实数,后存储其绝对值。
③若x<
0,则将变量x取负之后再存入x;
否则x保持不变。
④输出求得的变量x的值。
{floatx;
if(x<
0)
x=-x;
x);
3、从键盘输入x的值,求y的值并输出。
采用三条平行的if语句分别求值,每条if语句对应于一种情况(一个分支)。
①首先定义变量x,y。
0,则变量y取1;
若x=0,则变量y取0;
若x<
0,则变量y取-1。
y=1;
if(x==0)/*等号不能写作=*/
y=0;
y=-1;
①if(x==0)不能写作if(x=0),因为后者表示赋值,x的值总为0,即条件总为假。
②在一组平行的if语句中,不管前边的if语句条件是真是假,后边的if语句总要执行。
采用嵌套的if语句分别求值,共分为三种情况(三个分支)。
否则若x=0,则变量y取0;
否则若x<
0)/*若满足x>
elseif(x==0)/*否定x>
0,同时满足x=0*/
else/*再否定x=0,必然是x<
①在两个嵌套的if语句中,只有前边的if语句条件是假(或者是真),后边的if语句才会执行。
4、从键盘输入三个整数,求出最大数并输出。
①首先定义变量,a,b,c存储三个整数,max存储求出的最大数。
②用输入语句输入变量a,b,c的值。
③先求出前两个数中的最大数,并存入变量max中。
若a>
b,则max取a的值,否则取b的值。
④再用第三个数与前两个数中的最大数比较,求出三个数中的最大数,并存入变量max中。
若c>
max,则max取c的值,否则max保持不变。
⑤输出求得的变量max的值。
{inta,b,c,max;
%d%d%d"
a,&
b,&
c);
if(a>
b)
max=a;
max=b;
if(c>
max)/*该if语句与第一个if语句平行*/
max=c;
利用条件运算符求出三个数中的最大数。
同解法1。
max=a>
b?
a:
b;
max=c>
max?
c:
max;
解法3:
③若a>
b同时a>
c,则max取a的值。
若b>
a同时b>
c,则max取b的值。
a同时c>
b,则max取c的值。
b&
&
a>
c)
if(b>
a&
b>
c)/*或elseif(b>
c)*/
c>
b)/*或elseif(c>
b)*/
①因为该程序中的三个条件是互相排斥的,即只有第一个条件为假时,才需要判断第二个条件;
只有前两个条件均为假时,才需要判断第三个条件,故可以用三个嵌套的if语句进行判断。
②同时因为三个条件是相互独立、互不依赖的,故也可以用三个平行的if语句进行判断。
5、从键盘输入两个数,然后按升序输出。
①首先定义变量,a,b存储两个数,t作为交换a,b的中间变量。
②用输入语句输入变量a,b的值。
b,则将变量a,b的值相交换,以保证a的值较小,b的值较大。
④按照先a后b顺序输出两个变量的值。
{floata,b,t;
%f%f"
b);
{t=a;
a=b;
b=t;
%f,%f\n"
a,b);
①用于交换变量a,b值的三条赋值语句,必须括起来作为一条复合语句。
即当条件为真时,三条赋值语句都执行;
当条件为假时,三条赋值语句都不执行。
①首先定义变量a,b,用于存储两个数。
③若a<
b,按照先a后b顺序输出两个变量的值;
否则按照先b后a顺序输出两个变量的值。
{floata,b;
if(a<
printf("
b,a);
6、从键盘输入三个整数,按升序排序后输出。
①首先定义变量,a,b,c存储两个数,t作为交换a,b,c的中间变量。
④若a>
c,则将变量a,c的值相交换,以保证a的值较小,c的值较大。
此时变量a的值最小。
⑤若b>
c,则将变量b,c的值相交换,以保证b的值较小,c的值较大。
此时变量a的值最小,变量b的值次之,变量c的值最大。
即a,b,c已按升序排序。
⑥输出变量a,b,c的值。
{inta,b,c,t;
scanf("
if(a>
{t=a;
}/*三条赋值语句必须括起来*/
c)/*三条if语句相互平行*/
a=c;
c=t;
if(b>
{t=b;
b=c;
a=%d,b=%d,c=%d\n"
a,b,c);
}
①用于交换两个变量值的三条赋值语句,必须括起来作为一条复合语句。
②因为后面的两个判断不应依赖于其前边判断,故必须用三个平行的if语句进行判断。
6、从键盘输入一个字符,若为小写字母,则转化为相应的大写字母,否则保持不变。
①首先定义变量,ch1用于存储输入的字符,ch2用于存储转化之后的字符。
②用输入语句输入一个字符并存入变量ch1。
③若ch1>
='
a'
ch1<
z'
(即ch1的值为小写字母),则将ch1-32(即转化为相应的大写字母)赋给ch2;
否则直接将ch1赋给ch2。
④最后输出ch2的值。
#include<
stdio.h>
{charch1,ch2;
ch1=getchar();
/*或scanf("
%c"
ch1);
*/
if(ch1>
)/*不能写作if('
<
=ch1<
)*/
ch2=ch1-32;
ch2=ch1;
putchar(ch2);
/*或printf("
ch2=%c\n"
ch2);
①if(ch1>
)不能写作if('
)。
①首先定义变量ch,先存储输入的字符,后存储转化之后的字符。
②用输入语句输入一个字符并存入变量ch。
③若ch>
ch<
(即ch的值为小写字母),则将ch-32(即转化为相应的大写字母)再赋给ch;
否则ch保持不变。
④最后输出ch的值。
{charch;
ch=getchar();
ch);
if(ch>
=ch<
ch=ch-32;
putchar(ch);
ch=%c\n"
ch);
7、从键盘输入一个字符,若为小写字母,则转化为相应的大写字母;
若为大写字母,则转化为相应的小写字母,否则保持不变。
否则,若ch1>
A'
Z'
(即ch1的值为大写字母),则将ch1+32(即转化为相应的小写字母)赋给ch2;
)
else
)/*此处else不能缺省*/
ch2=ch1+32;
①因为只有ch1不是小写字母时,才需要判断ch1是不是大写字母,故第二个if语句应嵌套在第一个if语句的else子句中。
②若第二个if语句与第一个if语句平行(即第二个if语句之前无else),则第二个if语句中的else仅否定第二个条件ch1>
,即只要不是大写字母,ch2=ch1;
都要执行。
显然与题目要求不符。
否则,若ch>
(即ch的值为大写字母),则将ch+32(即转化为相应的小写字母)再赋给ch;
elseif(ch>
ch=ch+32;
①因为只有ch不是小写字母时,才需要判断ch是不是大写字母,故第二个if语句应嵌套在第一个if语句的else子句中。
②若第二个if语句与第一个if语句平行(即第二个if语句之前无else),则当输入一个小写字母(如’f’)时,先执行第一个if语句,因ch1>
为真,故转化为相应的大写字母(如’F’);
接着执行第二个if语句,又因此时ch1>
为真,故再转化为相应的小写字母(如’f’)。
8、从键盘输入一个字符,若为小写字母,则转化为相应的大写字母;
若为大写字母,则转化为相应的小写字母;
否则转化为ASCII码表中的下一个字符。
否则将ch1+1(即转化为ASCII码表中的下一个字符)赋给ch2。
else
ch2=ch1+1;
①第二个if语句应嵌套在第一个if语句的else子句中,而不能与第一个if语句平行。
否则将ch+1(即转化为ASCII码表中的下一个字符)再赋给ch。
ch=ch+1;
9、从键盘输入两个整数及一个运算符,分别求出其和差积商并输出。
(其中运算符在两个整数之间输入)
①首先定义变量,a,b存储两个整数,s存储两个整数的运算结果,ch存储运算符。
②用输入语句输入变量a,b,ch的值。
③若ch为加号,则s=a+b;
若ch为减号,则s=a-b;
若ch为乘号,则s=a*b;
若ch为除号,则s=a/b。
④最后输出变量s的值。
{inta,b,s;
charch;
%d%c%d"
ch,&
/*运算符在两个整数之间输入*/
if(ch=='
+'
)s=a+b;
/*单引号不可少*/
elseif(ch=='
-'
)s=a-b;
*'
)s=a*b;
/'
)s=a/b;
s=%d\n"
s);
①因为四个判断相互排斥、互不依赖,故既可以采用嵌套的if语句进行判断,也可以采用平行的if语句进行判断。
switch(ch)
{case'
:
s=a+b;
break;
/*case之后要有空格,单引号不可少*/
case'
s=a-b;
s=a*b;
s=a/b;
10、从键盘输入一个百分制分数,将其转化为等级分输出。
利用嵌套的if语句进行判断选择。
①首先定义变量,score存储输入的百分制分数,ch存储转化后的等级分。
②用输入语句输入变量score的值。
③若score<
=100同时score>
=90,则ch赋值为'
;
否则,若score>
=80,则ch赋值为'
B'
=70,则ch赋值为'
C'
=60,则ch赋值为'
D'
=0,则ch赋值为'
E'
。
④最后输出变量ch的值。
{intscore;
%d"
score);
if(score<
=100&
score>
=90)
ch='
;
elseif(score>
=80)/*此处else不能缺省*/
=70)/*此处else不能缺省*/
=60)/*此处else不能缺省*/
=0)/*此处else不能缺省*/
Gradeis%c\n"
①因为后面的判断依赖于前面的判断,故必须采用嵌套的if语句进行判断。
利用平行的if语句进行判断选择。
若score<
90同时score>
80同时score>
否则,若score<
70同时score>
score<
60同时score>
=0则ch赋值为'
90&
=80)
80&
=70)
70&
=60)
60&
①因为后面的判断不依赖于前面的判断,故可以采用平行的if语句进行判断。
同时由于后面的判断条件与前面的判断条件相互排斥,故也可以采用嵌套的if语句进行判断。
利用switch语句进行判断选择。
①首先定义变量,整型变量g存储输入的百分制分数,ch存储转化后的等级分。
②用输入语句输入变量g的值。
③通过g除以10(整除),将一个百分制分数转化为一个0到10之间的整数。
而且同一个分数段将转化为同一个整数,如90到99均转化为9。
④利用switch语句根据表达式g/10的值,跳转到相应的分支执行,求出变量ch的值。
⑤最后输出变量ch的值。
{intg;
/*g为整型变量*/
g);
switch(g/10)
{case10:
/*当g=100时,转到此处*/
case9:
/*当g>
=90且g<
100时,转到此处*/
case8:
=80且g<
90时,转到此处*/
case7:
=70且g<
80时,转到此处*/
case6:
/*当g