实验四选择结构程序设计_第1页
实验四选择结构程序设计_第2页
实验四选择结构程序设计_第3页
实验四选择结构程序设计_第4页
实验四选择结构程序设计_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验四选择结构程序设计

一、实验目的.掌握关系运算符和逻辑运算符;

1.学会正确书写关系表达式和逻辑表达式和条件运算符;.熟练掌握if语句

和switch语句。

二、实验学时数4学时

三、实验步骤(一)阅读程序

1.输入并运行以下程序,观察运行结果。

ftinclude<stdio.h>intmainO

{inta,b,c;a=10;b=60;c=30;

if(a>b)a=b;b=c;

c二a;printf(za=%d,b=%d,c=%d\nz,a,b,c);

return0;

程序运行结果如下:

cde

这里假设字母表首尾两个字母是相连的。假设输入字母Z,那么程序输出YZAo

输入格式:一个字母,可能为大写,也可能为小写。

输出格式:连续3个字母,大小写不变。

1#include<stdio.h>

tesKKMXW.C未命名2

1#include<stdio.h>■E:,C谙验四6窗十”e30OMJ6.exe

2intmain()|hghi

3早

{4Processexitedafter4.013secondswithrctumvalue0清按任意

charcl>c2,c3;键继续=-7■

scanf(M%cM,&cl)s

6lf(cl>=65&ck=90)(

7S

c2=(cl-'A*-l)%26+'A-;

8

c3=(cl-A+l)%26+'A-;

9

}else{

IQ-

11c2=(cl-'a'-l)%26+'a';

120c3=(cl-a'+l)%26+*a-;

13}

14printf("%c%c%c"jc2,cl,c3);

15return0;

16

17

⑪编译日志”调试.报索结果笆关闭,■译结果…

-wWsoV$:o

Hh»输出文件名:E:9语言’实验四程序设计Uest00008,exe端田大小:12«,1015625KiB

--译时间:0.168

2.找零钱。为顾客找零钱时,希望选用的纸币张数最少。例如73元,希望零钱的

面值为五十元1张,二十元1张,一元3张。设零钱面值有五十元、二十元、十元、

五元和一元,请编写程序,用户输入100以下的整数,计算找给顾客的各面值的纸币

张数,数据间以空格隔开。

输入:大于等于0小于100的整数。

输出:5个整数,数据间用一个英文空格分隔。

输出样例:11。03

输入样例:73

输出样例:1■。3

件ctest00007.cppteslOOM.ctest0007.ctest0008.c7allOO3

#include<stdio.h>Processexitedafter22.72secondsw:threturnvalue0谙按任意饿继

续...■

intmain()

H

Intx,5

constintA=2

constintBH=1

constint

5•

constint•

Ia=(x-x%A)/A:lb=(x%A-(x%A)%B)/B;

constint•

c=((x%A)%B-((x%A)%B)%C)/c;d=(((x%A)%B)%C-(((x%A)%B)%C)%D)/D;

e=x-a*A-b*B_c*C-d*D;Iif(x>=0&&x<100)I

printf("%d%d%dW%d",a.b,jd.e)?

return0;

日志v调试。攫索结果的关闭E结果一.

3,判断一个三位数是否为“水仙花数”。所谓“水仙花数”是指一个三位数,

其各位数字的立方各等于该数本身。例如:153是一个水仙花数,因为153二厂3+5-

3+3八3

输入:一个三位的正整数。

输出:是或不是。

#include<stdio.h>intmain()

早{

HE:C语古'实验四程序设计加st087.exe

inta,b>c,A»B;

5

scanf(1>%d>\&A);

a=A/100;

Processexitedafter12.79secondswithreturnvalue0弟接任意

b=(A%100)/10;

c=(A%100)%10;

B=(a*a*a)+(b*b*b)+(c*c*c);

if(A==B)printf("是");

else

printf("不是”);

return0;

4.百分制转换为等级制。从键盘输入一个百分制成绩,要求输出其对应的等

级。给出一个输入某学生的成绩(成绩为100分制,可以为89.5,如果输入的

成绩不在0T00之间,请给出出错提示°),经处理后给出学生的等级,等级分

类如下:

90分以上(包括90):A80至90分(包括80):B

70至80分(包括70):C60至70分(包括60):D

60分以下:E

#include<stdio.h>intmain()

floatscore:chargrade:

printf。'请输入学生的成

绩:");scanf

,&score);

whiIe(score>100||score<0)

m{printf("\n输入有误.请重输

scanf("%f'.&score);

*)

switch((int)(score/10))

v.

case10:case

9:grades'A":break;case

8:grades'B':break:case

7:grades'C";break)case

6:grades♦D';break;case

5:case4:case3:case

2:case1:

case0:grade='E':

洋日志•谒试曲双索结果间关闭

I译结果,一

错漫:。警告;o

<XX>9.ctestOOOOIO.c

#include<stdio.h>intmain()

floatscore;chargrade;

printfC请输入学生的成

■播EC(:语验四期窗十依stooooio.exe

绩:");scanf

("%f",,&score):

while(score>100||score<0)

m{printf("\n输入有误。请重输

scanf("%f'.Ascore):Pn)cessexitedafter4.039secondswithrelurnvalue0请按任意

■)缎继修二.■

switch((int)(score/10))

case10:case

9-grades'A":break:case

8:Rrades'B":break;case

7:grades'C,;break)case

6:grades♦D':break;case

5:case4:case3:case

2:case1:

case0:grade='E":

漫日志•谒试◎搜索储果间关闭

I译结果.一

培漫:。瞥告:。

5.求一元二次方程a/+b%+c=0的解。

根据代数知识,应该有以下几种可能:

(I)a=0,不是二次方程,而是一次方程.按一次方程求解°

(2)b2-4ac=0,有两个相等的实根;b2-4ac>0,有两个不等的实根;

(3)b2-4ac<0,有两个共貌复根。

40

6

7

8

9

test00005.ctest00007.cpptestOOO6.ctest0007.c-E:\C语言校险四程序设计MestOOO1O.exe

"include<stdio.h>245

2-include<«ath.h>intnain()

3PlT000000+1.224745i

40floata,b,c,d,p,q;

5floatxl,x2;

6scanf("Xf%fXf-,Sa,gb,8c);

7d=b*b-4*a*c)Processexitedafter15.29secondswithreturnvalue0请按

8if(a3>e)任意键继续...

9(xi«(-c),b;

白x2«xi;

12printf(,'xl8X.2f,nx2-%.2f,xlx2);

)

14elseH(d>e)

15A(xl3(-t4sqrt(d))/(2a);

16x2=(-b-sqrt(d))/(2*a);

17printf(-xl=XFnx2=Xr,xlx2;

18-\

19elseH(d«8)

20H(xl=x2<b)/(2*a);

21printf("xlsXf.nx2sXf',xlx2i;

%.)else

23(ps-b,'(2*a);

24nq«sqrt(-d)/(2*a);

25printf(-%f4.%fi\n%f-Xfi\n-,p,q,p,q);

26)

27-returne;

28

29

30L

(以下题目选做,编写代码,尽可能考虑出现的情况)

1.己知某公司员工的保底薪水为500,某月所接工程的利润p与利润提成的关系如

下:(计量单位:元)

p<=1000没有提成

1000<p<=2000提成10%

2000<p<=5000提成15%

5000<p<=10000提成20%

10000<p提成25%

试编写程序,从键盘输入某公司员式该月所接工程的利润P,计算并输出该

员工当月的工资,并根据工资情况给予员工适当的激励性的话语。

0006.ClestOOOOT.cpptcst0006.c1e$tO007.cIcslOOOS.ctestOOOW.ctestOOOII.cinclude

till(Mill<>

3(・E:>C^9'^AEAlSlttQStOOOl1

inip.i:

lloat9(X)

seenf<-%<r^p>;你离京到提成就差一点点了,加油

H(p>*icecc)7700.000000

else“a。;swttctiU:Piocessexitedafter3.454secondswithreturnvalue0

3(-A

caseeiO=8;prlnts“你离拿时提就点点了,xeak;

easel:.•..1:F「江七£C'你巨经提成10%了,,阴:游力”):break;

cas«2:caso3:caso4:40,5:pnn"(•你已经很接了,加艘.n“);break;caso5:

caseucase/:c^seS:

ss9:••I■立•「再算力一点你会拿“提成廊|\0・)逢晚31(;

ca»letd=e.25:pnrT《,曲厉玄喉,已IS拿到最高的提成了,加油W);brwk;

M*(p'd)4scc:

prtntf(-%f,w)r«tum©,

2.时间换算

UTC是世界协调时一,BJT是北京时间,UTC时间相当于BJT减去8。现在,你的

程序要读入一个整数,表示BJT的时和分。整数的个位和十位表示分,百位和千位表

示小时。如果小时小于10,那么没有千位局部;如果小时是。,那么没有百位局部;如

果小时不是。而分小于10分,需要保存十位上的0;如果小时是0而分小于10分的,

那么不需要保存十位上的0。如1124表示11点24分,而905表示9点5分,36表

示。点36分,7表示。点7分。

有效的输入范围是0到2359,即你的程序不可能从测试服务器读到0到2359以外

的输入数据。

你的程序要输出这个时间对应的UTC时间,输出的格式和输入的相同,即输出一

个整数,表示UTC的时和分。

提醒:要小心跨天的换算。

输入样例:803

输出样例:3

3.信号报告

题目内容:无线电台的RS制信号报告是由两个局部组成的:

R(Readabi1ity)信号可辨度即清晰度.

•S(Strength)信号强度即大小.

其中R位于报告第一位,共分5级,用1一5数字表示.

1.UnreadableBare1yreadable,occasionalwordsdistinguishable

2.ReadablewithconsiderabledifficultyReadablewithpracticallyno

difficulty

3.Perfectlyreadable

报告第二位是S,共分九个级别,用1—9中的一位数字表示Faintsignals,barely

perceptible

1.VeryweaksignalsWeaksignals

2.FairsignalsFairlygoodsignals

3.GoodsignalsModeratelystrongsignals

4.StrongsignalsExtremelystrongsignals

现在,你的程序要读入一个信号报告的数字,然后输出对应的含义。如读到59,那

么输出:

Extremelystrongsignals,perfectlyreadable.

输入格式:

一个整数,信号报告。整数的十位局部表示可辨度,个位局部表示强度。输入的

整数范围是[11,59]中的个位不为0的数字,这个范围外的数字不可能出现在测试数

据中。

输出格式:

一句话,表示这个信号报告的意义。按照题目中的文字,先输出表示强度的文字,

跟上逗号和空格,然后是表示可辨度的文字,跟上句号。注意可辨度的句子的第一个

字母是小写的。注意这里的标点符号都是英文的。

输入样例:

33

输出样例:

Weaksignals,readablewithconsiderabledifficulty.

四、实验心得与体会

学会掌握了关系运算符和逻辑运算符,明白了关系运算符的优先级高于逻辑运算

符。学会正确书写关系表达式和逻辑表达式和条件运算符;会熟练运用if语句和swicth

涪句编写所给程序。会进行简单的关系运算和复杂的算术逻辑运算。会调试程序,if

洽句后不能用分号隔开并且需要用逻辑运算符来运算。

五、教师评语

1.按时完成实验;

2.实验内容和实验过程记录完整;

3.回答以下问题完整、正确:

4.有关于实验的比拟深刻的心得或讨论;

5.实验报告的撰写、格式符合要求。

签名:

六、成绩日

期:2022

年03月21

S

testOOOI.c

1

除唯中ain()3S(

・E:\C语言'实验四程序设计

e<stdioMestOOOl.exe

.h>

4inta=10;b=60;c=30;

5if(a>b)a=b;Processexitedafter0.00758secondswithreturnvalue0请按任总

6b=c;c=a;键继续

7printf(Ma=%d,b=%d,c=%d,nM,a,b,c);return

80;

9

10

11

12

如果a)b,那么把b的值赋给a;否则a仍然等于a,将c的值赋给

分析结果

b,a的值赋给c.

运行结果a=10,b=30,c=10

2.输入并运行以下程序,观察运行结果。

ftincludc<stdio.h>intmain()

{inti=l;

switch(i)

{case1:printf(z%d\tz\i++);case

2:printf(11%d\t",i++);

case3:printf(11%d\t,f,i++);case

4:printf(•'%d\t'f,i++);

)

printf("\ni=%d\nz,i);return0;

tesiOOOl.cteslOOOZ.cl

#include<stdio.h

>2intmain()30(

4inti=l;QE»c语言'实I234i=5

睑四程序设计,W0002.exe

5{case1:print1(,i++);

M

60case2:print!(%d\ti++):请按任意键继续・.•

7case3:printt(H%d\tM,i++);

8case4:prlntf(u%d\tH,l++);}

910printf(w\ni=%d\nM,i);

11sw

性陪urnO;13L)

分析结果每个case执行完成后自动执行下面的case语句,不会进行判断。

1234

运行结果

i=5

3、假设x=12.那,久以下程序运行的结果易

^include<stdio.h>intmain()

{intx,y;scanf(〃%d",&x);

y=x>12?x+10:x-12;printf

(zx=%d,yZl%d\nH,x,y);

return0;

KR3H.Ctestuuuz.ctestvous.cl

#include<stdio.h>

2intmain()

5

6

7

8

9

■EX)8验四期i8HlestOOO3.exe

Intx,y;12

5scanf("%d-,4x);x=l2,y=

6y=x>12?x+10:x-12;

7prlntf(Mx=%d,y=%d\nM<>x<,y)j

8return0;Processexitedafter2.146secondswithreturnvalue0请按

任意键维续.一

9

分析结果如果X〉12执行X加12,yM12,xv=12,那么X值不变,y减12.

运行结果x=12,y=0

(二)完成程序

要求:按照给定题目要求,参照出现的语句,填写程序空白处。

1.输入一个字符,如果它是一个大写字母,那么把它变成小写字母;如果它

是一个小写字母,那么把它变成大写字母;其他字符不变,请在上填写正

确内容。

ttincludc<stdio.h>intmain()

{charch;scanf(级c〃,&ch);

if(_ch>=,A,&&ch仁'r_)ch=ch+32;elseif(ch>=a*&&ch〈二'z')

_ch=ch-32;

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

•IS>

tcSt0004.d#include<stdio.h>

2intmain()■ElCgSA舱四tSrtles10004^xa

3早(

charch;

4

scanf("%c\&ch);

5IProcessexitedafter4.908secondswithreturnvalue0爵接任意例

if(ch>=*A&&ch<='Z)|继续二■

6ch=ch+32;

7elseif(ch>=a&&ch<=z)

8ch二ch-32;

M

9printf(**%c\n,ch);

return0;

10

2.以下程序根据输入的三角形的三边判断是否能组成三角形,假设可以那么

输出它的面积和三角形的类型,请在上填写正确内容。

ttinclude<stdio.h>

ttinclude<math.h>

intmain()

{floata,b,c;

floats,area;

scanf(〃%f,%f,%fz/,&a,&b,&c);

if(_a+b>c&&a+c>b&&b+c>a){s=(a+b+c)/2;

area=sqrt(s*(s-a)*(s-b)*(s-c));printf("三角形的面积为:%f\n",area);

if(a-b-c)

printf(〃等边三角形\n〃):alseifQa=b!=c&&a=c!=h&&h=c!=a)

printf(〃等腰三角形\n〃);elseif((a*a+b*b=二c*c)||

(a*a+c*c=二b*b)||(c*c+b*b==a*a))printf(〃直角三角形\n〃);

elseprintf("一般三角形\n〃);)

elseprintf(〃不能组成三角形\n〃);

return0:

•inckide<stdto.h>

<»inciudR«TQthh>Int

mainl)

00005.C

9inckJde<stdio.h>

#includ0<math.h>Int

mainl)

3(

noaia4>.cjfloats''area;

if(a,b>cMaK>b&&b,c>a).E:Q语言供好四程序设计FtOOOg叩

15.8.10

s-<a-b*c>2j三角形的面积为:1980036

area=sqrtls^s-a^s-bHs-c));

pdntlO,三角形的面积为:n'areaX

printf(”等边三角形Processexitedafter6.189secondswithreturnvalue0

elsei*(a==b&&b!"c)||(a==c&&c』b>《b・'c&ac!“))谙按任意位维康••・

elseif((a*WX4>等族三角形k&a*d*c*c»»b*b)(c*c*b*b»«=a*a)>

prictf("JR/三角形\n”)jeteeprinL一般三角彩,中

elseprint千《”不能组成二角形,n”b

rMurn0:

3.以下程序实现的功能是:

♦lx<0,请将以下程序补充完整.

y=-0x=01x>0

ttinclude<stdio.h>intmain0{intx,v;scanf(11%d,f,&x):

switch(x<0)

{case1:y=—];break;caseO:switch(x==O)

{case1;y=0;break;case0:y=l;

}

printf(>'y=%d\n,y);

return0;

le$t00006.cpptKtO00O6.c

2int

3早口

4

5

6

70

8

1#include<stdio.h>

2intmain()

3早口

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论