《最新C语言程序设计课程实践指导31.doc》由会员分享,可在线阅读,更多相关《最新C语言程序设计课程实践指导31.doc(448页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateC语言程序设计课程实践指导31第一章第一章 绪论上机实习:WiN-TC系统的基本操作方法一、目的要求1、 掌握C程序的基本结构。2、 熟悉WiN-TC系统的操作界面。3、 能熟练地启动WiN-TC和退出WiN-TC。4、 掌握在WiN-TC中建立、运行、修改、保存和装入程序的方法。5、 掌握插删字符和插删行等基本的编辑操作。二、上机内容下面是三个从最简单到稍复杂的C程
2、序,仔细阅读程序并领会各程序的运行结果,以熟悉C程序的基本结构和WiN-TC的基本操作流程。1、 main() printf( Hello China!);(1) 调试该程序。(2) 在函数体中插入一行语句,使上面的程序变成:main() clrscr(); /* 清屏 */ printf(Hello China!);再次运行程序并仔细观察运行结果,这次是先清屏,再从屏幕的左上角开始显示“Hello China!”。说明:清屏函数clrscr(),先清屏再显示出运行结果2、 main() int a,b,sum; a=1; b=2; sum=a+b; clrscr(); printf(sum=
3、%d,sum);(1) 运行该程序,对比自己的判断与屏幕上的结果是否一致。(2) 删除函数体第一行中的变量定义语句“int a,b,sum;”,或将该语句注释起来。再运行程序,看看会有什么结果。3、 main() int a,b; a=2; b=pf(a); printf(a=%d, b=%d,a,b); pf(num) int num; int t; t=num*num; return(t); (1) 运行程序后分析该程序执行的功能。(2) 将程序中的main()函数改写如下:main() int a,b; clrscr(); scanf(%d, &a); b=pf(a); printf(a
4、=%d, b=%d,a,b); 再运行程序,当从键盘输入2时,输出: a=2, b=4从键盘输入5时,输出: a=5, b=25如果是第二种情况会有什么好处?使用scanf函数的好处是,可以在程序的运行过程中灵活地输入我们想求平方的一个数,并根据该数输出其平方值。第二章 基本数据类型和简单程序设计第一节 学习指导一、 学习目标本章重点介绍了C语言的三种基本数据类型,即整型、浮点型和字符型,以及这三种数据类型的简单程序设计。每个程序都有自己特定的数据处理对象,例如,求123100之和的程序,它的数据对象是整数;求一元二次方程的根的程序,它的数据对象是小数。可以说,任何程序设计都会涉及到对数据的处
5、理,因此,如何在程序中表示数据是一个最基本的问题。学习本章的目的,就是要了解各种基本数据类型的特点,知道如何在程序中使用这些类型的数据,在定义变量时如何根据实际需要随机应变。本章学习目标如下:1、 了解三种基本数据类型的特点。2、 掌握三种基本数据类型常量的表示方法。3、 熟练掌握三种基本数据类型变量的定义方法。4、 了解混合运算中的类型转换。二、 几个需要注意的问题1、 常量与变量。要记住常量和变量的定义很容易,前者是在程序运行过程中其值不能改变的量,后者是在程序运行过程中其值允许改变的量。但是,对第一次学习程序设计的初学者来说,往往弄不明白编程时什么时候使用常量,什么时候使用变量。举一个简
6、单的例子,如果你仅仅是想求13与25之和,那么可以在程序中写出下面的语句: printf(%d,13+25);这里,13和25就是常量,这个语句中没有出现任何一个变量。但是,如果你是想求两个数之和,而这两个数又是根据不同的需要而改变的,那么就可以在程序中利用定义变量的方法解决,如下面的语句: printf(%d,a+b);或: sum=a+b; printf(%d,sum);这里,a、b、sum就是变量,在执行a+b之前,可以通过输入语句给它们赋值,也可以通过赋值语句,把常量或表达式的值分别赋给它们。总之,a和b的值是可变的。2、 变量名的命名规则。程序中的每个变量都有一个名字,变量名在定义该
7、变量时就确定了。并非任何一个字符序列都可以作为一个变量名,只有符合一定规则的名字才是有效的。(1) 变量名只能由字母(AZ,az)、数字(09)和下划线(_)三种符号组成,第一个字符必须是字母或下划线。下面是合法的变量名:Y,student2,student_name,_page10下面是不合法的变量名:2student,sum$3,dr.a,#num(2) 大写字母与小写字母代表含义不同的字符,即两者不等价。如,sum、Sum和SUM代表三个完全不同的变量。(3) Turbo C规定,变量名的前32个字符在程序中是有效的。尽管语法允许给变量取一个如此长的名字,但根据一般的编程经验,变量名的长
8、度通常在8个字符以内就行了,没有必要取太长的名字自找麻烦。(4) 不允许使用关键字作变量名。关键字是C语言的编译程序定义的有固定用法的名字,如,关键字int的作用是定义一个整型变量,因此,用户就不能再用int来作为某个变量的名字。除了变量名必须遵守上述命名规则,在后面章节中介绍的数组名、函数名和数据类型名等也必须遵守这些命名规则。另外,为了提高程序的可读性,给变量命名时最好能做到“见名知意”。3、 变量的定义。C语言规定,程序中的变量必须是“先定义,后使用”。初学者往往容易忽略在使用变量之前先定义变量,这一点一定要注意。(1) 一个变量就是一个存储区域,它能存储相同类型的不同数据,使用变量名就
9、是使用变量存储区域中存储的数据。(2) 把某个变量定义为哪一种基本类型,关键是看打算用该变量存储什么数据。例如,想用一个变量存放单个字符,则可把该变量定义为char型;若想存放1100之间的整数,则可把该变量定义为int型;若想存放小数,则可把该变量定义为float型。定义变量时还应考虑数据的大小范围。试分析下面的程序:main() int a,b,c; a=20000; b=30000; c=a+b; printf(c=%d,c);不要以为这个程序的运行结果会是c=50000,事实上,它的运行结果是c=-15536。因为变量c的类型是int型,它所能存放的最大整数是32767,而a与b之和5
10、0000超出了这个范围,运行结果自然就出错了。要想得出正确的运行结果,上面的程序应改为:main() int a,b; unsigned c; a=20000; b=30000; c=a+b; printf(c=%u,c); /* %u表示以unsigned型整数的形式输出变量的值 */(3) 定义一个变量时应尽可能地考虑节省存储空间。例如,某个程序中的变量a用来存放100以内的自然数,那么,变量a可以定义为int类型,也可以定义为long类型。选哪一种呢?当然是int型!因为,一个int型变量只占2个字节,而long型变量却要占4个字节。三、易出现的语法错误及出错信息上机操作时,有语法错误的
11、程序不能顺利通过编译过程,这时,出错信息会出现在Massage窗口中,每条出错信息前有一个用来报告错误所在行的行号,可以按这个行号查找程序中出错的地方,修改之后再重新对程序进行编译。下面列出了在定义变量时易出现的语法错误及相应出错信息。1、 变量没有定义。出错信息: Undefined symbol XXXX 分析:C语言规定,变量使用之前必须先定义。这条出错信息产生的原因是使用了一个没有定义过的变量。程序示例:main() a=2; b=3; printf(%d,a+b);这个程序在编译时,Massage窗口中将显示出第3行的变量a和第4行的变量b没有定义的出错信息。又如:main() in
12、t a;b; a=2; b=3; printf(%d,a+b);这个程序好象没有什么错误,但编译时Massage窗口中将显示出: Undefined symbol b in function main为什么呢?仔细观察,你会发现程序的第三行定义变量a和b时,a与b之间是分号而不是逗号。分号代表一个语句的结束,因此,分号后面的b就没有定义了。这好象是一个很好笑的错误,但是,对粗心的初学者来说,上机时往往会因忽略细节而导致程序的失败。2、 定义变量时的语法错误。出错信息: Declaration syntax error分析:通常这条信息的出错之处在变量定义或函数定义中,而定义中具体的语法错误又可
13、能是多种多样的,所以,这是一条较难查找的错误。下面的程序示例给出了两种导致这条信息的变量定义错误。程序示例:main() int a b; a=2; b=3; printf(%d,a+b);这个程序的错误之处是,第3行定义变量时,变量a和b之间用的是空格间隔,而不是用逗号间隔。又如:main() float 2s; 2s=26.8; printf(%f,2s);这个程序中使用了一个名字不合法的变量,即2s。注意,变量名必须以字母或下划线开头。第二节上机实习:基本数据类型的简单程序设计一、目的要求1、 进一步熟悉Turbo C集成环境下程序的建立、修改和运行。2、 熟悉定义各种基本数据类型变量的
14、方法。3、 初步了解printf函数的使用方法。4、 熟悉有关变量定义的语法错误,并能够根据出错信息修改、调试程序。二、上机内容1、 语法错误的检查与修改。下面的程序均含有语法错误,在Turbo C集成环境中建立源程序并使用Run命令后,仔细观察Massage窗口中的出错信息,并分析出错原因,找出程序中的错误所在之处。改正错误之后再重新运行程序。注意,出错信息显示在Massage窗口中时,可以按F6键在Massage窗口与Edit窗口之间切换。(1) main() int x1,x2; x1=5; x2=10; y=x1*x2; printf(y=%d,y);(2) main() FLOAT
15、a; a=2.6; printf(%f,a*3);(3) main() int num#1; num#1=50; printf(%d,num#1/2);(4) main() char ch; ch=A; printf(%c,ch);2、 分析程序的运行结果。上机之前先写出下面程序的运行结果,上机时再比较实际运行结果与自己分析的结果是否一致。(1) main() int num1,num2,num3; clrscr(); num1=4; num2=2; num3=num1/num2; printf(num3=%dn,num3); num1=12; num2=3; num3=(num1+num2)
16、*2; printf(num3=%d,num3);(2) main() int r; float s; clrscr(); r=2; s=3.14159*r*r; printf(r=%dn,r); printf(s=%f,s);(3) main() char c1,c2; clrscr(); c1=a; c2=b; printf(字母a的ASCII码为: %d n字母b的ASCII码为: %d,c1,c2);(4) main() char ch; clrscr(); ch=02; printf(%cn,ch); ch=03; printf(%c,ch);提示:这个程序中,02和03分别表示AS
17、CII码为2和3的字符,前者是一个笑面符号,后者是一个心形符号。通过这种形式,可以输出不能用键盘符号表示的字符。上机操作时,你不妨将02和03分别改为04和05,看看会有什么运行结果。3、 编写一个简单的程序。已知三个整数分别为100、82、93,编一程序求这三个数的平均值。要求使用变量。第三章 表达式与运算符第一节学习指导三、 学习目标本章重点介绍了几类常用的运算符,以及由这些运算符构成的表达式。在实际编程中,算术运算符和赋值运算符几乎是每个C程序都要用到的,这也是本章应重点掌握的内容。对于关系表达式和逻辑表达式,可能你觉得一时还用不上它们,但在后面的选择结构和循环结构的程序设计中,条件判断
18、均是以关系表达式或逻辑表达式的形式表示,因此,理解并掌握关系运算符和逻辑运算符及其相关表达式,是学好选择结构和循环结构的基础。本章学习目标如下:1、 熟悉各种基本的算术运算符,能够把一个普通的数学公式改写成符合C程序语法规则的算术表达式。2、 理解各种关系运算符和逻辑运算符的意义,能准确判断关系表达式和逻辑表达式的值。3、 熟练掌握赋值运算符和各种复合赋值运算符的用法。4、 熟悉各类常用运算符的优先级。四、 需要注意的几个问题1、 关于除法运算符。除法运算符“/”与一般的算术运算规则不同,当整型数据除以整型数据时,其商也是整数。除法运算符“/”的这一特点有时会影响运算结果的精确性,看下面求两个
19、数的平均值的程序:main() int num1,num2,sum,n; float average; num1=13; num2=28; n=2; sum=num1+num2; average=sum/n; printf(%.2f,average); /* %.2f 表示输出的浮点数只保留两位小数 */这个程序的运行结果是20.00,而不是20.50,因为变量sum和n都是是整型变量,相除的结果就是一个舍去了小数部分的整型数。如果想得到精确的运算结果,则可将程序中的语句: average=sum/n;改为: average=(float)sum/n;2、 关系表达式和逻辑表达式。关系表达式和
20、逻辑表达式的值只有两种:1和0,即表达式为真时,其值为1,表达式为假时,其值为0。而在判断真与假时,则是0为假,非0为真。需要注意的是,数学上很常见的一种比较大小关系的写法,在C语言中却变成了另外的含义。如,要表示x的值在3和10之间,数学上可以写为: 3x10而在C语言中,上面的式子等效于: (3x)10当x的值不在3和10之间时,这个关系表达式依然为真。这里,我们假设x的值为100,关系表达式3x为真,其值为1,而关系表达式110显然为真。因此,在C语言中要表示x的值在3和10之间,就应该写成下面的逻辑表达式: 3x & x103、 赋值运算符与赋值表达式。(1) 赋值运算符“=”不同于数
21、学中的等号。在数学上,算式i=i+2显然不成立。但在C语言中,表达式i=i+2的作用是把变量i的值加上2,并把得到的和赋值到变量i中。(2) 特别要注意的是,赋值运算符的左边只能是一个变量名,而不能是一个常量或其它的表达式。下面都是错误的赋值表达式: 13=a a+b=5 num*2=100如果程序中出现了错误的赋值表达式,则编译时Massage窗口中会显示下面的出错信息: Lvalue required(3) 给变量赋值时是“新来旧去”,即,把一个新的值赋给变量后,该变量中原来的值就被覆盖掉了。4、 运算符的优先级。C语言对每一种运算符都规定了优先级,有时候,在同一表达式中需要同时使用多种运
22、算符,这时就要考虑各个运算符的优先级问题。第二节上机实习一:算术运算符及算术表达式一、目的要求1、 熟悉各种算术运算符的使用规则。2、 能够编写程序,求简单的数学算式的值。二、上机内容1、 运行下列程序,注意观察运行结果。(1) main() int a=11,b=3; clrscr(); printf(a/b=%dn,a/b); printf(float)a/b=%fn,(float)a/b); printf(a%b=%d,a%b); /* “%”的作用是打印出字符“%” */(2) main() float x=3.8; clrscr(); printf(x=%.2fn,x); print
23、f(int)x=%d,(int)x);(3) main() int a=7,b=4; float x=2.5,y; clrscr(); y=x+a%3*(int)(x+b)%2/4; printf(y=%f,y);2、 编写程序。已知: 其中,a=-10,b=30。编一程序求y的值。3、 完善程序。已知一元二次方程: ax2+bx+c=0其中,a=1,b=4,c=2。下面的程序是求方程的两个实数根,请在横线处填写正确的语句或表达式,使程序完整。程序的后面给出了该程序正确的运行结果,上机调试完善后的程序,看看你的程序运行结果是否与书中的结果一致。# include main() int ; /*
24、 定义变量a、b、c,并给变量赋初值 */ float d,x1,x2; clrscr(); d=sqrt( ); /* 求b2-4ac的平方根 */ ; /* 求x1的值 */ ; /* 求x2的值 */ printf(x1=%.2fn,x1); printf(x2=%.2f,x2);运行结果为: x1=-0.59 x2=-3.41提示:求根公式为:C语言中计算平方根的函数是sqrt()函数,例如,sqrt(a+b)即是求a+b的平方根。第三节上机实习二:关系表达式和逻辑表达式一、目的要求1、 掌握各种关系运算符和逻辑运算符的功能。2、 能正确理解“真”、“假”的概念,及其在C语言中的表示形
25、式。3、 能够把一个命题写成符合C语言语法规则的关系表达式或逻辑表达式。二、上机内容1、 运行下列程序,分析并观察运行结果。(1) main() int a,b,c; a=1; b=2; c=3; clrscr(); printf(a=%d,b=%d,c=%dn,a,b,c); printf(ab 的值为:%dn,ab); printf(a=b 的值为:%dn,ab 的值为:%dn,cb);(2) main() int x=3,y=4,z=5; int b; clrscr(); printf(x=%d,y=%d,z=%dn,x,y,z); b=xy&xz; printf(xy&xz 的值为:%
26、dn,b); b=xz; printf(xz 的值为:%dn,b); b=xz; printf(xz 的值为:%dn,b); b=!x; printf(!x 的值为:%dn,b); b=!(xy); printf(!(xy) 的值为:%dn,b); b=(xy|xz)&yy|xz)&yz 的值为:%dn,b);(3) main() int x=20,y; clrscr(); y=2x10; printf(x=%dn,x); printf(2x10 的值为:%dn,y); y=2x&x10; printf(2x&x10 的值为:%d,y);2、 完善程序。已知,闰年符合下面两个条件之一:(1)
27、能被4整除,但不能被100整除;(2) 能被400整除。下面的程序验证2000年为闰年,请在横线处填写正确的运算符或表达式,使程序完整。程序的后面给出了该程序正确的运行结果,上机调试完善后的程序,看看你的程序运行结果是否与书中的结果一致。提示:可以通过求余运算判断能否整除。若a%b的值为0,则表明a能被b整除。main() int year=2000,b; b=(year%4=0 year%100 0) ( ); clrscr(); printf(%d,b);运行结果:1第四节上机实习三:赋值运算一、目的要求1、 理解赋值运算符的意义,了解赋值运算符与数学中的等号的区别。2、 熟悉常用的复合赋
28、值运算符以及自增和自减运算符。二、上机内容1、 下面的程序均有语法错误,上机调试程序,注意观察Message窗口中的出错信息,并根据出错信息改正程序中的错误之处。(1) main() int a; 0=a; printf(a=%d,a)(2) main() int a; b=1,c=2; b+c=a; printf(a=%d,a);2、 运行下列程序,分析并观察运行结果。(1) main() int x,y; clrscr(); x=y=25; printf(x=%d,y=%d,x,y);(2) main() int x=3,y=2; clrscr(); x*=y+8; printf(1: x
29、=%dn,x); x-=y; printf(2: x=%dn,x);(3) main() int a=10,b; clrscr(); b=a+; printf(a=%d,b=%dn,a,b); b=+a; printf(a=%d,b=%dn,a,b);3、 完善程序。下面程序的功能是交换变量a和b的值,请在横线处填写正确的表达式或语句,使程序完整。程序的后面给出了该程序正确的运行结果,上机调试完善后的程序,看看你的程序运行结果是否与书中的结果一致。提示:交换两个变量的值,需要一个中间变量来暂时存放其中一个变量的值。下面的程序段是错误的: a=b; b=a;若变量a的初值为1,b的初值为2,那么
30、执行了第一个语句之后,变量a的值就变成了2,而不再是原来的值1。因此整个程序段执行之后,a和b的值均为2。main() int a=1,b=2,c; clrscr(); /* 输出交换前变量a和b的值 */ c= ; a= ; b= ; /* 输出交换后变量a和b的值 */运行结果:a=1,b=2a=2,b=1第四章 数据的输入与输出第一节学习指导五、 学习目标C语言的输入与输出是通过函数来实现的,本章重点介绍了六个输入输出函数,分别是:字符输入输出函数:getchar()函数和putchar()函数字符串输入输出函数:gets()函数和puts()函数格式输入输出函数:scanf()函数和p
31、rintf()函数本章学习目标如下:1、 熟练掌握各个输入输出函数的调用格式。2、 熟悉scanf()函数和printf()函数的控制参数。六、 输入输出在编程中的应用一个较简单的程序通常具有如下结构:数据输入数据处理数据输出其中,程序的核心部分是“数据处理”,而“数据输入”和“数据输出”同样是程序设计的重点,因为输入输出直接影响到程序的界面。可以说,操作界面是衡量一个软件成败的重要因素之一,这一点从DOS操作系统和Windows操作系统的界面就可得到验证。C语言中,通过灵活运用输入输出函数,就能实现友好的人机界面。七、 为什么要使用预编译命令#include在本书第三章的上机实习一中,一个求
32、一元二次方程实数根的程序里使用了下面的预编译命令: # include 而配套教材在第四章例题程序中,又多次使用了预编译命令: # include # include命令的作用是把头文件(如math.h和stdio.h)包含到本程序中,为什么要这样做呢?这是因为库函数的原型说明(如函数的类型及其参数类型、函数中用到的符号常量等等)被放在一个或多个头文件(扩展名为.H)中,如果你的程序要调用某个库函数,那么在程序的开头应该用文件包含预编译命令#include将相应的头文件包含进本程序中,否则,你的程序将不能顺利地通过编译。例如,程序中使用了getchar()函数,但程序的开头没有# includ
33、e 命令,编译时Message窗口中就会显示出如下出错信息:Undefined symbol _putchar八、 使用scanf()函数时容易出现的几个错误格式输入函数scanf()和格式输出函数printf()的用法非常灵活多变,特别是scanf()函数,初学者在使用时很容易出错。1、 变量名之前忘写取地址运算符&。调用scanf()函数时,变量名之前必须要有取地址运算符&,否则,将导致输入数据出错,而这样的错误又不会被编译程序和连接程序发现。看下面的程序:main() int a; scanf(%d,a); /* 变量a之前没有写取地址运算符& */ printf(a=%d,a);事实上
34、,这个程序能够顺利通过编译和连接,但程序的运行结果却是:100 (输入100后按回车键)a=201 (输出201)要想得到正确的运行结果,就要将程序中的 scanf(%d,a);改成 scanf(%d,&a);2、 输入实型数据时指定小数位数。使用printf()函数输出实型数据时,可以指定数据的宽度和小数位数,但使用scanf()函数输入实型数据时,允许指定数据的宽度,却不允许指定小数位数。看下面的程序:main() float a; scanf(%.2f,&a); printf(a=%d,a);这个程序同样能够顺利通过编译和连接,但运算结果却是错误的。程序运行时,并不等待输入变量a的值,而
35、是直接显示出下面的结果:a=12042818788786176.0000003、 想用scanf()函数显示输入数据的提示信息。在输入数据之前,让屏幕上显示出输入提示信息是一种很友好的做法。但是,C语言中不能通过输入函数来显示出提示信息。看下面的程序:main() int a,b; scanf(a=%d,b=%d,&a,&b); printf(a=%d,b=%d,a,b); 这个程序运行时不会显示出“a=”和“b=”,然后再等待输入变量a和b的值。特别要注意的是,scanf()函数的控制参数中,格式转换控制符之外的所有字符,在程序运行时都必须原样输入(而不是原样输出)。例如,上面的程序如果想把
36、1和2分别输入到变量a和b中,运行时就应输入如下的内容:a=1,b=2 (输入内容)a=1,b=2 (输出结果)错误的输入则会导致变量a和b的值不正确。如:1,2 a=5825,b=23016那么,怎样才能在程序运行时显示出提示信息呢?尽管上面程序中的输入函数scanf(a=%d,b=%d,&a,&b)毫无错误,并且运行时只要输入格式正确就不会影响运行结果,但是,scanf()函数的控制参数中类似“a=”和“b=”的写法是没有意义的,这样做只会增加输入的负担和出错的机会。要想在输入数据之前显示出提示信息,正确的做法应该是通过输出函数来实现。下面的三个程序都是求两个数之和,请比较一下它们的运行结
37、果。(1) main() int a,b,sum; scanf(%d,%d,&a,&b); sum=a+b; printf(%d,sum);运行结果:12,35 47(2) main() int a,b,sum; printf(a=); scanf(%d,&a); printf(b=); scanf(%d,&b); sum=a+b; printf(sum=%d,sum);运行结果:a=12 b=35 sum=47(3) main() int a,b,sum; printf(输入第一个整数:); scanf(%d,&a); printf(输入第二个整数:); scanf(%d,&b); sum=
38、a+b; printf(%d+%d=%d,a,b,sum);运行结果:输入第一个整数:12 输入第二个整数:35 12+35=47五、另一个常用的字符输入函数配套教材中介绍的getchar()函数和scanf()函数都可以用来输入字符。如,要输入一个字符到字符型变量ch中,可以写成: ch=getchar();或 scanf(%c,&ch);另外,getch()函数也是一个非常有用的字符输入函数,它的调用格式是: getch()该函数的返回值与getchar()函数相同,即返回输入字符的ASCII码。与getchar()函数不同的是,getch()函数执行时不等待按回车键,并且,屏幕上不显示输
39、入的字符。如果想实现程序在运行过程中暂停、按任意键之后又继续的功能,那么使用getch()函数就是最好最方便的选择。试分析下面的程序:main() int a,b,c; clrscr(); puts(输入两个整数:); scanf(%d,%d,&a,&b); c=a+b; clrscr(); printf(%d+%d=%dnnn,a,b,c); puts(按任意键继续.); getch(); c=a*b; clrscr(); printf(%d*%d=%dn,a,b,c);运行结果:输入两个整数:2,3 2+3=5按任意键继续.(按空格键)2*3=6第二节上机实习一:字符的输入和输出函数一、目
40、的要求1、 熟练掌握getchar()函数的调用方法,熟悉getchar()函数的返回值。2、 熟练掌握putchar()函数的调用方法。3、 了解getch()函数。二、上机内容1、 运行下列程序,注意观察运行结果。(1) #include main() char ch; clrscr(); ch=getchar(); putchar(ch); printf(-ASCII码:%d,ch);(2) #include main() char c1,c2; clrscr(); c1=getchar(); c2=getchar(); printf(c1=%cn,c1); /* 的作用是输出符号 */
41、 (c2=n)?printf(c2=回车符):printf(c2=%c,c2);说明:运行这个程序时,分别输入下面三组数据,注意观察各自的运行结果,并思考为什么会产生这样的运行结果。第一组数据:a 第二组数据:ab 第三组数据:abc (3) #include main() char ch,c1,c2; clrscr(); printf(请输入一个字母:); ch=getchar(); c1=ch-1; c2=ch+1; printf(n%c的前一个字母是%c,后一个字母是%c,ch,c1,c2);说明:可将程序中的语句 ch=getchar();改为: ch=getch();看看运行结果有什么变化。2、 完善程序。下面程序的功能是,输入一个小写字母,输出其对应的大写字母;若输入的不是小写字母,则提示输入出错。请在程序中的横线处填写正确的语句或表达式,使程序完整。上机调试程序,使运行结果与书中的结果一致。提示:(1) 大写字母与小写字母的ASCII码具有如下关系: 大写字母的ASCII码小写字母的ASCII码32(2) 可以使用条件表达式来判
限制150内