收藏 分销(赏)

实验四选择结构程序设计.docx

上传人:二*** 文档编号:4745511 上传时间:2024-10-11 格式:DOCX 页数:20 大小:65.17KB 下载积分:5 金币
下载 相关 举报
实验四选择结构程序设计.docx_第1页
第1页 / 共20页
本文档共20页,全文阅读请下载到手机保存,查看更方便
资源描述
实验四选择结构程序设计 一、实验目的.掌握关系运算符和逻辑运算符; 1 .学会正确书写关系表达式和逻辑表达式和条件运算符;.熟练掌握if语句和switch语句。 二、实验学时数4学时 三、实验步骤(一)阅读程序 1.输入并运行以下程序,观察运行结果。 ftinclude <stdio.h>int main() { int a, b, c;a=10;b=60;c=30; if (a>b) a=b;b=c; c 二a;printf (/za=%d, b=%d, c=%d\n/z, a , b, c ); return 0; 程序运行结果如下: d cde 这里假设字母表首尾两个字母是相连的。假设输入字母Z,那么程序输出YZAo 输入格式:一个字母,可能为大写,也可能为小写。 输出格式:连续3个字母,大小写不变。 test00008.c 未命名 21 #include<stdio.h> 1 #include<stdio.h> ■ ' E:\C语验四台窗十\test00008.exe 2 int main() 3早{ 4 6 7S 8 9 10 - 11 12 0 13 14 15 16 17 char cl>c2,c3; scanf(M%cM,&cl)s if(cl>=65&cl<=90) ( c2=(cl・'A'・l)%26+'A'; c3=(cl-,A,+l)%26+'A'; } else { c2=(cl・'a'・l)%26+'a'; c3=(cl-,a'+l)%26+*a,; } printf("%c%c%c"jc2,cl,c3); return 0; h ghi Process exited after 4. 018 seconds with return value 0 请按任意键继续. . . ■ 疝编译日志〃调试Q搜索结果笆关闭 缰译结果... - 错误:o警告:o iths -输出文件名:E:\C语言'实验四程序设计\test00008.exe输田大小:128.1015625 KiB - -译时间:0.168 2.找零钱。为顾客找零钱时,希望选用的纸币张数最少。例如73元,希望 零钱的面值为五十元1张,二十元1张,一元3张。设零钱面值有五十元、二十 元、十元、五元和一元,请编写程序,用户输入100以下的整数,计算找给顾客 的各面值的纸币张数,数据间以空格隔开。 输入:大于等于0小于100的整数。 输出:5个整数,数据间用一个英文空格分隔。 输入样例:73输出样例:1 1。0 3 输出样例:1 1。0 3 H int x, const int A=50; const int B=20; const int C=10; const int D=5; const int E=l; H 05.c test00007.cpp test0006.c test0007.c test0008.c #include<stdio.h> int main() 7 a110 0 3 Process exited after 22. 72 seconds with return value 0 请按任意键继续...■scanf(H%d,\&x); a=(x-x%A)/A;Ib=(x%A-(x%A)%B)/B; 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(M%d %d %d %d %d",a,b, jd,e)? return 0; ■)日志〃调试Q搜索结果的关闭 E结果... 3,判断一个三位数是否为“水仙花数”。所谓“水仙花数”是指一个三位数, 其各位数字的立方各等于该数本身。例如:153是一个水仙花数,因为 153二厂3+5 - 3+3 八 3 输入:一个三位的正整数。 输出:是或不是。 #include<stdio.h> int main() 早{ int a,b>c,A»B; scanf(1,%d,\&A); a=A/100; b=(A%100)/10; c=(A%100)%10; B=(a*a*a)+(b*b*b)+(c*c*c); if(A==B) printf ("是“); else printf ("不是”); return 0; -} H E:\C语言\实验四程序设计\test0007.exe 153 是 Process exited after 12.79 seconds with return value 0 请按任意键继续... 4 .百分制转换为等级制。从键盘输入一个百分制成绩,要求输出其对应的 等级。给出一个输入某学生的成绩(成绩为100分制,可以为89.5,如果输入的 成绩不在0-100之间,请给出出错提示。),经处理后给出学生的等级,等级分 类如下: 90分以上(包括90): A80至90分(包括80): B 70至80分(包括70): C60至70分(包括60): D 60分以下:E (XX)9.c test000010.c#include<stdio.h> int main() float score; char grade; printf(”请输入学生的成绩:”); scanf ("%f",,&score); while(score>100||score<0) m{printf("\n输入有误。请重输 scanf("%f',&score); ■) switch((int)(score/10)) 3( case 10: case 9:grades'A';break; case 8:grades'B';break; case 7:grades'C';break) case 6:grades * D';break; case 5: case 4: case 3: case 2: case 1: case 0:grade='E'; 泽日志〃谒试◎搜索结果间关闭 I译结果.・・ 错谩:o 警告:0 #include<stdio.h> int main() float score; char grade; printf(”请输入学生的成绩:”); scanf ("%f",,&score); while(score>100||score<0) m{printf("\n输入有误。请重输 scanf("%f',&score); ■) switch((int)(score/10)) 3( case 10: case 9:grades'A';break; case 8:grades'B';break; case 7:grades'C';break) case 6:grades * D';break; case 5: case 4: case 3: case 2: case 1: case 0:grade='E'; 泽日志〃谒试◎搜索结果间关闭 I译结果.・・ 错谩:o 警告:0 ■播 E:\(:语验四期窗十\testOOOO1O.exe 而输入学生的成绩:95 戊绩是95. 0,相应的等级是A Process exited after 4. 039 seconds with return value 0 请按任意键继续...■ 5 .求一元二次方程a/ + b% + c = 0的解。 根据代数知识,应该有以下几种可能: (1)a=0,不是二次方程,而是一次方程。按一次方程求解。 (2) b2- 4ac = 0,有两个相等的实根;b2 - 4ac > 0,有两个不等的实根; (3) b2 - 4ac < 0,有两个共貌复根。 test00005.c test00007.cpp testOOO6.c test0007.c - E:\C语言校验四程序设计\testOOO1O.exe2 3 40 5 6 7 8 9 白 2 3 40 5 6 7 8 9 白 12 14 15 A 16 17 18 - 19 20 H 21 22 - 23 24 n 25 26 27 - 28 29 30 L "include <stdio.h> ・include <«ath.h> int nain() ( float a,b,c,d,p,q; float xl,x2; scanf("Xf%fXf-,Sa,gb,8c); d=b*b-4*a*c) if(a3>e) (xi«(-c)/b; x2«xi; printf ("xl8X.2f\nx2-%.2f,xl/x2); ) else H(d>e) {xl3(-t4sqrt(d))/(2,a); x2=(-b-sqrt(d))/(2*a); printf(-xl=Xf\nx2=Xf",xl,x2); ) else H(d«8) (xl=x2-(-b)/(2*a); printf("xlsXf\nx2sXf",xl,x2); ) else (ps-b/(2*a); q«sqrt(-d)/(2*a); printf (-%f4.%fi\n%f-Xfi\n-,p,q,p,q); ) return e; 2 4 5 -1. 000000+1. 224745i -1. 000000-1. 224745i Process exited after 15. 29 seconds with return value 0 请按任意键继续... (以下题目选做,编写代码,尽可能考虑出现的情况) 1.己知某公司员工的保底薪水为500,某月所接工程的利润p与利润提成的 关系如下:(计量单位:元) p<=1000 没有提成 1000<p<=2000 提成10% 2000<p<=5000 提成15% 5000<p<=10000 提成20% 10000<p 提成25% 试编写程序,从键盘输入某公司员式该月所接工程的利润P,计算并输出该 员工当月的工资,并根据工资情况给予员工适当的激励性的话语。 0005.C test00007.cpp test0006.c te$t0007.c testOOOS.c testOOOW.c testOOOII.c #include <stdio.h> int nain() 3 ( int p,i; float **; scanf("%d",ap); if(p>«ieeee) i>ie; else i<p/ieee; switch⑴ 3 (-A case e:0=8;prints”你离拿封提就点点了,break; case 1:。・。.1;「「江七£(”你巨经提成10%了,,阴;游力\n-);break; case 2: case 3: case 4:d-0.i5;prin"("你已经很搂了,加艘\n“);break; case 5: case 6: case 7: case 8: case 9:。・8.2建「立"「再弊力一点你会拿^^提成廊|\0・)逢晚31(; case ie:d=e.25;prin"("曲厉塞喉,已经拿到最高的提成了,加油\n");break; • ) M-(p*d)4see; printf(-%f",u); return e; • ) • E:\C®a\^^E ^iSit\testOOO11 .exe 900 你离拿到提成就差一点点了,加油 7700.000000 Process exited after 3. 454 seconds with return value 0 请按任意键继续... 2 .时间换算 UTC是世界协调时一,BJT是北京时间,UTC时间相当于BJT减去8。现在, 你的程序要读入一个整数,表示BJT的时和分。整数的个位和十位表示分,百 位和千位表示小时。如果小时小于10,那么没有千位局部;如果小时是0,那么没有 百位局部;如果小时不是。而分小于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(Readability)信号可辨度即清晰度. • S (Strength) 信号强度即大小. 其中R位于报告第一位,共分5级,用1—5数字表示. 1. UnreadableBarely readable, occasional words distinguishable 2. Readable with considerable difficultyReadable with practically no difficulty 3. Perfectly readable 报告第二位是S,共分九个级别,用1—9中的一位数字表示Faint signals, barely perceptible 1. Very weak signalsWeak signals 2. Fair signalsFairly good signals 3. Good signalsModerately strong signals 4. Strong signalsExtremely strong signals 现在,你的程序要读入一个信号报告的数字,然后输出对应的含义。如读到 59,那么输出: Extremely strong signals, perfectly readable. 输入格式: 一个整数,信号报告。整数的十位局部表示可辨度,个位局部表示强度。输 入的整数范围是[11, 59]中的个位不为0的数字,这个范围外的数字不可能出现 在测试数据中。 输出格式: 一句话,表示这个信号报告的意义。按照题目中的文字,先输出表示强度的 文字,跟上逗号和空格,然后是表示可辨度的文字,跟上句号。注意可辨度的句 子的第一个字母是小写的。注意这里的标点符号都是英文的。 输入样例: 33 输出样例: Weak signals, readable with considerable difficulty. 四、实验心得与体会 学会掌握了关系运算符和逻辑运算符,明白了关系运算符的优先级高于逻辑 运算符。学会正确书写关系表达式和逻辑表达式和条件运算符;会熟练运用if 语句和swicth语句编写所给程序。会进行简单的关系运算和复杂的算术逻辑运 算。会调试程序,if语句后不能用分号隔开并且需要用逻辑运算符来运算。 五、教师评语 1 .按时完成实验; 2 .实验内容和实验过程记录完整; 3 .回答以下问题完整、正确; 4 .有关于实验的比拟深刻的心得或讨论; 5 .实验报告的撰写、格式符合要求。 签名: 六、成绩日期: 2022年03月21日 testOOOl.c1 #include<stdio.h> 2 int main()3S( ■ E:\C语言\实验四程序设计\testOOO1 .exe卜=10, b=30, c=10 4 5 6 7 8 910 1112 inta=10;b=60;c=30; if(a>b)a=b; b=c;c=a; printf(Ma=%d,b=%d,c=%d\nM,a,b,c);return 0; Process exited after 0. 00758 seconds with return value 0 请按任意键继续...■ 分析结果 如果a〉b,那么把b的值赋给a;否那么a仍然等于a,将c的值赋给 b,a的值赋给c. 运行结果 a=10,b=30,c=10 2.输入并运行以下程序,观察运行结果。 ftinclude <stdio. h>int main () { int i=1; switch (i) { case 1 :printf (/z%d\tz/, i++);case 2:printf(〃%d\t〃, i++); case 3:printf(〃%d\t〃, i++);case 4:printf (〃%d\t〃,i++); } printf (z/\ni=%d\nz/, i);return 0; testOOOl.c testOOOZ.c1 #include<stdio.h> 2 int main()3 0 ( 4 int i=l;Q E:\C语言\实睑四程序设计\test0002.exe 1234i=5 5 6 0 7 8 910 - 11switch(i) {case 1: printf (, i++); case 2: printf ( M%d\ti++); case 3:printf(H%d\tM,i++); case 4:printf(M%d\tH,i++);} printf(M\ni=%d\nM,i);Process exited after 0.04431 seconds with return value 0 请按任意键继续... 12 return 0;13 L ) 分析结果 每个case执行完成后自动执行下面的case语句,不会进行判断。 运行结果 1234 i=5 3、假设x=12,那么以下程序运行的结果是 #include <stdio.h>int main () { int x, y;scanf (〃%d〃, &x); y=x>12 ? x+10:x-12;printf (/zx=%d, y二%d\n〃,x, y); return 0; KtOOOl.c testOOO2.c testOOO3.c1 #include<stdio.h> 2 int main() ■ E:\C 语 验四期 i§H\testOOO3.exe5 6 7 8 9 5 6 7 8 9 int x,y; scanf("%d-,4x); y=x>12 ? x+10:x-12; printf (Mx=%d,y=%d\nM<>x<,y)j return 0; 12 x=12,y=0 Process exited after 2.146 seconds with return value 0 请按任意键继续... 分析结果 如果x〉12执行x加12, yM 12, xv=12,那么x值不变,y减12. 运行结果 x=12,y=0 (二)完成程序 要求:按照给定题目要求,参照出现的语句,填写程序空白处。 1 .输入一个字符,如果它是一个大写字母,那么把它变成小写字母;如果它 是一个小写字母,那么把它变成大写字母;其他字符不变,请在 上填写正 确内容。 ttinclude <stdio. h>int main () { char ch ;scanf (级c〃, &ch); if (_ch>='A' &&ch〈='V _)ch=ch+32;else if (ch>='a' && ch〈二'z' ) _ch=ch-32; printf (〃%c\n〃 , ch);return 0; »1S) te$t0004.c1 #include<stdio.h> 2 int 3早{ 4 5 6 7 8 9 10 11 12 L } main() char ch; scanf(n%c\&ch); if(ch>=*A, && ch<='Z,) ch=ch+32; else if (ch>=,a, && ch<=,z') ch=ch-32; printf (**%c\nM,ch); return 0; ■ E:\Ci§S\^ 脸四iSrt\test0004.exe Process exited after 4.908 seconds with return value 0 静按任意键继续...■ 2 .以下程序根据输入的三角形的三边判断是否能组成三角形,假设可以那么输出它的面积和三角形的类型,请在 上填写正确内容。 ttinclude <stdio.h> ttinclude <math. h> int main () { float a, b , c ; float s , 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/z, area); if ( a二b二c)printf (〃等边三角形\n〃);else if (_a=b!=c&&a=c!=b&&b=c!=a) printf (〃等腰三角形\n〃);else if((a*a+b*b=二c*c) | | (a*a+c*c=二b*b)| | (c*c+b*b==a*a)) printf (〃直角三角形\n〃); else printf ("一般三角形\n");) else printf (〃不能组成三角形\n〃); return 0; 00005.C#include<stdio.h> #include<math.h> int main() 3 { #include<stdio.h> #include<math.h> int main() 3 { float a,b,cj float s^area; if (a*b>c&&a♦ob&&b*c>a) ■ E:\C语言供蛉四程序设计\test00005.exe s-(a*b*c)/2j area=sqrt(s*(s-a)#(s-b)*(s-c)); printf0•三角形的面积为:%八n'area): if(a«=b&8b»»c) printf("等边三角形 else if((a==b&&b!"c)||(a==c&&c!=b)||(b=sc&&c!=a)) printf("等族三角形\n”》 5, 8, 10 三角形的面积为:19.810036 一般三角形 Process exited after 6.189 seconds with return value 0 请按任意键继续.• • ■ else if ((a*a*b*b»»c*c) 11 (a*a*c*c»»b*b) 11 (c*c*b*b»«=a*a)> printf("直角三角形\n”)jelse print*"一般三角形\n-)j } else print千("不能组成二角形\n”); return 0; )3.以下程序实现的功能是: <-1x<0,请将以下程序补充完整. y= 一 0x=01x>0 ttinclude <stdio. h> int main (){ int x, y;scanf(〃%d〃, &x); switch(x<0) {case 1:y =一]; break;case 0:switch(x==0) { case 1;y=0;break;case 0:y=l; } printf (〃y=%d\n〃,y); return 0; te$t00006.cpp t«t00006.c 1 #include<stdio.h>2 int 3早口 4 5 6 70 8 9B 2 int 3早口 4 5 6 70 8 9B main() ■ E:\C语言法蛉四程再设it\test00006.exe 10 11 12 13 14 15 int x,yj scanf("%d",&x)s switch(x<0) {case l:y=-l;break) case 0:switch(x==0) {case l:y=0;break; case 0:y=l; ) F-5 y=_l Process exited after 4. 72 seconds with return value 0 请按任意键继续...■ L0 } printfC'y=%d\n",y); return 0; h编译日志 〃调试 Q搜索结果 电]关闭 编译结果・・・ - 错误:。 - 警告:o - 输出文件名:E:\C语言'实验四程序设计\tegc00006.exe - 输出大小:128.1015625 K1B - 编译时间:0.16s (三)调试程序 要求:分析以下程序是否正确,如有错误,指出错误所在位置,并改正;假设 正确,写出运行结果。 以下程序实现求分段函数。 y= C -1x>9<x*(x+2)3<x<=9 2*x-l<x<=3x-1x<=-l #include <stdio.h>int main() { int x ,y ;scanf("%d”,&x); if (3<x<=9) y=x*(x+2);else if (-l<x<=3) y=2*x; else if (x<—l)y=x-l;else y=-l; printf("%d\n",y);return 0; rt00005.c test00007.cpp test0006.c 1 #include<stdio.h>2 int main() ■ E:\C 语蛉四 ^Jrigi+\test0006.exe3早{ 45 62 247 89 0 int x,y;scanf("%d",&x); if(x>3&&x<9) y=x*(x+2);else if(x>-l&&x<=3) y=2*x; else if(x<-l)Process exited after 1. 976 seconds with return value 0 请按任意键继续...■ 12 34 5 L }y=x-l; else y=-l;printf("%d\n”,y); return 0; #include<stdio.h> int main()4 int x,y;scanf(n%d",&x); if(x>3&&x<9) y=x*(x+2);else if(x>-l&&x<=3) y=2*x; else if(x<-l)y=x-i; else y=T;printf("%d\n",y); return 0; )■ E:\C 语实验四台的\test0006.exe Process exited after 5. 384 seconds with return value 0 括按任意键继续.... 程序是否正 错误在if和else if语句中的表达式应该用逻辑表达式&& 确: 应改为:x>3&&x<=9, x〉-1&&X〈二3 调试正确后 分别输入数据:4 2 1 -3 10 的运行结果 输出结果24 4 2-4-1 (四)编写程序 1 .打印3个相邻字母。当用户输入一个英文字母后,程序能够按照字母表的顺序打印出3个相邻的字母,其中用户输入的字母在中间。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服