《C语言程序设计》课程实验报告实验名称选择结构程序设计学号_姓名班别实验日期:年月日实验报告日期:年月日指导老师:实验地点:成绩:评语:≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡实验目的和要求目的:了解C语言逻辑量的表示方法;学会正确使用逻辑运算符和逻辑表达式;熟练掌握if语句(包括if语句的嵌套)和switch语句的使用方法;结合程序掌握一些简单的算法;进一步学习程序调试的方法。实验环境硬件环境:分辨率至少在1024*768像素之上的显示器;P-III及其兼容处理器,或更高型号;处理器速度至少600MHz,推荐1GHz或更高;内存至少512MB,推荐1GB或更大;2G以上硬盘空间。软件环境:安装windows操作系统和TC(或VC++)软件。实验重点及难点重点:式关系、逻辑运算符及其表达式的语法形;if语句;switch语句。难点:关系与逻辑运算符表达式的结果判定;if语句嵌套的层次判定;程序中使用break语句运行结果的判定。实验过程一、相关知识1.相关知识1.C语言有两种选择语句:(1)if语句,用来实现两个分支的选择结构;(2)switch语句,用来实现多分支的选择结构。2.if语句的一般形式:if(表达式)语句1【else语句2】3.根据if语句的一般形式,if语句可以写成不同的形式,最常用的三种如下:(1)if(表达式)语句1(没有else子聚部分)(2)if(表达式)(有else子句部分)语句1else语句2(3)if(表达式1)语句1(在else部分又嵌套了多层的if语句)elseif(表达式2)语句2elseif(表达式3)语句3::elseif(表达式m)语句melse语句m+14.(1)整个if语句可以写在一行上,也可以写在多行上,但是为了程序的清晰,提倡写成锯齿形式。(2)“语句1”、“语句2”……“语句m”等是if语句中的“内嵌语句”。它们是if语句中的一部分。没个内嵌语句的末尾都应当有分号,因为是分号是语句中的必不可少部分。(3)if语句无论写在几行上,都是一个整体,属于同一个语句。(4)“语句1“、”语句2“、……、”语句m“可以是一个简单的语句,也可以是一个包括多个语句的复合语句。(5)内嵌语句也可以是一个if语句。(6)在if语句中要对给定的条件进行检查,判断所给的条件是否成立。5.关系运算符优先次序(1)前四种关系运算符(,=,,=)的优先级别相同,后两种也相同。前四种高于后两种。(2)关系运算符的优先级低于算术运算符。(3)关系运算符的优先级高于赋值运算符。6.关系表达式:用关系运算符将两个数值表达式连接起来的式子,称为关系表达式。在C语言的逻辑运算中,以“1“代表”真“,以”0“代表”假“。7.逻辑运算符及其优先次序。C逻辑运算及其含义运算符含义举例说明&&逻辑与a&&b如果a和b为都真,则结果为真,否则为假。||逻辑或A||b如果a和b有一个以上为真,则结果为真,二者都为假时,结果为假。!逻辑非!a如果a为假,则!a为真,如果a为真,则!a为假。(1)!(非)→&&(与)→||(或),即“!“为三者中最高的。(2)逻辑运算符中的“&&“和”!“低于关系运算符,”!“高于算术运算符。8.语句n+1}说明:(1)switch后面括号内的“表达式”,其值的类型应为整数类型(包括字符型)。(2)switch下面的花括号内是一个复合语句。(3)可以没有default标号,此时如果没有与switch表达式相匹配的case常量,则不执行任何语句,流程转到switch语句的下一个语句。(4)各个case标号出现次序不影响执行结果。(5)每一个case常量必须互不相同;否则就会出现互相矛盾的现象(对switch表达式的同一个值,有两种或多种执行方案)。(6)case标号只起标记的作用。(注意:一般情况下,在执行一个case子句后,应当用break语句使流程跳出switch结构,即终止switch语句的执行。最后一个case子句(今为default子句)中可不必加break语句,因为流程已到了switch结构的结束处。)(7)在case子句中虽然包含了一个以上执行语句,但是可以不必用花括号括起来,会自动顺序执行本case标号后面的语句。加上花括号也可以。(8)多个case标号可以共用一组执行语句。二、实验内容:1.有一个函数:x(x1)y=2x-1(1=x10)3x-11(x=10)编程序,用scanf()函数输入x的值,输出y相应的值;2.从键盘输入一个小于1000的正数,要求输出它的平方根(若平方根不是整数,则输出整数部分)。在输入数据后先对其进行检查是否小于1000,若不是则重新输入;3.给出一个百分制成绩,要求输出成绩等级A,B,C,D,E。其中90分以上为A等,80--89为B等,70—79为C等,60—69为D等,0—59为E等。要求用switch语句实现。三、实验过程1.有一个函数:x(x1)y=2x-1(1=x10)3x-11(x=10)编程序,用scanf()函数输入x的值,输出y相应的值按题目要求编写以下程序:#includestdio.hmain(){intx,y;scanf(%d,&x);if(x1)y=x;elseif(x=1&&x10)y=2*x-1;elsey=3*x-11;printf(y=%d\n,y);}输出的结果截图如下:(1)(2)(3)2.从键盘输入一个小于1000的正数,要求输出它的平方根(若平方根不是整数,则输出整数部分)。在输入数据后先对其进行检查是否小于1000,若不是则重新输入。按题目要求输入以下程序:#includestdio.h#includemath.hmain(){inti,k;scanf(%d,&i);if(i=1000)printf(输入的数据有误,请重新输入\n);scanf(%d,&i);k=sqrt(i);printf(%d的平方根的整数部分是%d\n,i,k);}则输出结果如下:3.给出一个百分制成绩,要求输出成绩等级A,B,C,D,E。其中90分以上为A等,80--89为B等,70—79为C等,60—69为D等,0—59为E等。要求用switch语句实现。调试通过的程序清单如下:#includestdio.hmain(){doublegrade;printf(pleaseinputgrade:);scanf(%lf,&grade);switch((int)(grade/10)){case10:printf(score='A');break;case9:printf(score='A');break;case8:printf(score='B');break;case7:printf(score='C');break;case6:printf(score='D');break;default:printf(score='E');}}调试通过的运行结果:(1)(2)四、实验结果及分析通过这次实验,我学会了了解C语言表示逻辑量的方法(以0代表“假”,非0代表“真“)学会正确使用逻辑运算符和逻辑表达式;能熟练掌握if语句和switch语句;能结合程序掌握一些简单的算法。