c语言实验指导书全稿 (1).doc_第1页
c语言实验指导书全稿 (1).doc_第2页
c语言实验指导书全稿 (1).doc_第3页
c语言实验指导书全稿 (1).doc_第4页
c语言实验指导书全稿 (1).doc_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序设计实验指导书目 录实验一 Turbo c 集成开发环境的使用2实验二 数据类型、运算符与表达式14实验三 数据的输入、输出19实验四 选择结构程序设计24实验五 循环语句31实验六 数组37实验七 函 数45实验八 指针53实验九 结构体与共用体59实验十 位运算与文件操作65附录一、C语言上机考试样题71附录二、重庆市二级C考试样题73附录三、学C语言常犯的错误74参考文献79- 80 -实验一 Turbo c 集成开发环境的使用一、实验目的1. 掌握Turbo C 集成环境的使用,能将一个简单的C语言源程序打开、存盘、编译、运行并查看运行结果。2. 通过运行简单的C程序,初步了解C源程序的特点。二、实验指导Turbo C是一个集程序编辑、编译、连接、调试为一体的C语言程序开发软件,我们通常称之为IDE(Integrated Development Environment), TC IDE就是TC集成开发环境,另外如VC IDE是指VC的集成开发环境。本次实验将要学习如何使用该集成开发软件的使用。1. Turbo C3.0的安装目前下载的TC2,TC3按安装分类大概有两种版本:一是通过install安装,二是直接解压后建立TC.EXE的快捷方式,在WINDOWS下双击即可运行(DOS下直接运行TC.EXE)。下面介绍第一种情况的安装过程: 下载得到Turbo C3.0的文件,解压在某个目录下,现假设解压在D盘tc3目录下,该目录下即为安装TC3.0所需的文件,如图1.1所示图1.1 运行TC3目录下的安装文件install.exe,出现图1.2的界面图1.2 按回车进入界面如图1.3,输入安装文件所在的驱动器,默认为A驱即软驱,现应输入D,回车后选择安装文件所在的目录TC3,如图1.4图1.3图1.4 选择完安装文件的目录后确定软件安装的目的盘符及路径,如图1.5,界面上所示的路径D:TC是默认的盘符及路径,如果不修改则将软件安装到D盘的TC目录下,如果想安装在C盘则可将光标移到Directories处进行修改,如图1.6所示。图1.5图1.6 最后选择图1.7所示界面中的Start Installation,回车后完成TC3.0的安装图1.72. 有关Turbo C3.0中的路径问题 包含路径:Include Directories默认是而且应该是 TC路径Include,否则程序在编译时将会报错,怎么找不到stdio.h啦等等,原因就在这里没有按要求设置。 静态库路径: Library Directories唯一跟包含路径不同的是把Include对应改成lib,如果你把TC路径下的lib改名叫john,那么你就应该改成 TC路径john. 输出路径:Output Directory。就是你的源程序编译生成的.obj,.exe等存放的路径,默认是工作路径,当然你可以修改成你指定的路径。 源代码路径:Source Directory.是一个使用连接库的工程在被集成调试器调试的时候为调试器指定的连接库的源代码路径。因为使用了连接库的工程原本不可以开放库程序的源代码的。这个路径只在调试连接库时用到,因此对于初学者,尤其是不涉及编写连接库的程序时,大可不理它。3. Turbo C3.0工作环境介绍(1)Turbo C3.0的启动一种方式是直接在安装目录TC下的bin目录下点击tc.exe,或者将命令行路径设置到bin目录,然后输入tc(回车)后打开的方式。例如,安装目录为C:tc,则tc.exe在目录C:tcbin目录下,直接运行该程序即可。如果你的计算机中Turbo C的安装路径不同的话,在上述方式中改变相应路径即可。第二种打开方式就是你在其他路径下建立TC.exe的快捷方式,然后点击快捷方式进入。启动TC后,其界面如图1.8所示:图1.8其中顶上一行为Turbo C 3.0 主菜单, 中间窗口为编辑区, 接下来是信息窗口, 最底下一行为参考行, 以后的编程、编译、调试以及运行都将在这个主屏幕中进行(2)常用命令菜单的使用进入TC的集成环境后,编辑、调试程序均要用到菜单中提供的各项功能。按功能键F10可激活主菜单,然后用光标键移动色棒进行选择, 回车则执行。下面介绍几个常用菜单的功能: 主菜单 显示屏的顶部是主菜单条,它提供了8个选择项:File 处理文件(装入、存盘、选择、建立、换名存盘、写盘),目录操作(列表、改变工作目录),退出Turbo C,返回DOS状态。Edit 建立、编辑源文件。Search 查找源代码中的字符串,也可查找替换Run 自动编辑、连接并运行程序,跟踪执行程序。Compile 编辑、生成目标文件。Project 将多个源文件和目标文件组合成工作文件。Option 提供集成环境下的多种选择和设置(如设置存储模式、选择编参数、诊断及连接任选项)以及定义宏;也可记录Include、Output及Library文件目录,保存编译任选项和从配置文件加载任选项。Windows 进行窗体的缩放、切换、关闭等操作,也可调出某个窗体,如Message窗体。 编辑窗口编辑窗口是在主菜单下,信息窗口之上的区域,其顶行中间有“Edit”标志。在此窗口中可以建立、编辑一个源文件。功能键F5可以扩大编辑窗口到整个屏幕,或恢复分屏式环境。在插入模式下(用Ins键转换)向编辑窗口内输入代码,按回车键结束一行(TC编辑器不能自动换行),再按一次Ins键,屏幕转换成为替换模式,输入的字符将替换光标所在位置的字符。 信息窗口 编译和调试源程序时,信息窗口显示诊断信息、警告、出错信息、错误在源程序中的位置。功能键F5可以扩大和恢复信息窗口,按F6或Alt+E,光标从信息窗口跳到编辑窗口,也可用鼠标直接操作。 功能键提示行屏幕低行是功能键提示行,显示当前状态下功能键(俗称Turbo C热键)的作用,见下表。应当注意,在不同状态下功能键的作用是不同的。正确使用功能键可以简化操作。热键简单说明F1Help,以分页的形式显示帮助信息F2保存当前正在编辑窗口中的文件F3 装入一个文件。按F3,屏幕上弹出一个输入框,输入要装入的文件名F5Zoom,缩放活动窗口F6Switch,活动窗口开关,按F6键,光标从编辑窗口跳到信息窗口,或从信息窗口跳到编辑窗口F7Trace,跟踪到函数中F8Step,单步跟踪,但不进入函数内部F9Make,对当前文档进行编辑、连接F10Menu,激活主菜单,光标跳到主菜单4. 运行一个语言程序的一般过程1) 编辑源文件 在主菜单下,直接按Alt+F键,或按F10后将光带移到“File”选项上,按回车键,在“File”下面出现一个下拉菜单,菜单中有以下选项:New 表示新文件,缺省文件名为NONAME00.CPP。Open F3 表示加载或装入一个文件Save F2 将正在编辑的文件存盘。Save as 将正在编辑的文件写入指定的文件中,若文件名已存在,则重写。Save all 将当前打开的文件全部存盘Change Dir 改变驱动器及目录OS shell 进入Turbo C命令行模式,命令EXIT可返回集成环境Quit Alt+x 退出Turbo C,返回DOS状态。 建立一个新文件,可用光标移动键将“File”菜单中的光带移到“New”处,按回车键,即可打开编辑窗口。此时,编辑窗口是空白的,光标位于编辑窗口的左上角,屏幕自动处于插入模式,可以输入源程序。屏幕右上角显示缺省文件名为NONAME00.CPP,编辑完成之后,可用F2或选择“Save”或“save as ”进行存盘操作,此时系统将提示用户将文件名修改成为所需要的文件名。(2) 源程序的编译、连接 直接按F9键,或将菜单“Compile”中的光带移到“Make ”项上,按回车键,就可实现对源程序的编译、连接。若有错误,则在信息窗口显示出相应的信息或警告,按任意键返回编辑窗口,光标停在出错位置上,可立即进行编辑修改。修改后,再按F9键进行编辑、连接。如此反复,直到没有错误为止,即可生成可执行文件。注意:C程序的连接是在编译后自动完成的。(3) 执行程序 直接按Ctrl+F9键,即可执行.EXE文件;或在主菜单中(按F10进入主菜单)将光带移到“Run”选项,按回车键,弹出一个菜单,选择“Run”选项,回车。这时并不能直接看到输出结果。输出结果是显示在用户屏幕上,在TC屏幕上看不到,直接按复合键Alt+F5,或选择“Windows”菜单中的“User Screen”选项,即可出现用户屏幕,查看输出结果。按任意键返回TC集成环境。另外,选择“Run”菜单下的“Run”项,或直接按Ctrl+F9键,可将C程序的编译、连接、运行一次性完成,即第3步中包含有第2步的工作。如果程序需要输入数据,则在运行程序后,光标停留在用户屏幕上,要求在用户输入数据,数据输入完成后程序继续运行,直至输出结果。如果运行结果不正确或其他原因需要重新修改源程序,则需重新进入编辑状态。修改源程序,重复以上步骤,直到结果正确为止。(4) 退出Turbo C集成环境 退出Turbo C环境,返回操作系统状态。可在主菜单选择“File”菜单的“Quit”选项,或者直接按Alt+x。在执行退出Turbo C环境时,系统将检查一下当前编辑窗口的程序是否已经存盘,若未存盘,系统将弹出一个提示窗口,提示是否将文件存盘,若按“Y”则将当前窗口内的文件存盘后退出;若按“N”则不存盘退出。5. 程序举例【例1】编程实现在屏幕上显示如下三行文字 Hello, world ! Wolcome to the C language world! Everyone has been waiting for. 在Turbo C的集成环境下,键入如下源文件。敲Alt+F组合键打开File菜单,第一次存盘时File菜单中save选项可将默认noname00.cpp文件名改为任意文件名,若第二次存盘要修改文件名及路径,则需使用File菜单中的Save as 。程序example.c如下:#include void main()printf(Hello,World!n);printf(Wolcome to the C language world!n);printf(Everyone has been waiting for.n);然后用Ctrl+F9编辑执行example.c,用Alt+F5查看结果,即在屏幕上显示题目要求的三行文字。按回车键重新返回Turbo C的编辑环境。注意,在运行程序之前最好先存盘。【例2】输入并运行程序,写出运行结果。#include void main() int a,b,sum; a=123;b=456; sum=a+b; printf(“sum is %dn”,sum);运行方法同上,最后结果为:sum is 579。【例3】输入并运行程序,写出运行结果。#include int max(int x,int y);void main()int a,b,c;scanf(“%d,%d”,&a,&b);c=max(a,b);printf(“max=%d”,c); int max(int x,int y)int z;if (xy) z=x;else z=y;return(z);这个程序的功能是对于任意输入的两个整数,输出较大的那个数。所以程序运行之后,光标将停留在用户屏幕上,等待用户输入两个整数,比如输入“3,5”,回车,在用户屏幕上就会输出“max=5”。三、实验内容1. 在C:盘的根目录下以自己姓名拼音缩写为名建立一个子目录;输入以下源程序,运行并查看结果,将源程序文件命名为hello.c存放到所建目录下。/*HELLO.C - Hello, world */#include main()printf(Hello, worldn); 将以上源程序输入存盘后,按以下步骤调试:1) 按F9编译,编译系统检查源程序是否有错,如果有错则在编辑窗口下方显示错误,此时需根据错误提示修改源程序中的语法错误,直到编译成功为止。2) 按Ctrl+F9执行。程序执行后,似乎没有结果,此时应按步骤3)查看结果。3) 按Alt+F5查看结果,按任意键返回到编辑状态。提示:C语言源程序的调试都按照以上步骤调试运行。2. 输入以下程序,将其命名为test.c存放到C:TC目录下。该源程序有错,请调试修改正确。main()int a=2,b=c=3; sum=a+b+c printf(“%d”,sum);3. 以下程序的功能是交换变量num1和num2的值,所给源程序有错,按要求调试程序并改错。(注意:程序左边的序号表示程序的行数,不是程序的内容,输入源程序时无需输入。)1) main()2) int num1,num2;3) num1=2;4) num2=3;5) printf(“num1=%d,num2=%dn”,num1,num2);6) num1=num2;7) num2=num1;8) printf(“num1=%d,num2=%dn”,num1,num2);9) 调试练习要求:按F8单步执行该程序。每按一次F8程序执行一条语句,观察编辑窗口和程序执行的结果。在程序的第六行设置断点,按Ctrl+F9执行程序,查看程序执行结果,若要将程序执行完毕,应怎样操作?清除断点。向监视窗口添加监视表达式num1、num2,单步执行程序,观察变量num1和num2值的变化,由此可检查出程序出错的原因。四、实验报告内容1. 写出以下编辑源程序的方法:1) 编辑一个新的源程序;2) 调出一个已有源程序进行编辑;3) 如何将源程序存到指定的目录;2. 编辑、调试程序的详细步骤。3. 第2、3题改正后的源程序,错误的原因。实验二 数据类型、运算符与表达式一、实验目的1. 掌握C语言数据类型,熟悉各种数据类型的定义和赋值。2. 掌握表达式值的计算方法与计算原则。3. 学会使用C的有关算术运算符,特别是自加()和自减()运 算符的使用。4. 进一步熟悉C程序的编辑、编译、连接和运行的过程。二、实验指导1. 变量的定义与初始化在语言中,要求对所有用到的变量,必须先定义、后使用;(1)变量定义的一般格式 存储类型 数据类型 变量名, 变量名2; 例如,float radius, length, area;(2)变量初始化的一般格式 变量的初始化是指在定义变量的同时进行赋初值的操作。 存储类型 数据类型 变量名=初值, 变量名2=初值2; 例如,float radius=2.5, length, area; 如下变量的定义与初始化是错误的: float radius=length=2.5; 因为在定义同一数据类型的变量时,各变量名之间必须用逗号分隔。2. 标识符定义规则简单地说,标识符就是一个名字。在C语言中,符号常量、变量名、函数名、文件名等都称为标识符,它们都遵循标识符的命名规则:有效字符:只能由字母、数字和下划线组成,且以字母或下划线开头。有效长度:随系统而异,但至少前个字符有效。如果超长,则超长部分被舍弃。C语言的关键字不能用作变量名。标识符命名的良好习惯见名知意:所谓“见名知意”是指,通过变量名就知道变量值的含义。通常应选择能表示数据含义的英文单词(或缩写)作变量名,或汉语拼音字头作变量名。例如,name/xm(姓名)、sex/xb(性别)、age/nl(年龄)、salary/gz(工资)。3. 变量的赋值变量的赋值是用赋值运算符给变量赋值,这与变量的初始化不同。例如:main()int a,b; a=2; b=3; /*两条赋值语句的作用是分别使变量a的值为2,b的值为3*/将以上程序改为:main()int a,b; a=b=2;/*一条赋值语句使a、b的值都为2*/4. 运算符的使用C语言中有十分丰富的运算符,除控制语句和输入输出函数外,其它所有基本操作都作为运算符处理。有些运算符对于运算对象有特殊要求:(1)%(求余运算符)要求两侧的操作数均为整型数据,否则出错。例如:float x; int y; y=x%y;在上述程序段中,x为浮点型数据,就不能作为%的运算对象。(2)/ (相除运算符)两个整数相除,其商为整数,小数部分被舍弃。两个数有一个为实数,则结果为double型。例如:5 / 2 =2。 5.0/2=2.5又如:float a=5; a=a/2; /*a的值为2.5*/(3)自增(+)、自减(-)运算符自增运算使单个变量的值增,自减运算使单个变量的值减。前置运算运算符放在变量之前:变量、变量 先使变量的值增(或减),然后再以变化后的值参与其它运算,即先增减、后运算。后置运算运算符放在变量之后:变量、变量 变量先参与其它运算,然后再使变量的值增(或减),即先运算、后增减。例:int x, y; x=6; y = +x; /*y=7*/ y = x- -; /*y= 7*/注意:自增、自减运算符,不能用于常量和表达式。例如,5+、-(a+b)等都是非法的。5. 表达式求值表达式的求值原则:1)按运算符的优先级高低次序执行。例如,先乘除后加减。2)如果在一个运算对象(或称操作数)两侧的运算符的优先级相同,则按语言规定的结合方向(结合性)进行。三、实验内容1. 计算以下各表达式的结果并上机验证计算结果是否正确。 25/3%3 3.5+1/2+56%10 若有定义:int b=7;float a=2.5,c=4.7;a+(int)(b/3*(int)(a+c)/2)%4 若有:int x,y,z 执行语句:x=(y=(z=10)+5)-5; x=? y=? z=? x,a均是整型执行 x=(a=4,6*2)后,x的值是多少?执行 x=a=4,6*2后,x的值是多少? 若有:int x=5,n=5;执行x+=n+后,x=?,n=?2. 读以下源程序,写出输出结果并上机验证,想一想为什么会有这样的结果?main() char ch1,ch2; ch1=a; ch2=B; printf(“ch1=%c,ch2=%cn”,ch1-32,ch2+32); printf(ch1+200=%dn, ch1+200); printf(ch1+200=%cn, ch1+200); printf(ch1+256=%dn, ch1+256); printf(ch1+256=%cn, ch1+256); 3. 分析下程序,写出运行结果,再输入计算机运行,将得到的结果与你分析得到的结果比较对照。#include “stdio.h”void main() int i , j , m , n ;i=8; j=10;m=+i; n=j+;printf(“%d,%d,%d,%d”,i,j,m,n);分别作以下改动之后,先分析再运行:1)将第四行改为:m=i+; n= + j;2)程序改为:main() int i , j ;i=8; j=10;printf(“%d,%d”, i+, j+);3)在2)的基础上,将printf语句改为:printf(“%d,%d”, + i, + j );4)再将printf语句改为:printf(“%d,%d,%d,%d”,i,j,i+,j+);5)程序改为:main()int i , j , m=0 , n=0 ;i=8; j=10;m+= i +; n -= -j;printf(“i=%d,j=%d,m=%d,n=%d”,i,j,m,n);此程序主要考查自加、自减运算符以及复合运算符的用法。4. 编程实现:输入一个华氏温度,要求输出摄氏温度。公式为c=5.0/9.0*(f-32).四、实验报告内容写出各题的运算结果,列出在上机过程中自己出错的表达式,并分析出错原因。实验三 数据的输入、输出一、实验目的1. 掌握简单的程序设计,能正确写出顺序结构的源程序。2. 掌握数据的输入输出方法,能正确使用各种格式转换符。二、实验指导1. 赋值语句赋值语句是由赋值表达式加上一个分号构成,作用是将一个确定的值赋给一个变量。格式为: 变量名=表达式;赋值语句有如下特点: 先计算,后赋值。先计算表达式的值赋给赋值号左边的变量。 赋值语句中的“=”是赋值号不是数学意义的等号,赋值号两侧的内容不能任意调换。 main() main() int a,b; int a,b; a=1;b=2; a=1;b=2; a=b; b=a; printf(“%d%d”,a,b); printf(“%d%d”,a,b); 程序a和b 的值都是2,程序中a,b的值都是1.注意:赋值运算符的左边只能是变量名,不能是表达式或常量2. 数据输入函数(1) getchar()函数此函数的功能是等待输入直到按回车才结束, 回车前的所有输入字符都会逐个显示在屏幕上。但只有第一个字符作为函数的返回值。例如:#include #include main() char c; c=getchar(); /*从键盘读入字符直到回车结束*/ putchar(c); /*显示输入的第一个字符*/ 输入:abc程序运行后变量c的值为a(2) scanf()函数其调用格式为: scanf(, );地址表是需要读入的所有变量的地址, 而不是变量本身。在使用该函数输入数据时,常见的错误主要有以下几种类型: 输入列表中,变量名前忘记加取地址符号&。如:scanf(“%d,%d”,a,b);(此语句有错)改为:scanf(“%d,%d”,&a,&b); 格式控制字符与变量的类型不一致。float a,b;scanf(“%d,%d”,&a,&b);(此语句有错)改为:scanf(“%f,%f”,&a,&b); 输入数据的格式与scanf()函数中的格式控制字符串不一致scanf(“%d,%d”,&a,&b)输入数据:3 4 (此输入有错)应改为: 3,4以上几种常见错误都会导致输入的数据不能正确地存放到相应的变量中。3. 数据输出函数(1) putchar()函数 putchar()函数是向标准输出设备输出一个字符, 其调用格式为: putchar(ch); 其中ch为一个字符变量或常量。 putchar()函数的作用等同于printf(%c, ch);注意:该输出函数调用一次只能输出一个字符,要输出多个字符必须调用多次。(2) printf()函数printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。printf()函数的调用格式为: printf(, );该函数中格式字符的使用十分复杂,现举例说明其常用的格式控制:#include int main() char c; int a=1234; float f=3.141592653589; double x=0.12345678987654321; c=x41; printf(a=%dn, a); /*结果输出十进制整数a=1234*/ printf(a=%6dn, a); /*结果输出6位十进制数a= 1234*/ printf(a=%06dn, a); /*结果输出6位十进制数a=001234*/ printf(a=%2dn, a); /*a超过2位, 按实际值输出a=1234*/ printf(f=%fn, f); /*输出浮点数f=3.141593*/ printf(f=%6.4fn, f); /*输出6位其中小数点后4位的浮点数 f=3.1416*/ printf(x=%lfn, x); /*输出长浮点数x=0.123457*/ printf(x=%18.16lfn, x);/*输出18位其中小数点后16位的长浮点 数x=0.1234567898765432*/ printf(c=%cn, c); /*输出字符c=A*/ printf(c=%xn, c); /*输出字符的ASCII码值c=41*/ 三、实验内容1. 先读下列程序,写出程序运算结果,再将该程序输入并运行,观察运行结果与你所写的结果是否相同。 main()int x,y,z;x=y=2;z=3;y=x+-1;printf(%dt%dt,x,y);y=+x-1;printf(%dt%dt,x,y);y=z-+1;printf(%dt%dt,z,y);y=-z+1;printf(%dt%dn,z,y); main()char c1=a,c2=b,c3=c,c4=101,c5=116;printf(a%cb%ctc%ctabcn,c1,c2,c3);printf(tb%c%c,c4,c5);2. 以下各程序需要输入数据,请写出输入数据的格式和变量的值并上机验证。 #include void main()int a,b,c;printf(input a,b,cn);scanf(%d%d%d,&a,&b,&c);printf(a=%d,b=%d,c=%d,a,b,c);注意&的用法,在本例中,由于scanf函数本身不能显示提示串,故先用printf语句在屏幕上输出提示,请用户输入a、b、c的值。执行scanf语句,则退出TC屏幕进入用户屏幕等待用户输入。用户输入7、8、9后按下回车键,此时,系统又将返回TC屏幕。在scanf语句的格式串中由于没有非格式字符在“%d%d%d”之间作输入时的间隔, 因此在输入时要用一个以上的空格或回车键作为每两个输入数之间的间隔。如: 7 8 9或789 main() int i, j; printf(i, j=?n); scanf(%d, %d, &i, &j); scanf(“%d,%*d,%d”,&a,&b);若输入:3,4,5 a=? b=? scanf(“%3d%2d”,&a,&b);若输入:12345a=? b=? 按格式要求输入/输出数据#include stdio.h#include “string.h”main() int a,b;float x,y;char c1,c2;scanf(“a=%d,b=%d”,&a,&b);scanf(“%f, %e”,&x,&y);getchar();scanf(“%c %c”,&c1,&c2);printf(“a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%cn”,a,b,x,y,c1,c2);运行该程序,必须按如下方式在键盘上输入数据a=3,b=7 8.5,71.82 a A 请同学们写出输出结果3. 编写程序:输入两个数a、b,交换它们的值,然后输出交换后结果。四、实验报告内容1. scanf()函数的作用是什么?若程序中有scanf()函数,在运行程序时应注意什么?2. 写出第一题的运行结果,并说明原因。3. 列出第二题中各小题的输入数据格式并说明为什么?4. 写出第三题的源程序以及调试过程中的测试数据和输出结果。实验四 选择结构程序设计一、实验目的1. 了解C语言表示逻辑量的方法(以0代表“假”,以1代表“真”)。2. 熟练掌握if语句和switch语句二、实验指导在Turbo C中条件语句的一般形式为: if(表达式) 语句1; else 语句2;在写程序过程中,对于条件语句的使用需注意以下几点:1. 表达式该表达式可以是任何表达式,条件语句判断条件成立与否是根据表达式的结果来判断,如果表达式值为0则条件不成立,表达式值为非0则条件成立。条件语句中,表达式的书写常出错的几点:(1)常将”= =”写成“=”如:判断变量a 是否等于一个常数的语句 if(a=5) printf(“n”);表达式a=5是赋值表达式,该表达式的值始终为5(即非0),则条件始终成立,条件判断失去意义。应改为:if(a= =5) printf(“n”);(2)表达式必须用括号扩起来,常漏写括号如:if a= =5 printf(“n”);漏写括号后会出现语法错误2. 和在条件语句中的使用如果语句1或语句2有多于一条语句要执行时, 必须使用和 把这些 语句包括在其中, 此时条件语句形式为: if(表达式) 语句体1; else 语句体2; 如:if(ab) t=a;a=b;b=t;/*条件成立后执行t=a,其余的语句与条件无关*/若条件成立执行三条赋值语句,则必须用和 把这些语句包括在其中:if(ab) t=a;a=b;b=t;3. 条件语句嵌套条件嵌套语句容易出错, 其原因主要是不知道哪个if对应哪个else。 例如: if(x20|x-10) if(yx) printf(Good); else printf(Bad);Turbo C规定: else语句与最近的一个if语句匹配, 上例中的else与if(yx)相匹配。为了使else与if(x20|x20|x-10) if(yx) printf(Good); else printf(Bad);随着语句越来越复杂,语句行的增加,源程序的阅读也越来越困难,通常为了使源程序的结构更加清晰,便于阅读,源程序的书写常用锯齿形的写法,按使语句执行的逻辑关系对齐。锯齿形的写法如下所示:4. switch语句语句格式为: switch(表达式) case 常量1: 语句1或空; case 常量2: 语句2或空; case 常量n: 语句n或空; default: 语句n+1或空; 在使用switch语句必须注意:(1) 表达式的结果是整型或字符数据类型(2) 每个case或default后的语句可以是语句体, 但不需要使用和括起来。(3) 语句中的和不能少5. 程序举例【例1】输入某学生的成绩,经处理后给出学生的等级,等级分类如下: 90分以上(包括90): A 80至90分(包括80):B 70至80分(包括70):C 60至70分(包括60):D 60分以下: E方法一:(用if嵌套)分析:由题意知如果某学生成绩在90分以上,等级为A;否则,如果成绩大于80分,等级为B;否则,如果成绩大于70分,等级为C;否则,如果成绩大于60分为D;否则,如果成绩小于60分,等级为E;但当我们输入成绩时也可能输错,出现小于0或大于100,这时也要做处理,输出出错信息。因此,再用if嵌套前,应先判断输入的成绩是否在0100之间。#includestdio.hvoid main() float score; char grade; printf(nplease input a student score:); scanf(%f,&score); if(score100|score=90) grade=A; else if(score=80) grade=B; else if(score=70) grade=C; else if(score=60) grade=D; else grade=E; printf(nthe student grade:%c,grade); 输入测试数据,调试程序。测试数据要覆盖所有路径,注意临界值,例如此题中得100分,60分,0分以及小于0和大于100的数据。 方法二:用switch语句分析:switch 语句是用于处理多分支的语句。注意,case后的表达式必须是一个常量表达式,所以在以用switch语句之前,必须把0100之间的成绩分别化成相关的常量。所有A(除100以外),B,C,D类的成绩的共同特点是十位数相同,此外都是E类。则由此可得把score除十取整,化为相应的常数。#includestdio.hmain()int g,s;char ch;printf(ninput a student grade:);scanf(%d,&g);s=g/10;if(s10 & g!=100) printf(ninput error!);else if(g=100) s=10; switch (s) case 10: case 9: ch=A; break; case 8: ch=B; break; case 7: ch=C; break; case 6: ch=D; break; default: ch=E; printf(nthe student scort:%c,ch); 输入测试数据,同方法一一样调试程序并写出结果。三、实验内容1. 以下几段源程序有错,请调试修改正确。 /*源程序实现的功能:输入两个实数,按从小到大的顺序输出*/main() float a,b,t; scanf(“%f,%f”,&a,&b); if (ab) t=a;a=b;b=t printf(“%5.2f,%5.2f”,a,b); 该源程序实现的功能是:有如下函数关系:x(x0)y=2(x=0)3x(x0 y=x;else if(x=0) y=2; else y=3*x;printf(“x=%d y=%dn”,x,y);2. 有一函数:x (x1)2x-1 (1x10)3x-11 (x10)y=用scanf()函数输入x值,求函数y的值3. 某物品原有价值为p, 由于使用使其价值降低,价值的折扣率根据时间t(月数)确定如下:t3, 无折扣3=t6, 2折扣6=t12, 5折扣12=t=21, 10折扣编程实现:根据输入的时间和原有价值计算物品的现有价值。4. 给一个不多于5位的正整数,要求:求出它是几位数;分别打出每一位数字;按逆序打出各位数字,例如原数为321,应输出123四、思考题1. c语言如何表示“真”与“假”?系统如何判断一个量的“真”与“假”?2. 写出下面各逻辑表达式的值。设a=3,b=4,c=5(1) a+bc&b= =c(2) a|b+c&b-c(3) !(ab)&!c|1(4) !(x=a)&(y=b)&0(5) !(a+b)+c-1&b+c/2五、实验报告内容1. 根据上机调试过程中的体会,你认为if语句、switch语句在使用过程中应注意什么?2. 写出第一题中各小题正确

温馨提示

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

评论

0/150

提交评论