1、嘉应学院杨久红嘉应学院杨久红20102010年末年末第第1张张业精于勤而荒于嬉,行成于思而毁于随 韩愈 嘉应学院杨久红嘉应学院杨久红20102010年末年末4.1 C语句概述4.2 赋值语句4.3 数据输入输出的概念及在语言中的实现4.4 字符数据的输入输出4.5 格式输入与输出4.6 顺序结构程序设计举例第4章 最简单的C程序设计顺序程序设计嘉应学院杨久红嘉应学院杨久红20102010年末年末第第3张张本章大纲顺序程序设计(顺序程序设计(1 1学时)学时)教学内容:教学内容:1.赋值语句2.字符的输入输出函数3.格式输入输出4.顺序结构C程序的编写嘉应学院杨久红嘉应学院杨久红20102010
2、年末年末第第4张张基本要求:基本要求:1.了解C语言的基本语句;2.掌握赋值语句的使用方法;3.掌握数据输出函数的调用规则和格式字符的意义4.掌握数据输入函数的调用规则和地址运算符的使用;5.掌握顺序结构程序的设计方法。重点:重点:格式输入输出;顺序结构C程序的编写难点:难点:掌握格式输入输出嘉应学院杨久红嘉应学院杨久红20102010年末年末第第5张张图4.1C语言的语句用来向计算机系统发出操作指令,用来完成一定操作任务的。只是对变量的定义不是C语句4.1 C语句概述嘉应学院杨久红嘉应学院杨久红20102010年末年末第第6张张C语句可以分为以下5类:(1)9种控制语句,完成一定的控制功能。
3、if()else(条件语句)for()(循环语句)hile()(循环语句)dohile()(循环语句)continue (结束本次循环语句)break (中止执行switch或循环语句)sitch (多分支选择语句)goto (转向语句)return (从函数返回语句)括号括号()()表表示其中是一示其中是一个条件个条件表示内表示内嵌的语句嵌的语句嘉应学院杨久红嘉应学院杨久红20102010年末年末第第7张张(2)函数调用语句。由一个函数调用加一个分号构成一个语句。例如:printf(this is a c statement);(3)表达式语句。由一个表达式加上分号构成一个语句。i+i+;表
4、达式表达式语句语句嘉应学院杨久红嘉应学院杨久红20102010年末年末第第8张张(4)空语句。即只有一个分号的语句,它什么也不做。例如:for(i=1;i100;i+);/*延时*/(5)复合语句:用 把一些语句括起来成为复合语句,又称分程序。z=x+y;t=z/100;printf(“%f”,t);分号不要分号不要丢了!丢了!嘉应学院杨久红嘉应学院杨久红20102010年末年末第第9张张4.2 赋值语句a=3a=3;赋值表达式赋值表达式赋值语句赋值语句赋值语句是由赋值表达式加上一个分号构成。if(a=b)0)t=a;赋值语句赋值语句赋值表达式赋值表达式嘉应学院杨久红嘉应学院杨久红201020
5、10年末年末第第10张张4.3 数据输入输出的概念及在C语言中的实现计算机文件输出写读输入输入输出是输入输出是以以计算机为计算机为主体主体而言的。而言的。读和写是以读和写是以文件为主体文件为主体而言的。而言的。(1)输入输出和读写嘉应学院杨久红嘉应学院杨久红20102010年末年末第第11张张(2)C语言本身不提供输入输出语句,输入和输出操作是由标准输入输出函数来实现的。putcharputchar (输出字符输出字符)getchargetchar (输入字符输入字符)printfprintf (格式输出格式输出)scanfscanf (格式输入格式输入)puts (puts (输出字符串输出
6、字符串)gets (gets (输入字符串输入字符串)不是不是C C语言的关键字,语言的关键字,而只是函数的名字。而只是函数的名字。(3)在调用标准输入输出库函数时,文件开头应有以下预编译命令:#include 或#include studio.h嘉应学院杨久红嘉应学院杨久红20102010年末年末第第12张张4.5 字符数据的输入输出4.5.1 putchar函数(字符输出函数)1.作用:向终端输出一个一个字符字符。2.一般形式:putchar(参数)3.程序前加#include 例4.1输出单个字符。#include main()char a,b,c;a=B;b=O;c=Y;putchar
7、(a);putchar(b);putchar(c);putchar(n)BOY如果将例4.1最后一行改为putchar(a);putchar(n);putchar(b);putchar(n);putchar(c);putchar(n);BOY有且仅能有一个参数嘉应学院杨久红嘉应学院杨久红20102010年末年末第第13张张putchar()还可以输出其他转义字符,如:putchar(101)(输出字符A)putchar()(输出单引号字符)putchar(015)(输出回车,不换行,使输出的当前位置移到本行开头)1.101和015都是八进制2.参考48页字符形式ddd3.ASCII码与对应字符
8、参考附录A嘉应学院杨久红嘉应学院杨久红20102010年末年末第第14张张4.5.2 getchar函数(字符输入函数)1.作用:从终端输入一个一个字符字符。2.一般形式:getchar()3.程序前加#include 例4.2输入单个字符。#include main()char c;c=getchar();putchar(c);a agetchar()是无参函数put(getchar();把接收的字符输出。输入a后,按“回车”键,字符才送到内存嘉应学院杨久红嘉应学院杨久红20102010年末年末第第15张张4.6 格式输入与输出4.6.1 printf函数(格式输出函数)上机为主上机为主1.
9、作用:向终端(或系统隐含指定的输出设备)输出若干个任意类型的数据。2.一般格式:printf(格式控制,输出表列)格式说明格式说明普通字符%d%o%x%u%c%s%f%e%g 需要原样输需要原样输出的字符出的字符需要输出的变需要输出的变量,表达式量,表达式x,e,g可以是X,E,G%后可以加l,m,n,-用双引用双引号括起号括起来来嘉应学院杨久红嘉应学院杨久红20102010年末年末第第16张张a=123;b=12345;printf(“a=%4d,b=%4d,a,b);a=123,b=12345main()float f=123.456;printf(%f,f);printf(“%10.2f
10、”,f);123.456001 123.46charc=a;printf(“变量c的值为%c,c);变量c的值为a例printf(“%f%”,1.0/3);0.333333%嘉应学院杨久红嘉应学院杨久红20102010年末年末第第17张张上机为主上机为主1.作用:从终端(或系统隐含指定的输入设备)输入若干个任意类型的数据。2.一般格式:scanf(格式控制,地址表列)格式说明格式说明普通字符普通字符需要原样输需要原样输入的字符入的字符由若干个由若干个地址地址组成的表列组成的表列可以是变量的可以是变量的地址地址可以是字符串的可以是字符串的首地址首地址%后可以加l,h,*x,e,g可以是X,E,G
11、4.6.2 scanf函数(格式输入函数)%d%o%x%u%c%s%f%e%g地址嘉应学院杨久红嘉应学院杨久红20102010年末年末第第18张张例4.9用scanf函数输入数据。main()int a,b,c;scanf(“%d%d%d”,&a,&b,&c);printf(%d,%d,%dn,a,b,c);3 4 5 3,4,5 a=3 b=4 c=5“&”是地址运算符(优先级为2)&a指a在内存中的地址。哪种输入哪种输入方法对?方法对?3,4,5嘉应学院杨久红嘉应学院杨久红20102010年末年末第第19张张例1:scanf(%3d%3d,&a,&b);输入:123456系统自动将123a
12、,456b例2:scanf(“%3c”,&ch);输入:abcdef系统自动将abcch例如:scanf(%2d%*3d%2d,&a,&b);输入:12 345 67 系统自动将12 a,%*3d表示读入3位整数但不赋给任何变量。再67 b。例如:scanf(%72f,&a);说明(1)可以指定输入数据所占列数,系统自动按它截取所需数据。(3)输入数据时不能规定精度。(2)如果在%后有一个“*”附加说明符,表示跳过它指定的列数。嘉应学院杨久红嘉应学院杨久红20102010年末年末第第20张张例如:scanf(“a=%d,b=%d,&a,&b);输入:a=3,b=4例如:scanf(%c%c%c
13、,&c1,&c2,&c3);输入:a b ca c1,c2,b c3原因:%c只要求读入一个字符,后面不需要用空格作为两个字符的间隔。scanf(%d%c%f,&a,&b,&c);输入 1234 a 123o.26 a b c 说明(续)(4)如果在“格式控制”符中除了格式说明还有其他字符,则在输入数据时应输入与这些字符相同的字符(6)在输入数据时,遇以下情况时认为该数据结束。遇空格,或按“回车”或“跳格”(tab)键。按指定的宽度结束 遇非法输入。(5)用“%c”格式输入字符时,空格字符和“转义字符”都作为有效字符输入嘉应学院杨久红嘉应学院杨久红20102010年末年末第第21张张4.7 顺
14、序结构程序设计举例例4.10输入三角形的三边长,求三角形面积。为简单起见,设输入的三边长a、b、c能构成三角形。从数学知识已知求三角形面积的公式为其中s=(a+b+c)/2嘉应学院杨久红嘉应学院杨久红20102010年末年末第第22张张开始输入三边长s=(a+b+c)/2输出三边长和面积结束4.10流程图嘉应学院杨久红嘉应学院杨久红20102010年末年末第第23张张3,4,6a=3.00,b=4.00,c=6.00,s=6.50area=533sqrt()求平方根函数用1/2不行吗?数学函数的头文件include main()float a,b,c,s,area;scanf(%f,%f,%f
15、”,&a,&b,&c);s=1.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c);printf(“a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2fn”,a,b,c,s);printf(area=%7.2fn“,area);嘉应学院杨久红嘉应学院杨久红20102010年末年末第第24张张例4.11从键盘输入一个大写字母,要求改用小写字母输出。开始输入待转换的小写字母将小写转换成大写结束4.11流程图输出小写字母及其ASCII码输出大写字母及其ASCII码嘉应学院杨久红嘉应学院杨久红20102010年末年末第第25张张#include main()c
16、har cl,c2;cl=getchar();printf(%c,%dn,cl,cl);c2=cl+32;printf(%c,%dn,c2,c2);AA,65a,97嘉应学院杨久红嘉应学院杨久红20102010年末年末第第26张张例4.12求ax2+bx+c=0方程的根。a,b,c由键盘输入,设b2-4ac0。众所周知,一元二次方程式的根为可以将上面的分式分为两项:嘉应学院杨久红嘉应学院杨久红20102010年末年末第第27张张开始输入方程系数a,b.,c输出x1,x2结束4.12流程图disc=b*b-4ac嘉应学院杨久红嘉应学院杨久红20102010年末年末第第28张张include ai
17、n();float a,b,c,disc,x1,x2,p,q;scanf(a=%f,b=%f,c=%f,&a,&b,&c);disc=b*b-4*a*c;p=-b/(2*a);q=sqrt(disc)/(2*a);x1=p+q;x2=p-q;printf(nnx1=%5.2fnx2=%5.2fn,x1,x2);a=1,b=3,c=2x1=-100 x2=-200嘉应学院杨久红嘉应学院杨久红20102010年末年末第第29张张第一次上机实验题目名称名称:最简单的C程序设计内容内容:4.8,4.9(P89,参考例题4.10),选做 题3.7(P67,参考例题3.7)目的目的:(1)掌握如何编辑、编译、连接和运行一个C程序。(2)掌握赋值语句的使用方法;(3)掌握各种类型数据的输入输出方法,能正确使用格式转换符。(3)练习画流程图。(4)进一步学习调试程序。