《第四章 最简单的C程序设计――顺序程序设计.doc》由会员分享,可在线阅读,更多相关《第四章 最简单的C程序设计――顺序程序设计.doc(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第四章 最简单的C程序设计顺序程序设计4.1 C语句概述 一个C程序应由两部分组成,即数据描述和数据操作。数据描述:用来定义数据结构和预置数据初值,由声明部分实现。如:int a=3;数据操作:对已提供的数据进行加工,由语句来实现。所以,语句是C程序的主体。C语句可以分为5大类。411 程序控制语句 if() else for() while() do while() continuebreakswitchgotoreturn其中:()表示一个条件。 表示内嵌的语句。如:if(xy) z=x;else z=y;412 函数调用语句由函数加上一个分号构成。如:printf(“hellow”);4
2、13 表达式语句表达式加上一个分号即可组成一个表达式语句。如:i=1;x=sin(y);等。414 空语句一个分号就是一个空语句,表示什么都不做。415 复合语句用括起的一个语句序列。 如: z=x+y;t=z/100; printf(“%f”,t);416 赋值语句1、 构成:赋值语句由赋值表达式加上一个分号构成。如a=b;。2、 说明1) C语言中的赋值号是一个运算符,这是与其它高级语言相区别的。2) 赋值表达式作为表达式可以出现在其它任何表达式中,而作为语句则不能。 如:if(a=b)0)t=a;,表示先将b赋给a,且如果a0则将a赋给t。 但:if(a=b;)0)t=a;,则是错误的。
3、4.2 数据输入输出的概念及在C中的应用421 数据输入输出的概念1、 输入:相对于计算机主机而言,从外设读入数据。如:键盘、磁盘、光盘等。2、 输出:相对于计算机主机而言,向外设输出数据。如:显示器、磁盘、打印机。422 数据输入输出的实现1、 C本身并不提供输入输出语句,输入输出操作是由函数来实现的。函数已编译成OBJ文件以库的形式存放在系统中,在源程序编译后由连接程序将它和库进行连接生成可执行文件。2、 在使用输入输出函数之前,在程序的开头应加上包含了与标准I/O库有关的变量定义和宏定义的头文件。格式为:#include “stdio.h”或#include 但标准的输入输出操作scan
4、f和printf由于使用频繁,可以不加#include命令。4.3 字符数据的输入输出431 单个字符的输出1、 格式putchar(字符型数据);2、 功能 向标准输出设备输出一个字符。3、 说明1) 也可以输出整型数据,此时,该数据作为字符的ASCII码值。2) 该函数使用前需用#include “stdio.h”或#include 。 例1: #include main() char c; /*定义字符变量*/ c=B; /*给字符变量赋值*/ putchar(c); /*输出该字符*/ putchar(x42); /*输出字母B*/ putchar(0x42); /*直接用ASCII码
5、值输出字母B*/ 432 单个字符的输入1、 格式getchar();2、 功能 等待从键盘上读入字符, 直到按回车结束, 回车前的所有输入字符都会逐个显示在屏幕上,但只有第一个字符作为函数的返回值。3、 说明1) 该函数的返回值可以赋给整型或字符型变量,也可作为表达式的一部分。如:putchar(getchar();2) 该函数使用前需用#include “stdio.h”或#include 。 例2: #include main() char c; c=getchar(); /*从键盘读入字符直到回车结束*/ putchar(c); /*显示输入的第一个字符*/ 4.4 格式输入与输出 T
6、urbo C2.0标准库提供了两个控制台格式化输入、输出函数printf()和scanf(), 这两个函数可以在标准输入输出设备上以各种不同的格式读写数据。printf()函数用来向标准输出设备(屏幕)写数据;scanf()函数用来从标准输入设备(键盘)上读数据。下面详细介绍这两个函数的用法。 441 格式输出函数1、 格式 printf(, ); 其中:格式控制包括两部分内容: 一部分是正常字符, 这些字符将按原样输出;另一部分是格式化控制字符, 以%开始, 后跟一个或几个规定字符,用来确定输出内容格式。输出表列是需要输出的一系列参数, 其参数必须与格式化字符串所说明的输出参数个数一样多,
7、各参数之间用,分开, 且顺序一一对应, 否则将会出现错误。2、 功能以指定的格式向显示器输出“输出表列”的内容,“输出表列”可以是任意类型的数据。3、 讨论1) 格式化控制符 Turbo C2.0提供的格式化规定符如下: 符号 作用 %d,%i 带符号十进制形式输出整数(正号不输出) %u 无符号十进制形式输出整数 %f 小数形式输出单、双精度数,隐含6位小数 %s 输出字符串 %c 输出单个字符 %e,%E 指数形式输出单、双精度数,隐含6位小数%x, %X 无符号十六进制形式输出整数(不输出前导符“0”) %x:小写输出af;%X:大写输出AF %o 无符号八进制形式输出整数(不输出前导符
8、“0”)%g,%G 选择%f、%e中输出宽度较短的格式,不输出无意义的“0” 用%G时,若以指数形式输出,则指数大写表示2) 特殊规定字符 字符 作用 n 换行 f 清屏并换页 r 回车 t Tab符 ddd 八进制表示的ASCII码 xhh 十六进制表示的ASCII码 3) 说明 在%和字母之间可以插进数字表示最大场宽。 例如: %3d表示输出3位整型数, 不够3位右对齐。 %9.2f表示输出9位实数, 其中小数2位,整数6位,小数点1 位, 不够9位右对齐。 %8s表示输出8个字符的字符串, 不够8个字符右对齐。 如果字符串的长度、或整型数位数超过说明的场宽, 将按其实际长度输出。但对实数
9、, 若整数部分位数超过了说明的整数位宽度, 将按实际整数位输出;若小数部分位数超过了说明的小数位宽度, 则按说明的宽度以四舍五入输出。 另外, 若想在输出值前加一些0, 就应在场宽项前加一个0。 例如: %04d表示在输出一个小于4位的数值时, 将在前面补0使其总宽度为4位。 如果用实数表示字符或整型量的输出格式, 小数点后的数字代表最大宽度, 小数点前的数字代表最小宽度。 例如: %6.9s表示显示一个长度不小于6且不大于9的字符串。若大于9, 则第9个字符以后的内容将被删除。 可以在%和字母之间加小写字母l, 表示输出的是长型数。 例如: %ld表示输出long整数 %lf表示输出doub
10、le实数 输出默认为右对齐,但如果在%和字母之间加入一个- 号则输出为左对齐。 例如: %-7d表示输出7位整数左对齐 %-10s表示输出10个字符左对齐4、 例子 #include #include int main() char c, sHello, Comrade; int a=1234; float f=3.9; double x=0.; c=x41; printf(a=%dn, a); /*结果输出十进制整数a=1234*/ printf(a=%6dn, a); /*结果输出6位十进制数a= 1234*/ printf(a=%06dn, a); /*结果输出6位十进制数a=*/ pr
11、intf(a=%2dn, a); /*a超过2位, 按实际值输出a=1234*/ printf(*i=%4dn, *i); /*输出4位十进制整数*i=12*/ printf(f=%fn, f); /*输出浮点数f=3.*/ printf(f=6.4fn, f); /*输出6位其中小数点后4位的浮点数f=3.1416*/ printf(x=%lfn, x); /*输出长浮点数x=0.*/ printf(x=%18.16lfn, x);/*输出18位其中小数点后16位的长数 x=0.65432*/ printf(c=%cn, c); /*输出字符c=A*/ printf(c=%xn, c); /
12、*输出字符的ASCII码值c=41*/ printf(s=%sn, s); /*输出数组字符串s=Hello, Comrade*/ printf(s=%6.9sn, s); /*输出最多9个字符的字符串s=Hello,Co*/ 442 格式输入函数1、 格式 scanf(, ); 其中:格式控制包括三部分内容: 一部分是格式化控制字符, 以%开始, 与printf()的用法基本相同;第二部分是“空格”,其作用是在读操作时略去输入数据中的一个或多个空格字符;第三部分是非空格字符,其作用是在读操作时剔除与该字符相同的字符。输出表列是需要输出的一系列参数, 其参数必须与格式化字符串所说明的输出参数个
13、数一样多, 各参数之间用,分开, 且顺序一一对应, 否则将会出现错误。地址表是需要读入的所有变量的地址, 而不是变量本身。这与printf()函数完全不同, 要特别注意。各个变量的地址之间同,分开。2、 功能以指定的格式从键盘读入数据,并顺序存放到“地址表”指定的存储单元中,并剔除掉“格式控制”中指定的字符。 例:main() int i, j; printf(i, j=?n); scanf(%d, %d, &i, &j); 上例中的scanf()函数先读一个整型数, 然后把接着输入的逗号剔除掉, 最后读入另一个整型数。如果,这一特定字符没有找到, scanf()函数就终止。若参数之间的分隔符
14、为空格, 则参数之间必须输入一个或多个空格。3、 讨论1) 对于字符串数组或字符串指针变量, 由于数组名和指针变量名本身就是地址, 因此使用scanf()函数时, 不需要在它们前面加上&操作符。 mian() char *p, str20; scanf(%s, p); /*从健盘输入字符串*/ scanf(%s, str); printf(%sn, p); /*向屏幕输出字符串*/ printf(%sn, str); 2) 可以在格式化控制字符中的%和规定字符之间加一个整数, 表示读操作中数的最大位数。如:scanf(%10s, p);,程序运行时一旦输入字符个数大于10, p就不再继续读入,
15、 而后面的一个输入函数即scanf(%s, str)就会从第11个字符开始读入。3) 在用“%c”输入字符时,空格字符和转义字符都作为有效字符。4) 数据输入的结束标志是回车键,但遇到下列符号也视为输入结束,即该符号后的数据无效,但整个输入过程仍是按下回车键结束。 空格键 Tab键 非法输入 超过指定的数据宽度4.5 顺序结构程序设计举例例1:输入三角形的条边长,求三角形的面积。 #include “math.h” main()float a,b,c,s,aera; scanf(“%f,%f,%f”,&a,&b,&c); s=1.0/2*(a+b+c); aera=sprt(s*(s-a)*(
16、s-b)*(s-c); printf(“a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f,aera=%7.2fn”,a,b,c,s,aera); 例2:求方程ax2+bx+c=0的根,a,b,c的值由键盘上输入,设b2-4ac0。 #include ”math.h” main() 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);