实验4 选择结构程序设计
- 格式:doc
- 大小:579.50 KB
- 文档页数:14
实验四选择结构程序设计在程序设计的世界里,选择结构就像是一个智能的决策者,根据不同的条件来决定程序的走向。
这一结构在解决各种实际问题中发挥着至关重要的作用,让程序变得更加灵活和高效。
选择结构,简单来说,就是让程序在运行时能够根据某些条件的判断结果,选择执行不同的代码块。
想象一下,你正在编写一个程序,要根据用户输入的成绩来判断他是否及格。
如果成绩大于等于 60 分,就输出“及格”;否则,输出“不及格”。
这就是一个典型的选择结构应用场景。
在大多数编程语言中,实现选择结构主要有两种方式:if 语句和switch 语句。
先来说说 if 语句。
它的基本形式是“if (条件) {代码块}”。
如果条件为真,就执行花括号里的代码块;如果条件为假,就跳过这个代码块,继续执行后面的代码。
比如说,我们要判断一个数是否为正数,可以这样写:```javaint num = 5;if (num > 0) {Systemoutprintln("这是一个正数");}```除了简单的 if 语句,还有 ifelse 语句。
它的形式是“if (条件) {代码块 1 } else {代码块 2 }”。
如果条件为真,执行代码块 1;如果条件为假,执行代码块 2。
例如,判断一个数是奇数还是偶数:```javaint num = 6;if (num % 2 == 0) {Systemoutprintln("这是一个偶数");} else {Systemoutprintln("这是一个奇数");}```另外,还有 ifelse ifelse 语句,可以处理多个条件的情况。
比如,根据学生的成绩划分等级:```javaint score = 85;if (score >= 90) {Systemoutprintln("优秀");} else if (score >= 80) {Systemoutprintln("良好");} else if (score >= 70) {Systemoutprintln("中等");} else if (score >= 60) {Systemoutprintln("及格");} else {Systemoutprintln("不及格");}```接下来,再讲讲 switch 语句。
实验4 选择结构程序设计一、实验目的1.掌握C语言中逻辑量的表示和使用方法。
2.掌握if语句及switch语句的使用。
3.熟悉各种表达式作为if语句及switch语句的条件。
4.了解Turbo C程序的基本调试方法。
二、实验内容1.验证性实验(1)分析程序的运行结果。
①运行下列程序,输入1-7之间的任意数字,观察程序的运行结果。
#include <stdio.h>void main(){ int week;printf("Input(1-7):");scanf("%d",&week);switch(week){ case 1:printf("Mon.\n"); break;case 2:printf("Tue.\n"); break;case 3:printf("Wed.\n"); break;case 4:printf("Tur.\n"); break;case 5:printf("Fri.\n"); break;case 6:printf("Sat.\n"); break;case 7:printf("Sun.\n"); break;default:printf("The input is wrong!\n");}}②运行5次下列程序,输入的数据分别是1,2,3,4,5,请观察每次的运行结果,并根据结果分析原因。
#include <stdio.h>void main(){ int n,a=0,b=0,c=0,d=0,k=0;scanf("%d",&n);switch(n){ case 1:b++;break;case 2:c++;case 3:d++;break;case 4:k++;default:a++;}printf("%d,%d,%d,%d",a,b,c,d,n);}(2)输入x的不同值,以下程序将求一给定“y=f(x)”函数的值。
实验四 选择结构程序设计
(设计型 4学时)
一、实验目的
1.掌握逻辑表达式的正确使用方法。
2.掌握单分支、双分支和多分支条件语句结构的使用方法。
二、实验内容
1 有函数:
⎪⎩⎪⎨⎧≥-<≤-<=)
10(124)101(2
3)1(x x x x x x
y 写一个程序,输入x 值后,则输出相应y 值。
要求
用“If …ElseIf …EndIf ”和用“Select Case ”两种方法完
成该题目。
【提示】
注意区分1≤x<10和1<=x And x<10有什么不同。
2编写一个判断给定坐标在第几象限的程序,界面
如图3-1所示。
3 编写一个简易学生成绩管理系统,要求输入姓名
和成绩,点击“添加”按钮后,在文本框中追加并换行显示“姓名”、“成绩”和“合格”或
“不合格”信息,如图3-2所示。
【提示】
换行追加并且显示时,可用Text1.Text = Text1.Text & vbCrLf & (待追加并显示的字符串),同时应该将Text1的MultiLine 属性设置为True ,ScrollBars 属性设置为Both 。
进一步要求:按照≥90为“优”,≥80为“良”,≥70为“中”,≥60为“及格”,<60为“不及格”来划分并显示上述信息。
图3-1 实验3-2程序运行界面 图3-2 实验3-3程序运行界面。
实验题目:选择结构程序设计班级:学号:姓名:学院:实验室:日期:成绩评定:教师签字:实验目的:1、掌握顺序结构程序设计方法、执行过程和复合语句的作用。
2、熟练使用顺序结构编辑程序。
3、熟练掌握if——else条件语句,学习选择结构程序设计的方法及应用。
4、熟悉多分支选择的switch——case语句。
【2-1】阅读程序,上机调试并记录程序结果。
(记录结果,利用截图方式或者书写方式均可)(1)#include <stdio.h>int main( ){int x=3;if(x==0) {printf("x=%d\n",x);}else{printf("x=%d\n”,x+1);}return 0;}程序运行结果:x=4(2)#include <stdio.h>int main(){int a,b;scanf("%d",&a); /*键盘输入一个整数a*/if(a%2!=0) { /*判断a是否是奇数*/b=a*a;printf("b=%d\n",b);}return 0;}程序运行结果: 1 b=1(3)阅读程序,输入0~100之间的数值,上机调试并记录程序结果。
#include<stdio.h>#include<stdlib.h>int main(){double score;int level;printf("请输入成绩:\n");scanf("%lf",&score);if (score>100||score<0){printf("成绩输入错误!\n");}else{level=(int)((score -50)/10);switch(level){case 5: printf("优\n");break;case 4: printf("优\n");break;case 3: printf("良\n");break;case 2: printf("中\n");break;case 1: printf("差\n");break;default: printf("劣\n");break;}}return 0;}程序运行结果: 99 优【2-2】程序填空。
安徽工程大学高级语言程序设计实验报告班级姓名同组者/ 成绩日期2019.10.10 指导教师实验名称选择结构程序设计一、实验目的1.学会正确使用关系运算符和关系表达式。
2.学会正确使用逻辑运算符、逻辑表达式以及关系表达式等。
3.熟悉掌握if语句和switch语句的用法。
4.熟悉选择结构程序中的语句执行过程,掌握选择结构程序设计的方法。
二、实验内容1.编写程序,判断从键盘上输入的一个字符类型,并按下列要求输出。
(1)若该字符是数字,输出字符串“0~9”。
(2)若该字符是大写或者小写字母,输出字符串“A~z”。
(3)若该字符是其他字母,输出“!,@,……”。
完善P56页第一个源程序,对源程序进行编译、连接并运行,完成调试报告。
2.编程并上机调试。
(1)给出一个不多于4位的正整数,求它是几位数。
(2)给出一个百分制成绩,要求输出成绩等级'A'、'B'、'C'、'D'、'E'。
90分以上为'A',80~90分为'B'70~79分为'C',60~69分为'D',60分以下为'E'。
用switch语句来实现。
(3)输入4个整数,要求按从小到大的顺序输出。
(4)输入3个整数,将最大数与最小数输出。
(5)输入一个字符,如果是数字字符,把它转换成相应的数字输出;如果不是,则以十进制整数形式输出其ASCⅠⅠ码值。
*思考题3.若在实验内容1的程序第8行的语句else if (_)后多输入了一个分号,即“elseif (_);”,分析程序,写出预期结果,然后输入调试,查看运行结果与预期结果是否一致并分析原因。
4.若在实验内容1的程序第8行的语句else if(_)法人括号内输入c>='A'&&c<='z'后,判断在调试时是否能得到正确结果,并分析原因。
三、算法流程图或实验步骤(可根据需要增删、修改)1.(1)算法流程图#include<stdio.h>void main( ){char c;scanf("%c",&c);if(c>='0'&&c<='9')printf("0~9\n");else if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))printf("A~z\n");elseprintf("!,@,……\n");}(2)实验步骤Files→New→Files→C++source File→文件名:program3011.c→位置:E:\123\→确定→完善源程序→Buid→是→确认0error(s) 0warning(s)后→BuidExecute→查看运行结果2.(1)算法流程图:#include<stdio.h>void main ( ){int a,b;scanf("%d",&a);b=a/10;if (b==0)printf("该数是一位数");else if (b>=1&&b<=9)printf("该数是两位数");else if (b>=10&&b<=99)printf("该数是三位数");elseprintf("该数是四位数");}实验步骤:Files→Close Workspace→Files→New→Files→C++source File→文件名:program3021.c→位置:E:\123\→确定→输入代码→Buid→是→确认0error(s) 0warning(s)后→BuidExecute→查看并验证运行结果(2)算法流程图:#include <stdio.h>void main(){int a,b;scanf("%d",&a);b=a/10;switch(b){case(10):printf("A\n");break;case(9):printf("A\n");break;case(8):printf("B\n");break;case(7):printf("C\n");break;case(6):printf("D\n");break;default:printf("E\n");break;}}实验步骤:Files→Close Workspace→Files→New→Files→C++source File→文件名:program3022.c→位置:E:\123\→确定→输入代码→Buid→是→确认0error(s) 0warning(s)后→BuidExecute→查看并验证运行结果(3)算法流程图:#include<stdio.h>void main ( ){int a,b,c,d,t;scanf("%d,%d,%d,%d",&a,&b,&c,&d);if (a>b){t=a;a=b;b=t;}else if (a>c){t=a;a=c;c=t;}else if (a>d){t=a;a=d;d=t;}else if (b>c){t=b;b=c;c=t;}else if (b>d){t=b;b=d;d=t;}else if (c>d){t=c;c=d;d=t;}printf("%d,%d,%d,%d",a,b,c,d);return 0;}实验步骤:Files→Close Workspace→Files→New→Files→C++source File→文件名:program3023.c→位置:E:\123\→确定→输入代码→Buid→是→确认0error(s) 0warning(s)后→BuidExecute→查看并验证运行结果(4)算法流程图:#include<stdio.h>void main ( ){int a,b,c,t;scanf("%d,%d,%d",&a,&b,&c);if (a>b){t=a;a=b;b=t;}else if (a>c){t=a;a=c;c=t;}else if (b>c){t=b;b=c;c=t;}printf("min is %d,max is %d",a,c);}实验步骤:Files→Close Workspace→Files→New→Files→C++source File→文件名:program3024.c→位置:E:\123\→确定→输入代码→Buid→是→确认0error(s)0warning(s)后→BuidExecute→查看并验证运行结果(5)算法流程图:#include<stdio.h>void main ( ){char a;scanf("%c",&a);if (a>='0'&&a<='9')printf("%c",a);elseprintf("%d",a);}实验步骤:Files→Close Workspace→Files→New→Files→C++source File→文件名:program3025.c→位置:E:\123\→确定→输入代码→Buid→是→确认0error(s) 0warning(s)后→BuidExecute→查看并验证运行结果*思考题:3.算法流程图:#include<stdio.h>void main( ){char c;scanf("%c",&c);if(c>='0'&&c<='9')printf("0~9\n");else if((c>='a'&&c<='z')||(c>='A'&&c<='Z'));printf("A~z\n");elseprintf("!,@,……\n");}实验步骤:Files→Close Workspace→Files→New→Files→C++source File→文件名:program3031.c→位置:E:\123\→确定→修改代码→Buid→是4.算法流程图:#include<stdio.h>void main( ){char c;scanf("%c",&c);if(c>='0'&&c<='9')printf("0~9\n");else if(c>='A'&&c<='z')printf("A~z\n");elseprintf("!,@,……\n");}实验流程:Files→Close Workspace→Files→New→Files→C++source File→文件名:program3041.c→位置:E:\123\→确定→修改代码→Buid→是→确认0error(s) 0warning(s)后→BuidExecute→查看并验证运行结果四、实验结果及分析1.2.程序见第三项算法流程图。
实验4 编写选择结构程序一、实验目的1.了解C语言表示逻辑值的方法。
2.学会正确使用逻辑运算符和逻辑表达式的方法。
3.熟悉if语句和switch语句。
4.结合程序掌握一些简单的算法。
5.学习调试程序的方法。
二、实验内容本实验要求编程解决以下问题,然后上机调试运行程序。
1.编程实现:输入3个整数,要求按由小到大的顺序输出。
得到正确结果后,修改程序使之按由大到小的顺序输出。
main函数结构如下:int a,b,c,t;输入3个整数:赋给a,b,c;if(a>b) 交换a,bif(a>c) 交换a,cif(b>c) 交换b,c输出a,b,c2.给出一个百分制的成绩,要求输出成绩等级A,B,C,D,E。
90分及以上为A,80-89为B,70-79为C,60-69为D,60分以下为E。
要求从键盘输入成绩,然后输出相应等级,分别用if语句和switch语句实现。
程序提示:(1)使用if语句的main函数结构如下:定义float型变量score,char型变量grade输入百分制成绩赋给scoreif score>=90grade='A'else if score>=80grade='B'else if score>=70grade='C'else if score>=60grade='D'else grade='E'输出百分制成绩和等级。
(2)使用switch语句的main函数结构如下:定义float型变量score,char型变量grade输入百分制成绩赋给scoreswitch(int(score/10)){case 10:case 9: grade='A';break;case 8: grade='B';break;case 7: grade='C';break;case 6: grade='D';break;default: grade='E';break;}输出百分制成绩和等级3.实验总结。
实验四选择结构程序设计一、实验目的1.正确使用关系表达式和逻辑表达式表达条件。
2.学习分支语句if和switch的使用方法。
3.进一步熟悉TC集成环境的使用方法,学习TC环境提供的调试工具。
二、实验内容1.调试下列程序,使之具有如下功能:输入a、b、c三个整数,求最小值。
写出调试过程。
main(){ int a,b,c;scanf("%d%d%d",a,b,c);if((a>b)&&(a>c))if(b<c)printf("min=%d\n",b);elseprintf("min=%d\n",c);if((a<b)&&(a<c))printf("min=%d\n",a);}程序中包含有一些错误,按下述步骤进行调试。
⑴设置观测变量。
按<Alt+B>键,屏幕弹出"Add watch"窗口,在窗口中可输入要观察的变量或表达式,此处输入a,重复以上操作并分别输入b、c,在屏幕下方的"message"窗口显示变量名a、b、c,且变量名的后面有提示,如a的后面是undefined symbol 'a',这是因为程序没有运行,变量没有登记,所以TC环境不知道a是什么。
⑵单步执行程序。
按<F8>键,屏幕上半部"Edit"窗口中的程序第一行程序的文字背景色变为兰色,表示此语句将被执行。
连续按<F8>键,兰色条一句句下移。
⑶通过单步执行发现程序中的错误。
当单步执行到scanf()函数一句时,屏幕自动切换到DOS窗口,等待用户的输入,假定我们输入"1 2 3",变量a、b、c接受后应在屏幕信息窗口显示出来,但是此时我们看到的却不是我们输入的数据。
这时我们就要检查程序。
实验4 选择结构程序设计一、实验目的:1、熟悉C语言逻辑值“真”、“假”的表示;2、掌握关系运算符的种类、运算优先级、运算结果的类型,清楚一个关系表达式对应的相反式;3、掌握逻辑运算符的种类、运算优先级、结合性、操作数与运算结果的类型,能根据要求构建相应的逻辑表达式,理解逻辑运算中“短路”现象;4、掌握if语句的用法,能够根据要求熟练使用单分支、双分支、多分支(嵌套)结构;5、掌握switch语句的格式、功能及注意事项;6、熟悉条件运算符和条件表达式的基本用法;7、初步学习随机函数rand()的使用。
二、实验内容1、(基础题)分析、运行下列程序,验证逻辑值、关系运算相关内容,并回答相关问题:#include<stdio.h>int main(){int x=15,y=5,z=50;printf("x=%d, y=%d, z=%d\n",x,y,z);printf("x>y? %d\n",x>y);printf("x<=y? %d\n",x<=y);printf("x+y<z? %d\n",x+y<z);printf("z-30>=x+y? %d\n",z-30>=x+y);printf("y==z-30>x? %d\n",y==z-30>x);return 0;}问题:(1)C语言逻辑值“真”、“假”如何表示?输入、输出时有什么不同?(2)关系运算符包含哪几个? 它们的优先级如何?(3)关系表达式的运算结果是什么?(4)哪些关系运算符互为相反式?它们的运算结果有什么关联?2、(基础题分析、运行下列程序,验证逻辑运算的相关内容,并回答相关问题:#include<stdio.h>int main(){int a=3, b=4, c=5;int x,y,z;printf("a=%d, b=%d, c=%d\n",a,b,c);printf("a+b>c&&b==c ? %d\n",a+b>c&&b==c);printf("!a||!c||b ? %d\n",!a||!c||b);printf("a||b+c&&b>c ? %d\n",a||b+c&&b>c);printf("a*b&&c+a ? %d\n\n",a*b&&c+a);printf("执行x=a<b||c++后,x=%d,a=%d,b=%d,c=%d\n",x=a<b||c++,a,b,c);printf("执行y=a>b&&c++后,y=%d,a=%d,b=%d,c=%d\n",y=a>b&&c++,a,b,c);printf("执行z=a||b++||c++后,z=%d,a=%d,b=%d,c=%d\n",z=a||b++||c++,a,b,c);return 0;}问题:(1)逻辑运算符包含哪几个? 它们的优先级如何?它的运算级别高于算术运算符、赋值运算符吗?(2)逻辑表达式的操作数、运算结果是什么?(3)什么是逻辑运算中“短路”现象?这会带来什么影响?3、(基础题以下程序的功能是:输入学生四门课程的成绩,然后根据要求构建相应的逻辑表达式,之后计算这些表达式的值并输出。
C 语言程序设计上机实验指导与习题参考答案仅供教师内部参考华南农业大学目录上机实验1实验1 C 语言程序初步1一实验目的1二实验内容1实验2 基本数据类型运算和表达式3一实验目的3二实验内容3实验3 基本输入与输出5一实验目的5二实验内容5实验4 选择结构程序设计4一实验目的4二实验内容4实验5 循环结构程序设计一9一实验目的9二实验内容9实验6 循环结构程序设计二15一实验目的15二实验内容15实验7 数组17一实验目的17二实验内容17实验8 字符数组的应用22一实验目的22二实验内容22实验9 函数的基本应用24 一实验目的24二实验内容24实验10 指针与结构体26一实验目的26二实验内容26*实验11 链表29一实验目的29二实验内容29*实验12 文件32一实验目的32二实验内容32上机实验实验1 C 语言程序初步一实验目的1了解所用的计算机系统的基本操作方法学会独立使用该系统2 了解在该系统上如何编辑编译连接和运行一个C 程序3 通过运行简单的C 程序初步了解C 程序的特点4 在教师的指导下学会使用JudgeOnline 实验系统二实验内容1 运行第一个C 程序[题目The first C Program]将下列程序输入TC 或VC编译连接和运行该程序void mainprintf "The first C Program\n"[具体操作步骤]以Turbo C 上的操作为例1Windows 进入后按照第一章中介绍的方法进入Turbo C2在编辑窗口中输入程序3保存程序取名为a1c4按照第一章中介绍的方法编译连接和运行程序2 在JudgeOnline 系统中提交实现了计算ab 功能的程序[题目1001计算ab]由键盘输入两个整数计算并输出两个整数的和实现该功能的程序如下void mainint a bscanf "dd" a b1 printf "d" a b1在程序编辑窗口中输入程序2保存程序取名为a2c3按照前二章中介绍的方法编译连接和运行程序4在程序运行过程中输入15 30↙↙表示输入回车符5 如果看到如下输出结果则表明1530 的结果正确如果得不到如下结果则需检查并更正程序456 按照第三章中介绍的方法进入JudgeOnline 实验系统7 显示题目列表点击题号为1001题名为计算ab的题目8 查看完题目要求后点击页面下端的sumbit 参照第二章提交程序的方法提交程序a2c9 查看评判结果如果得到accepted则该题通过否则返回第一步检查程序是否正确2实验2 基本数据类型运算和表达式一实验目的1掌握C 语言数据类型熟悉如何定义一个整型和实型的变量以及对它们赋值的方法2 掌握不同的类型数据之间赋值的规3 学会使用C 的有关算术运算符以及包含这些运算符的表达式特别是自加和自减-- 运算符的使用4 进一步熟悉C 程序的编辑编译连接和运行的过程二实验内容1 变量的定义[题目1117变量定义按要求完成程序]下面给出一个可以运行的程序但是缺少部分语句请按右边的提示补充完整缺少的语句void mainint a b 定义整型变量a 和bint i j 定义实型变量i 和ja 5b 6i 314 j iabprintf "a db di fj f\n" a b i j[具体操作步骤]1将代码补充完整2在TC 或VC上运行通过3在JudgeOnline 实验系统上提交2 赋值表达式与赋值语句[题目1118赋值表达式与赋值语句写出程序运行结果] 阅读下面程序写出运行结果void mainfloat aint b cchar d ea 35b ac 330d c3e \\printf "fddcc" abcde运行结果为35000003330J\[提示]赋值语句具有类型转换的功能但可能会改变数据3 基本运算[题目1119基本运算写出程序运行结果]阅读下面程序写出运行结果void mainint a b cfloat d 15 e fa 357b 1510c be 1510f d10printf "dddfff" abcdef运行结果为0211500000010000001500000[提示]除法分整除与普通除法之分4实验3 基本输入与输出一实验目的1熟练掌握putchargetcharprintf scanf 函数的使用方法2 掌握各种类型数据的输入输出的方法能正确使用各种格式转换符二实验内容[题目1126字符的输入与输出]编程实现由键盘输入一个字符后在屏幕上输出该字符[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]a↙↙[正确输出] [正确输出]a参考程序include "stdioh"mainchar chch getcharputchar ch[题目1127计算加法]编程实现由键盘输入一个加法式输出正确的结果两个加数均为整数[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]1020 ↙- 1560↙[正确输出] [正确输出]30 45参考程序include "stdioh"mainint a bscanf "dcd" abprintf "d" ab[题目1014求圆面积]由键盘输入圆半径r 请计算该圆的面积注取314159结果保留两位小数位另外程序只要能对r 在0 到10000 范围的情况输出正确答案即可[第一组自测数据] [键盘输入]5652 ↙[键盘输入][正确输出] 112↙1335502 [正确输出][第二组自测数据] 39408[提示]结果保留两位小数可采用printf 函数的格式控制字符来实现参考程序include "stdioh"mainfloat arearscanf "f"rarea 314159rrprintf "02f"area2[题目1015计算摄氏温度值]从键盘输入一个华氏温度值要求按格式输出其对应的摄氏温度值精确到小数点后两位数学公式描述为5C F 329[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]100↙100↙[正确输出] [正确输出]3778 3778[提示]注意公式中的除为普通除法参考程序includevoid mainfloat fcscanf "f"fc 509 f-32printf "2f"c3实验4 选择结构程序设计一实验目的1了解C 语言表示逻辑的方法以0 代表假以非0 代表真2 学会正确使用逻辑运算符和逻辑表达式3 熟练掌握if 语句和switch 语句4 结合程序掌握一些简单的算法二实验内容[题目1120判断点是否在圆]由键盘输入一个点的坐标要求编程判断这个点是否在单位圆上点在圆上输出Y 不在圆上输出N 使用小数点后3 位精度进行判断[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]07070707 ↙8>0505↙[正确输出] [正确输出]Y N[提示] 1平面上的点与圆的关系分为在圆内在圆上在圆外三种本题要求判断是否在圆上2判断两实数相等采用判断这两实数的差的绝对值小于规定误差精度本题为0001 的方法实现参考程序include "stdioh"include "mathh"void mainfloat abscanf "ff"abif fabs aabb-1 1e-3printf "Y\n"else printf "N\n"[题目1017求数的位数]由键盘输入一个不多于9 位的正整数要求输出它是几位数[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]349213 ↙10000↙[正确输出] [正确输出]6 5[提示]划定一位数二位数九位数的范围后用if else if else 语句实现判断4参考程序mainint nplacescanf "ld"nif n 99999999 place 9else if n 9999999 place 8else if n 999999 place 7else if n 99999 place 6else if n 9999 place 5else if n 999 place 4else if n 99 place 3else if n 9 place 2else place 1printf "ld\n"place[题目1018数的排序]由键盘输入三个整数a b c按从小到大的顺序输出这三个数[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]654590 ↙963 ↙[正确输出] [正确输出]456590 369参考程序includemainint abctscanf "ddd"abcif a b t aa bb tif a c t aa cc tif b c t bb cc tprintf "ddd"abc[题目1016字符变换]由键盘输入5 个字符将其中的大写字母变成小写其它类型的字符不变并按输入顺序逐个输出[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]ApPLe ↙aB 5 ↙[正确输出] [正确输出]apple ab 5[提示]下面代码实现由键盘读入一个字符并按题意处理后输出char aa getcharif a A a Z a a32putchar a5现在题目要求处理5 个字符怎么做呢请自己思考参考程序includemainchar abcdescanf "ccccc"abcdeif a Za A a a32if b Zb A b b32if c Zc A c c32if d Zd A d d32if e Ze A e e32printf "ccccc"abcde[题目1019数的整除]由键盘输入5 个整数逐个判断它们能否被27 整除能的输出YES不能的输出NO 注意输出时一个判断结果占一行5 个数的判断共占5 行[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]8 27 17577 325 54 ↙8 27 17577 325 54 ↙[正确输出] [正确输出]NO NOYES YESYES YESNO NOYES YES[提示]整除即除得余数为0参考程序include "stdioh"mainint abcdescanf "d d d d d"abcdeif a27 0 printf "YES\n" else printf "NO\n"if b27 0 printf "YES\n" else printf "NO\n"if c27 0 printf "YES\n" else printf "NO\n"if d27 0 printf "YES\n" else printf "NO\n"if e27 0 printf "YES\n" else printf "NO\n"[题目1020正负奇偶判断]由键盘输入非零整数x 判断该数正负正数输出positive 负数输出negative 接着判断该数的奇偶性奇数输出odd偶数输出even[第一组自测数据] negative[键盘输入] odd-43 ↙[第二组自测数据][正确输出] [键盘输入]698 ↙positive[正确输出] even参考程序include "stdioh"mainint nscanf "d"nif n 0 printf "negative\n"else printf "positive\n"if n2 0 printf "even\n"else printf "odd\n"[题目1023简单计算器]下面程序是实现一个简单的运算器保留两位小数点如果由键盘输入1050计算机可以输出结果6000如果输入8 *6计算机输出4800如果输入204 计算机输出500 如果输入8-6计算机输出200 请在空处填上适当的代码运行通过后并提交include "stdioh"void mainfloat abcscanf "fcf"switch opcasecase - _case _case __default printf "error"returnprintf "result " c[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]452↙501-23 ↙[正确输出] [正确输出]90 27107参考程序includeint mainchar opscanf "fcf"aopbswitch opcase c abbreakcase -c a-bbreakcase c abbreakcase c abbreakdefaultprintf "error"breakprintf "result 2f"c8实验5 循环结构程序设计一一实验目的1熟悉掌握用while 语句do-while 语句和for 语句实现循环的方法2 掌握在程序设计中用循环实现一些常用算法如穷举迭代递推等二实验内容[题目1024计算阶乘]输入正整数n计算n 结果用长整型数表示注n 123n[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]5 ↙8 ↙[正确输出] [正确输出]120 40320参考程序includemainlong in 1ascanf "ld"afor i 1i ai n niprintf "ld\n"n[题目1025计算数列和]有数列1357911现要求由键盘输入n计算输出该数列的前n 项和[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]2 ↙ 5 ↙[正确输出] [正确输出]4 259参考程序includemainlong nsum 0it 1scanf "ld"nfor i 1i nisum sumtt t2printf "ld\n"sum或includemainlong nsumscanf "ld"nsum nnprintf "ld"sum注评判系统不对程序实现细节进行分析只对运行结果进行评测[题目1026 加一行字符中的数字]由键盘输入一行字符总字符个数从1 个至80 个均有可能以回车符表示结束将其中每个数字字符所代表的数值累加起来输出结果[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]abc123↙A6H7T65↙[正确输出] [正确输出]6 24[提示] 1可以使用下面程序段逐个读入键盘输入的一行字符char chwhile ch getchar \n2 数字字符转为对应的数值可用a ch-0参考程序includemainchar cint s 0awhile c getchar \nif c 0c 9a c-48s saprintf "d"s10[题目1029求最大公约数]由键盘输入两个正整数mn mn 用长整数表示计算它们的最大公约数[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]1624↙1725↙[正确输出] [正确输出]8 1[提示]公约数是既能整除m 又能整除n 的数题目要求满足这一条件的最大的一个参考程序includemainlong rmntempscanf "ldld"mnwhile m 0r nmn mm rprintf "ld\n"n或includemainlong mntisscanf "ldld"mnt m nnmfor i t-1i 1i--if mi 0ni 0s i breakprintf "d"s[题目1030字符变换]由键盘输入一个句子总字符个数从1 个至80 个均有可能以回车符表示结束将其中的大写字符变成小写其它类型的字符不变最后输出变换后的句子[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]How Are You ↙ThiS IS My fIrSt C ProgrAm ↙[正确输出] [正确输出]how are you this is my first c program11参考程序includemainchar cwhile c getchar \nif c Ac Zc c32putchar c[题目1037计算数列和]有数列编程实现由键盘输入n计算输出数列前n 项和结果保留四位小数[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]20 ↙30 ↙[正确输出] [正确输出]326603 880403参考程序includemainint itnfloat a 2b 1s 0scanf "d"nfor i 1i nis sabt aa abb tprintf "4f\n"s[题目1044输出最小值]从键盘输入十个整数输出最小值[ 自测数据][键盘输入]12 45 76 87 5 87 43 55 99 21 ↙[正确输出]512参考程序include "stdioh"mainint itminscanf "d" minfor i 1i 10iscanf "d" tif t min min tprintf "d\n"min*[题目1031统计单词个数]由键盘输入一个句子总字符个数从1 个至80 个均有可能以回车符表示结束以空格分割单词要求输出单词的个数[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]How Are You ↙There are many students and many[正确输出] trees↙3 [正确输出]7参考程序includemainint inum 0word 0char cfor i 0 c getchar \niif c word 0else if word 0word 1numprintf "d"num*[题目1042百万富翁]一个百万富翁遇到一个陌生人陌生人找他谈了一个换钱的计划该计划如下我每天给你m 元而你第一天只需给我一分钱第二天我仍给你m 元你给我2 分钱第三天我仍给你m 元你给我4分钱依次类推你每天给我的钱是前一天的两倍直到一个月38 天百万富翁很高兴欣接受这个契约现要求编写一个程序由键盘输入m计算多少天后百万富翁开始亏钱[第一组自测数据] 18[键盘输入] [第二组自测数据]100↙[键盘输入][正确输出] 10000↙13[正确输出] 25参考程序includeincludemainint nmiscanf "d"mfor i 1i 38iif 001 pow 2i-1 -1 -im 0 breakprintf "d"i-114实验6 循环结构程序设计二一实验目的1进一步熟悉掌握用while 语句do-while 语句和for 语句实现循环的方法2 掌握在程序设计中使用多重循环二实验内容[题目1028求素数]输出2 到200 之间包括2 200 的所有素数注要求1 行1 个素数按由小到大的顺序输出[提示]采用双重循环外层循环产生2 到200 之间的数内层循环对数进行判断是否为素数参考程序includeincludemainint mkifor m 2m 200mk sqrt mfor i 2i kiif mi 0 breakif i k printf "d\n"m[题目1035打印菱形]由键盘输入正数n要求输出2n1 行的菱形图案要求菱形左边紧靠屏幕左边[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]3 ↙ 2 ↙[正确输出] [正确输出]15参考程序include "stdioh"include "mathh"mainint nijkscanf "d"nfor i 1i 2n1ik abs n1-ifor j 1j kj printf " "for j 1j 2n1-2kj printf ""printf "\n"[题目1038打印图案]由键盘输入正数n要求输出中间数字为n 的菱形图案要求菱形左边紧靠屏幕左边[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]4 ↙ 3[正确输出] [正确输出]1 1121 121 12321 12321 1234321 121 12321 1 1211参考程序includeincludemainint nijkhscanf "d"nfor i -n1i n-1ifor j 0j abs i jprintf " "for k 1k n-abs i k printf "d"kfor h n-abs i -1h 1h-- printf "d"hprintf "\n"16实验7 数组一实验目的1掌握一维数组和二维数组的定义赋值和输入输出方法2 掌握与数组有关的算法二实验内容[题目1039倒序]由键盘输入10 个整数倒序输出数字间由一个空格分隔[ 自测数据][键盘输入]70 5 14 20 19 2 99 67 13 66 ↙[正确输出]66 13 67 99 2 19 20 14 5 70参考程序includemainint a [10]int ifor i 0i 10i scanf "d"a[i]for i 9i 0i-- printf "d\n"a[i][题目1040统计不同数字个数]由键盘输入20 个整数统计不同数字的个数[ 自测数据][键盘输入]70 5 14 22 19 2 99 67 13 66 5 93 44 38 22 11 39 22 33 11↙[正确输出]16[提示]上述答案中因为5 有1 个重复数字11 有1 个重复数字22 有2 个重复数字故不同数字有16个分别是70 5 14 22 19 2 99 67 13 66 93 44 38 11 39 3317参考程序include"stdioh"mainint a [20]int itp 0for i 0i 20iscanf "d"a[i]for t 0t itif a[t] a [i] breakif t ipprintf "d"p[题目1062打印矩阵]由键盘输入一个3×4 的矩阵要求输出它的转置矩阵[ 自测数据][键盘输入] [正确输出] 1 6 9 3 1 1 11 1 02 6 1 91 9 8 9 9 0 83 2 9参考程序includemainint a [3][4]b[4][3]ijfor i 0i 3ifor j 0j 4jscanf "d"a[i][j]b[j][i] a [i][j]for i 0i 4ifor j 0j 3jprintf "d "b[i][j]printf "\n"*[题目1047冒泡排序]由键盘输入10 个数用冒泡法对10 个数从小到大排序并按格式要求输出代码如下请填充完整数字间由一个空格分隔incude "stdioh"mainint a[10] i j t18for i 0i 10iscanf "d"___________for ___________for j 0j ____jif ______________________for i 0i 10iprintf "d "a[i][ 自测数据][键盘输入]70 5 14 20 19 2 99 67 13 66 ↙[正确输出]2 5 13 14 19 20 66 67 70 99参考程序includemainint a [10]int ijtfor i 0i 10iscanf "d"a[i]for i 0i 9ifor j 0j 9-ijif a[j] a [j1]t a [j] a [j] a[j1] a[j1] tfor i 0i 10iprintf "d "a[i]*[题目1046计算高精度加法]由键盘输入两个位数很长的整数一行一个数每个数最长不超过80 位试计算并输出这两个数的和[ 自测数据][键盘输入]1XXXXXXXXXX23456789 ↙987654321098765 ↙[正确输出]1XXXXXXXXXX4455555419参考程序include "stdioh"include "stringh"mainint a [100] 0 b[100] 0 c[100] 0char s[101]int i 0n1 0n2 0 0e 0gets sn1 strlen sfor i n1-1i 0i-- a[n1-1-i] s[i]-0gets sn2 strlen sfor i n2-1i 0i-- b[n2-1-i] s[i]-0if n1 n2 n1else n2for i 0i ic[i] a[i]b[i]e 10e a[i]b[i]e 10if c[] 0 printf "d"c[]for i -1i 0i--printf "d"c[i]*[题目找矩阵中的鞍点]由键盘输入一个3 ×4 3 行4 列的矩阵输出矩阵中的鞍点即在矩阵行中最大列中最小的数若没有鞍点输出NO 字样[ 自测数据][键盘输入]87 90 110 98 ↙70 97 210 65 ↙98 45 120 30 ↙[正确输出]11020参考程序includemainint ijka[3][4]jflagfor i 0i 3ifor j 0j 4jscanf "d"a[i][j] for i 0i 3ia [i][0]j 0for j 0j 4jif a[i][j]a [i][j] j jflag 1for k 0k 3kif a [k][j]flag 0 breakif flagprintf "d" breakif flagprintf "NO"21实验8 字符数组的应用一实验目的1掌握字符数组和字符串函数的使用2 掌握与字符串处理有关的算法二实验内容[题目1121定义存贮字符串的字符数组]在下面程序中填充定义字符数组的语句使程序完整include "stringh"void mainchar s[80] 定义字符数组sstrcpy s "abcdefghij klmn"printf "s" s参考程序[题目1123字符串的输入与输出]下面程序实现从键盘读入字符串后输出到屏幕请填充必要的语句include "stdioh"void mainchar s[50]printf "Whats your name"gets s 由键盘读入字符串printf "Your name is "printf "s" s 打印字符串参考程序[题目1122字符串的合并]从键盘输入3 个字符串每个字符串以回车符做为结束标志将3 个字符串以输入先后顺序合并到字符串s 中请填空使用程序完整include "stdioh"include "stringh"mainchar s[100] ""char a [30]gets a strcat s a22gets a strcat s agets a strcat s a可以写多行代码printf "s" s[ 自测数据][键盘输入] [正确输出]123 123abc456abc456参考程序[题目1050寻找字符串]由键盘输入两个字符串假设第一个字符串必包含第二个字符串如第一个字符串为ABCDEF第二个为CDE则CDE 包含在ABCDEF 中现要求编程输出第二字符串在第一行字符串中出现的位置如果第二个字符串在第一个字符串中出现多次则以最前出现的为准[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]ABCDEFG ↙hellhello ↙DE ↙hello ↙[正确输出] [正确输出]4 5[提示]方法1建立双重循环外层循环变量指示第一个串的查找起始位置内层循环从起始位置开始判断第二个字符中是否出现在此处方法2 使用字符串函数strstr参考程序include "stdioh"mainint ijchar a [80] b[80]gets a gets bfor i 0a[i] \0ifor j 0b[j] \0jif a[ij] b[j] breakif b[j] \0 breakif a[i] \0 printf "d"i1else printf "Not Found"23实验9 函数的基本应用一实验目的1掌握定义函数的方法2 掌握函数实参与参的对应关系以及值传递的方式3 掌握函数的嵌套调用和递归调用的方法4 掌握全局变量和局部变量动态变量静态变量的概念和使用方法二实验内容[题目1059函数定义]下面是使用辗转相除法求最大公约数的程序请补充完整程序中函数的定义与调用include "stdioh"int f int m int nint rwhile r mn 0m nn rreturn nmainint a b nscanf "dd" a bprintf "d\n" f a b[题目1083编写函数计算阶乘]下面程序实现由键盘读入整数n计算并输出n 请补充完整计算阶乘的函数long fanc int along in 1for i 1i ai n nireturn nvoid mainint nscanf "d" n24printf "ld" fanc n[题目1124函数中的变量]写出下面程序的运行结果int f1 int xstatic int z 3y 0yzreturn xyzmainint a 1kfor k 0k 3k printf "4d"f1 a 程序运行结果为6 8 10*[题目1084编写递归调用函数实现十进制数转二进制数]下面程序实现由键盘输入一个正整数不大于100000000 输出其对应的二进制数原码表示请填空include "stdioh"void fun int iif i 1fun i2printf "d" i2mainint nscanf "d" nfun n25实验10 指针与结构体一实验目的1通过实验进一步掌握指针的概念会定义和使用指针变量2 能正确使用数组的指针和指向数组的指针变量3 能正确使用字符串的指针和指向字符中的指针变量4 掌握结构体类型变量的定义和使用二实验内容[题目1091交换两数由大到小输出]下面程序交换两数使两数由大到小输出请填空include "stdioh"void swap int p1 int p2int temptemp p1p1 p2p2 tempint mainint ab int papbscanf "dd" a bpa a pb bif a b swap pa pbprintf "d d\n"ab[题目1065数组中的指针]设有如下数组定义int a[3][4] 1357 9111315 17192123计算下面各项的值设数组a 的首地址为2000一个int 类型数占四个字节注意地址则输出地址变量则输出变量值要求一行一个答案不允许多余空行及空格1a[2][1] 2 a[1] 3 a 4 a 15 a 16 a 17 a[2] 18 a 1 19 a2 226参考程序include "stdioh"mainprintf "19\n"printf "2016\n"printf "2000\n"printf "2016\n"printf "2004\n"printf "2016\n"printf "2036\n"printf "2020\n"printf "21"[题目1092函数实现求字符串长度]下面程序以指针方式传递参数由函数实现求字符串长度请填空完成include "stdioh"include "stringh"int f char preturn strlen pint mainchar s[80]int iscanf "s" si f sprintf "d" i[题目1125定义结构体类型]要求定义一个名为student 的结构体类型其包含如下成员1字符数组name 最多可存放10 个字符2 字符变量sex用于记录性别3 整数类型变量num用于记录学号4 float 类型变量score 用于记录成绩并使下列代码完整定义结构体类型struct studentchar name[20]char sex。
实验四 选择结构程序设计(4学时)实验前必须做的操作.........——..新建文件夹:......首先在各自对应的计算机ncre(k:)盘上对应座位号文件夹内新建一个文件夹,文件夹的名字为“班级+学号的后两位+姓名”,如座位号为K02,航海1111班、学号后两位是02的、姓名为“张强”的同学,则其对应的文件夹名字是:航海111102张强。
然后在刚才建好的文件夹里面再建立一个文件夹,文件夹为“实验4”。
【实验目的】1、 理解C 语言表示逻辑量的方法(以0代表“假”,以非0代表“真”)。
2、 进一步巩固printf()和scanf()函数的使用方法。
3、 学会正确使用关系运算符和关系表达式、逻辑运算符和逻辑表达式。
4、 掌握if 语句三种形式的用法。
5、 掌握switch 、break 语句的用法。
6、 熟悉选择结构程序段中语句的执行过程。
7、 学会设计分支结构的程序,结合程序掌握一些基本的算法。
8、 巩固利用VC++对C 程序的查错方法,进一步提高修改程序错误的能力。
9、 学习跟踪调试程序,掌握简单的单步调试方法。
【实验内容】[实验任务一]:程序的跟踪调试和变量值的监视练习(可不上交、但必须操作、理解,掌握其方法) 程序跟踪调试实例4-1:程序跟踪调试和变量值的监视示例(请仔细按以下各步骤进行操作):输入x ,计算并输出下列分段函数 f(x) 的值(保留1位小数)。
(需要存盘)⎪⎩⎪⎨⎧=≠=0001)(x x x x f10.0f(10.00) = 0.1【操作步骤】:(1)输入源程序,并以error4_1.c 文件名最终保存在实验4文件夹里,然后执行“编译/Build ”—>“编译/Compile ”,出现第一个编译错误是:双击该出错信息,箭头指向else 所在行,出错信息指出在else 前缺少分号。
在y = 1 / x 后面补上分号后,重新编译,新出现的第一个出错信息(警告信息):双击该错误信息,箭头指向scanf("%f", x);所在行,出错原因是x 的前面少了&。
在x 前面补上&后,重新编译并连接,均正确。
(2)执行“工具”—>“定制”,选择“调试”(如图4.1所示),出现调试工具栏(如图4.2所示),然后关闭“定制”对话框。
图 4.1 选择工具栏图4.2调试工具栏(3)调试开始,单击调试工具栏中的单步执行(Step Over(F10)),每次执行一行(如图4.3所示),编辑窗口中的箭头指向行表示程序将要运行该行。
图4.3中列出了变量窗口(Variables Window) 和观察窗口(Watch Window ),在Watch 窗口中还可以改变变量的值。
图4.3 程序调试开始(4)鼠标单击三次,程序执行到输入这一行(如图4.4所示),同时运行窗口(如图4.5所示)显示提示符“input x:”(注意:此时将要执行但还没有执行scanf(“%f ”, &x);语句),继续单击,就可以在运行窗口输入x 的值10(如图4.6所示),按回车键Enter 后,箭头指向了“if(x!=0)”这一行(如图4.7所示),在变量窗口可以看到变量x 的值是10.0000,变量x 的地址(&x)是0x0012ff7c 。
图4.4 程序单步调试变量窗口 观察窗口显示或隐藏观察窗口 显示或隐藏变量窗口图4.5 运行窗口图4.6 在运行窗口输入变量x的值10图4.7 程序单步调试,显示变量x的值和变量x的地址(5)继续单击二次,箭头指向了“else”这一行(如图4.8所示),在变量窗口可以看到变量y的值是0.100000。
图4.8 程序单步调试,显示变量y的值(6)继续单击二次(如图4.9所示),运行窗口显示运行结果(如图4.10所示),符合题目的要求。
图4.9 程序单步调试到最后一行图4.10 在运行窗口显示调试后的最后结果(7)单击终止调试按钮(Stop Debugging(Shaft+F5)),程序调试结束。
程序跟踪调试实例4-2:单步跟踪下面的程序,每执行完一条语句就观察各变量的值。
将程序以debug4_1.c文件名最终保存在实验4文件夹里。
(需要存盘)程序跟踪调试实例4-3:单步跟踪下面的程序,每执行完一条语句就观察各变量的值,调试完后分析程序的执行过程及功能。
将程序以debug4_2.c文件名最终保存在实验4文件夹里。
(需要存盘)?(1)先直接编译、连接、运行程序,若输入123,则输出什么?输入987、702呢?你能根据输出分析出程序的功能吗??(2)知道程序的功能后,请分析x1、x2、x3代表什么?为什么?通过单步跟踪程序来找出x1、x2、x3的值,是否可以分析出它们代表什么?如何利用运算符“/”和“%”来求整数各位上的数字?程序跟踪调试实例4-4:)以下程序实现:判断用户输入的数是奇数还是偶数,并输出相应的信息。
通过跟踪程序、分析程序是如何完成此功能的?将程序以debug4_3.c文件名最终保存在实验4文件夹里。
(注:单词中文对照 remainder—余数、even—偶数、odd—奇数)运行时,在提示:Enter your number to be tested.下输入:2455输出什么?再次运行时,在提示:Enter your number to be tested. 下输入:1210输出什么?同学们不妨再输入一些数据试一试!程序跟踪调试实例4-5:通过跟踪程序、分析程序执行过程和执行结果。
将程序以debug4_4.c文件名最终保存在实验4文件夹里。
(需要存盘)(运行5次,分别输入:1、2、3、4、8。
分析每次程序的执行过程(执行路线))[实验任务二]:通过编写简单的程序达到进一步巩固printf( )函数使用方法的目的。
编程实例4-0:若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=ˊaˊ,c2=ˊbˊ,想得到以下的输出格式和结果,请写出程序(包括定义变量类型和设计输出)。
要求输出的结果如下,同时以文件名output.c最终保存在实验4文件夹里。
(需要存盘)【说明】:①如上所示的每一个带颜色的下划线,即每一个蓝色的或红色的下划线均代表一个空格;②该题主要考察printf()函数的使用方法;printf()函数括号里面由两部分组成:其中一部分是由一对双引号括起来的格式化符号串.............;另一部分是参量表...。
其中格式化符号串又由两部分组成:即不以%开头的普通字符串和以%开头后跟类似d、c 等的规定字符串。
printf()函数括号里面是否有参量表取决于双引号括起来的格式化符号串部分是否有以%开头后跟类似d、c(除%以外,因为printf(“%%”)的含义是输出一个%)等的规定字符串,并且参量表的个数必须与格式化符号串中%的个数一致。
③根据题意,程序中所涉及到的变量应定义成如下形式:④输出结果为c1='a'or97(ASCII)的printf()语句格式为:在该条语句中:(1)双引号括起来的格式化符号串中,属于正常字符的有c1=\'\' or (ASCII)\n,其中\’和\n属于转义字符;(2)%c和%d是两个规定的符号串,所以参量表有两个;(3)若有c1=ˊaˊ;则printf(“c1=%c”,c1)的输出结果是 c1=a而不是c1=’a’;[实验任务三]:通过编写简单的程序达到掌握if三种基本结构的目的。
编程实例4-1:简单if语句的用法编写并调试程序:从键盘输入一个任意大小的实数x,如果满足如下条件:-29.5≤x≤29.5则输出x及其绝对值。
并以文件名simple_if.c最终保存在实验4文件夹里。
(需要存盘)【提示】:为正确表示条件,C语言中将数学不等式-29.5≤x≤29.5表示为如下逻辑表达式:x>=-29.5&&x<=29.5 或 (x>=-29.5)&&(x<=29.5)也可以使用x的绝对值形式表示,即 fabs(x)<=29.5注意:要使用fabs(x)函数,必须在程序的前面加上#include <math.h>预处理包含命令。
fabs(x)函数的含义是:对浮点数x求绝对值。
编程实例4-2:if-else语句的用法修改练习1的程序,使得x满足-29.5≤x≤29.5时输出x及其绝对值,否则只输出x。
并以文件名if_else.c最终保存在实验4文件夹里。
(需要存盘)编程实例4-3:if-else if 语句的用法编写一个能够进行加减法运算的程序,要求:从键盘任意输入两个实数,然后输入一个运算符,当运算符为“+”时对两个数进行加法运算,为“-”时对两个数进行减法运算,其它符号时,只显示输入的符号不进行运算。
并以文件名if_else_if.c最终保存在实验4文件夹里。
(需要存盘)[实验任务四]:补充完整程序,了解如何用if语句实现对若干个任意数进行排序。
程序填空实例4-1:本程序用来输入4个整数,按从大到小的顺序输出。
(需要存盘)将完整的程序以文件名sort.c保存在实验4文件夹里。
[实验任务五]:学会设计分支结构的程序,结合程序掌握一些基本的算法。
设计程序实例4-1:1900年元旦是星期一,问1900年7月1日是星期几,将编写好的程序以文件名week.c 最终保存在实验4文件夹里。
(需要存盘)【提示】:①程序中应首先判断1900年是闰年还是平年;②想要求出1900年7月1日是星期几,应该计算出1900年1月1日到1900年7月1日之间相差了多少天;然后再用相差的天数对7进行模运算,即days%7。
设计程序实例4-2:从键盘输入一个不多于5位的正整数,要求:①求出它是几位数;②分别输出每一位数字;③按逆序输出各位数字,例如原数为321,应输出123。
并将编写好的程序以文件名fivenum.c 最终保存在实验4文件夹里。
(需要存盘)【说明】:应准备以下测试数据:(1)要处理的数为1位正整数;(2)要处理的数为2位正整数;(3)要处理的数为3位正整数;(4)要处理的数为4位正整数;(5)要处理的数为5位正整数;除此之外,程序还应当对不合法的输入作必要的处理,例如:(1)输入负数;(2)输入的数超过5位(如123456)。
【提示】:①因为从键盘输入的数(假设是num)可能是五位数,而五位数的最大值为99999,它超过了无符号整数的最大值65535,所以应该定义num的类型为long int;②可以利用if … GOTO语句来检查输入的数字是否为5位。
参考代码如下:loop: printf("please input a num form 0-99999:\n");scanf("%ld", &num);if(num<0||num>99999){printf("the number is error ");goto loop; /*利用GOTO语句来检查输入的数字是否为5位*/}③将一个五位数num拆分成每一位数字的方法是:a=(int)(m/10000); /* a 代表万位数字 */b=(int)(m/1000%10); /* b 代表千位数字 */c=(int)(m/100%10); /* c 代表百位数字 */d=(int)(m/10%10); /* d 代表十位数字 */e=(int)(m%10); /* e 代表个位数字 */设计程序实例4-3:编写程序,输入三角形三边a、b、c,判断a、b、c能否构成三角形,若不能,则输出相应的信息,若能则判断组成的是等边、等腰、直角还是普通三角形。