首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

选择结构程序典型示例

1、从键盘输入两个整数,求出最大数并输出。

解:

解法1:

⑴编程思路:

①首先定义变量,x,y存储两个整数,max存储求出的最大数。

②用输入语句输入变量x,y的值。

③若x>y,则变量max取x的值,否则取y的值。

④输出求得的变量max的值。

⑵源程序:

main()

注意:

①else之后不能直接写条件,如不能写作else(x

解法2:

⑴编程思路:

同解法1。

⑵源程序:

main()

2、从键盘输入一个实数,求其绝对值并输出。

解:

解法1:

⑴编程思路:

①首先定义变量,x存储该实数,y存储其绝对值。

②用输入语句输入变量x的值。

③若x>0,则变量y取x的值,否则取-x的值。

④输出求得的变量y的值。

⑵源程序:

main()

解法2:

⑴编程思路:

①首先定义变量x,先存储该实数,后存储其绝对值。

②用输入语句输入变量x的值。

③若x

④输出求得的变量x的值。

⑵源程序:

main()

3、从键盘输入x的值,求y的值并输出。

解:

解法1:

采用三条平行的if语句分别求值,每条if语句对应于一种情况(一个分支)。

⑴编程思路:

①首先定义变量x, y。

②用输入语句输入变量x的值。

③若x>0,则变量y取1;若x=0,则变量y取0;若x

④输出求得的变量y的值。

⑵源程序:

main()

注意:

①if(x==0)不能写作if(x=0),因为后者表示赋值,x的值总为,即条件总为假。

②在一组平行的if语句中,不管前边的if语句条件是真是假,后边的if语句总要执行。

解法2:

采用嵌套的if语句分别求值,共分为三种情况(三个分支)。

⑴编程思路:

①首先定义变量x, y。

②用输入语句输入变量x的值。

③若x>0,则变量y取1;否则若x=0,则变量y取0;否则若x

④输出求得的变量y的值。

⑵源程序:

main()

注意:

①在两个嵌套的if语句中,只有前边的if语句条件是假(或者是真),后边的if语句才会执行。

4、从键盘输入三个整数,求出最大数并输出。

解:

解法1:

⑴编程思路:

①首先定义变量,a,b,c存储三个整数,max存储求出的最大数。

②用输入语句输入变量a,b,c的值。

③先求出前两个数中的最大数,并存入变量max中。若a>b,则max取a的值,否则取b的值。

④再用第三个数与前两个数中的最大数比较,求出三个数中的最大数,并存入变量max中。若c>max,则max取c的值,否则max保持不变。

⑤输出求得的变量max的值。

⑵源程序:

main()

解法2:

利用条件运算符求出三个数中的最大数。

⑴编程思路:

同解法1。

⑵源程序:

main()

解法3:

⑴编程思路:

①首先定义变量,a,b,c存储三个整数,max存储求出的最大数。

②用输入语句输入变量a,b,c的值。

③若a>b同时a>c,则max取a的值。若b>a同时b>c,则max取b的值。若c>a同时c>b,则max取c的值。

④输出求得的变量max的值。

⑵源程序:

main()

注意:

①因为该程序中的三个条件是互相排斥的,即只有第一个条件为假时,才需要判断第二个条件;只有前两个条件均为假时,才需要判断第三个条件,故可以用三个嵌套的if语句进行判断。

②同时因为三个条件是相互独立、互不依赖的,故也可以用三个平行的if语句进行判断。

5、从键盘输入两个数,然后按升序输出。

解:

解法1:

⑴编程思路:

①首先定义变量,a,b存储两个数,t作为交换a,b的中间变量。

②用输入语句输入变量a,b的值。

③若a>b,则将变量a,b的值相交换,以保证a的值较小,b的值较大。

④按照先a后b顺序输出两个变量的值。

⑵源程序:

main()

printf("%f,%f\n",a,b);

}

注意:

①用于交换变量a,b值的三条赋值语句,必须括起来作为一条复合语句。即当条件为真时,三条赋值语句都执行;当条件为假时,三条赋值语句都不执行。

解法2:

⑴编程思路:

①首先定义变量a,b,用于存储两个数。

②用输入语句输入变量a,b的值。

③若a

⑵源程序:

main()

6、从键盘输入三个整数,按升序排序后输出。

解:

⑴编程思路:

①首先定义变量,a,b,c存储两个数,t作为交换a,b,c的中间变量。

②用输入语句输入变量a,b,c的值。

③若a>b,则将变量a,b的值相交换,以保证a的值较小,b的值较大。

④若a>c,则将变量a,c的值相交换,以保证a的值较小,c的值较大。此时变量a的值最小。

⑤若b>c,则将变量b,c的值相交换,以保证b的值较小,c的值较大。此时变量a的值最小,变量b的值次之,变量c的值最大。即a,b,c已按升序排序。

⑥输出变量a,b,c的值。

⑵源程序:

main()

/*三条赋值语句必须括起来*/

if(a>c) /*三条if语句相互平行*/

printf("a=%d,b=%d,c=%d\n",a,b,c); }

注意:

①用于交换两个变量值的三条赋值语句,必须括起来作为一条复合语句。即当条件为真时,三条赋值语句都执行;当条件为假时,三条赋值语句都不执行。

②因为后面的两个判断不应依赖于其前边判断,故必须用三个平行的if语句进行判断。

6、从键盘输入一个字符,若为小写字母,则转化为相应的大写字母,否则保持不变。

解:

解法1:

⑴编程思路:

①首先定义变量,ch1用于存储输入的字符,ch2用于存储转化之后的字符。

②用输入语句输入一个字符并存入变量ch1。

③若ch1>='a'&&ch1

④最后输出ch2的值。

⑵源程序:

#include

main()

注意:

①if(ch1>='a'&&ch1

解法2:

⑴编程思路:

①首先定义变量ch,先存储输入的字符,后存储转化之后的字符。

②用输入语句输入一个字符并存入变量ch。

③若ch>='a'&&ch

④最后输出ch的值。

⑵源程序:

#include

main()

7、从键盘输入一个字符,若为小写字母,则转化为相应的大写字母;若为大写字母,则转化为相应的小写字母,否则保持不变。

解:

解法1:

⑴编程思路:

①首先定义变量,ch1用于存储输入的字符,ch2用于存储转化之后的字符。

②用输入语句输入一个字符并存入变量ch1。

③若ch1>='a'&&ch1='A'&&ch1

④最后输出ch2的值。

⑵源程序:

#include

main()

注意:

①因为只有ch1不是小写字母时,才需要判断ch1是不是大写字母,故第二个if语句应嵌套在第一个if语句的else子句中。

②若第二个if语句与第一个if语句平行(即第二个if语句之前无else),则第二个if语句中的else仅否定第二个条件ch1>='A'&&ch1

解法2:

⑴编程思路:

①首先定义变量ch,先存储输入的字符,后存储转化之后的字符。

②用输入语句输入一个字符并存入变量ch。

③若ch>='a'&&ch='A'&&ch

④最后输出ch的值。

⑵源程序:

#include

main()

注意:

①因为只有ch不是小写字母时,才需要判断ch是不是大写字母,故第二个if语句应嵌套在第一个if语句的else子句中。

②若第二个if语句与第一个if语句平行(即第二个if语句之前无else),则当输入一个小写字母(如’f’)时,先执行第一个if语句,因ch1>='a'&&ch1='A'&&ch1

8、从键盘输入一个字符,若为小写字母,则转化为相应的大写字母;若为大写字母,则转化为相应的小写字母;否则转化为ASCII码表中的下一个字符。

解:

解法1:

⑴编程思路:

①首先定义变量,ch1用于存储输入的字符,ch2用于存储转化之后的字符。

②用输入语句输入一个字符并存入变量ch1。

③若ch1>='a'&&ch1='A'&&ch1

④最后输出ch2的值。

⑵源程序:

#include

main()

注意:

①第二个if语句应嵌套在第一个if语句的else子句中,而不能与第一个if语句平行。

解法2:

⑴编程思路:

①首先定义变量ch,先存储输入的字符,后存储转化之后的字符。

②用输入语句输入一个字符并存入变量ch。

③若ch>='a'&&ch='A'&&ch

④最后输出ch的值。

⑵源程序:

#include

main()

注意:

①第二个if语句应嵌套在第一个if语句的else子句中,而不能与第一个if语句平行。

9、从键盘输入两个整数及一个运算符,分别求出其和差积商并输出。

(其中运算符在两个整数之间输入)

解法1:

⑴编程思路:

①首先定义变量,a,b存储两个整数,s存储两个整数的运算结果,ch存储运算符。

②用输入语句输入变量a,b,ch的值。

③若ch为加号,则s=a+b;若ch为减号,则s=a-b;若ch为乘号,则s=a*b;若ch为除号,则s=a/b。

④最后输出变量s的值。

⑵源程序:

main()

注意:

①因为四个判断相互排斥、互不依赖,故既可以采用嵌套的if语句进行判断,也可以采用平行的if语句进行判断。

解法2:

⑴编程思路:

同解法1。

⑵源程序:

main()

解法3:

⑴编程思路:

同解法1。

⑵源程序:

main()

printf("s=%d\n",s);

}

10、从键盘输入一个百分制分数,将其转化为等级分输出。

解法1:

利用嵌套的if语句进行判断选择。

⑴编程思路:

①首先定义变量,score存储输入的百分制分数,ch存储转化后的等级分。

②用输入语句输入变量score的值。

③若score=90,则ch赋值为'A';否则,若score>=80,则ch赋值为'B';否则,若score>=70,则ch赋值为'C';否则,若score>=60,则ch赋值为'D';否则,若score>=0,则ch赋值为'E'。

④最后输出变量ch的值。

⑵源程序:

main()

注意:

①因为后面的判断依赖于前面的判断,故必须采用嵌套的if语句进行判断。

解法2:

利用平行的if语句进行判断选择。

⑴编程思路:

①首先定义变量,score存储输入的百分制分数,ch存储转化后的等级分。

②用输入语句输入变量score的值。

③若score=90,则ch赋值为'A';若score=80,则ch赋值为'B';若score=70,则ch赋值为'C';否则,若score=60,则ch赋值为'D';score=0则ch赋值为'E'。

④最后输出变量ch的值。

⑵源程序:

main()

注意:

①因为后面的判断不依赖于前面的判断,故可以采用平行的if语句进行判断。同时由于后面的判断条件与前面的判断条件相互排斥,故也可以采用嵌套的if语句进行判断。

解法3:

利用switch语句进行判断选择。

⑴编程思路:

①首先定义变量,整型变量g存储输入的百分制分数,ch存储转化后的等级分。

②用输入语句输入变量g的值。

③通过g除以10(整除),将一个百分制分数转化为一个到10之间的整数。而且同一个分数段将转化为同一个整数,如90到99均转化为9。

④利用switch语句根据表达式g/10的值,跳转到相应的分支执行,求出变量ch的值。

⑤最后输出变量ch的值。

⑵源程序:

main()

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

}

注意:

①当g=100时,跳转到case 10。但因此处无break语句,故继续向下执行case 9之后的语句。

解法4:

利用switch语句进行判断选择。

⑴编程思路:

①首先定义变量,实型变量g存储输入的百分制分数,ch存储转化后的等级分。

②用输入语句输入变量g的值。

③通过将实型变量g强制取整再除以10(整除),将一个百分制分数,转化为一个到10之间的整数。而且同一个分数段将转化为同一个整数,如90到99均转化为9。

④利用switch语句根据表达式(int)g/10的值,跳转到相应的分支执行,求出变量ch的值。

⑤最后输出变量ch的值。

⑵源程序:

main()

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

}

注意:

①因为此程序中g为实型变量,故必须将g强制取整之后再除以10,以保证相除的商为到10之间的整数。

11、已知方程ax2+bx+c=0的系数值(设a≠),求方程的根。

解:

⑴编程思路:

①首先定义变量,其中a,b,c存储方程的三个系数值,d,p,q存储中间结果,x1,x2存储方程的两个根。

②用输入语句输入变量a,b,c的值。

③若b2-4ac>=0,则根据求根公式求得两个实根x1,x2的值,并输出x1,x2的值。否则,分别求得两个共轭复根的实部和虚部,并输出两个共轭复根。

⑵源程序:

#include

main()

else

}

注意:

①当b2-4ac2-4ac求绝对值(取负),然后再求平方根。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180420G0WDAT00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券