您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > C语言教程第4章 最简单的C程序设计---顺序程序设计
第4章最简单的c程序设计—顺序程序设计信息工程系4.1C语句概述程序的三种基本结构4.2赋值语句4.3数据输入输出的概念及在C语言中的实现4.4字符数据的输入输出4.5格式输入与输出4.6顺序结构程序设计举例习题4.1C语句概述C语句可以分为以下5类:(1)控制语句,完成一定的控制功能。c只有9种控制语句,它们是:①if()~else~(条件语句)②for()~(循环语句)③while()~(循环语句)④do~while()(循环语句)⑤continue(结束本次循环语句)⑥break(中止执行switch或循环语句)⑦switch(多分支选择语句)⑧goto(转向语句)⑨return(从函数返回语句)(2)函数调用语句。printf(thisisacstatement.);(3)表达式语句。a=5*7;(4)空语句。;(5)复合语句。{z=x+y;t=z/100;printf(%f,t);}程序的三种基本结构(第24页)(1)顺序结构ABAB(2)选择结构多分支选择结构(3)循环结构①当型循环结构(3)循环结构②直到型循环结构4.2赋值语句(1)C语言中的赋值号“=”是一个运算符(2)关于赋值表达式与赋值语句的概念x=3*y赋值表达式x=3*y;赋值语句注意:赋值表达式和赋值语句的使用场合!4.3数据输入输出的概念及在C语言中的实现(1)所谓输入输出是以计算机主机为主体而言的。(2)C语言本身不提供输入输出语句,输入和输出操作是由函数来实现的。(3)在使用c语言库函数时,要用预编译命令“#include”将有关的“头文件”包括到用户源文件中。4.4字符数据的输入输出本节介绍两个字符输入输出函数putchar()和getchar()函数。4.4.1putchar函数(字符输出函数)putchar函数的格式:putchar(参数);putchar函数的作用:是向终端输出一个字符。其参数可为:1.字符常量2.已赋值的字符变量3.getchar()4.ASCII码范围内的整数值例如:putchar(‘a’);putchar(c);/*charc=‘a’;*/putchar(getchar());putchar(66);例4.1输出单个字符。#includestdio.hmain(){chara,b,c;a=‘B’;b=‘O’;c=‘Y’;putchar(a);putchar(b);putchar(c);}运行结果:BOY4.4.2getchar函数(字符输入函数)getchar函数没有参数,其一般形式为:getchar()getchar函数的作用是:从终端(或系统隐含指定的输入设备)输入一个字符。例4.2输入单个字符#includestdio.hmain(){charc;c=getchar();putchar(c);putchar(getchar());printf(“%c”,getchar());}4.5.1printf函数(格式输出函数)1.printf函数的一般格式为:printf(“格式控制”,输出表列)如:printf(%d,%c\n,i,c)括弧内包括两部分:(1)“格式控制”是用双引号括起来的字符串(2)输出表列是需要输出的一些数据,可以是表达式。4.5格式输入与输出“格式控制”也称“转换控制字符串”,它包括两种信息:①格式说明,由“%”和格式字符组成,如%d,%f等。它的作用是将输出的数据转换为指定的格式输出。格式说明总是由“%”字符开始的。②普通字符,即需要原样输出的字符。例如上面printf函数中双引号内的逗号、空格和换行符。2.格式字符(1)d格式符。用来输出十进制整数。有以下几种用法:①%d,按整型数据的实际长度输出。②%md,m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。如printf(%4d,%4d,a,b);若a=123,b=12345,则输出结果为123,12345③%ld,输出长整型数据。如:longa=135790;printf(%ld,a);(2)o格式符,以八进制数形式输出整数。(%o,%lo)由于是将内存单元中的各位的值(0或1)按八进制形式输出,因此输出的数值不带符号,即将符号位也一起作为八进制数的一部分输出。例如:inta=-1;printf(%d,%o,a,a);输出为:-1,177777(3)x格式符,以十六进制数形式输出整数。(%x,%lx)同样不会出现负的十六进制数。例如:inta=-1;printf(%x,%o,%d,a,a,a);输出结果为:ffff,177777,-1(4)u格式符,用来输出unsigned型数据,即无符号数,以十进制形式输出。(%u,%o,%x)一个有符号整数(int型)也可以用%u格式输出;反之,一个unsigned型数据也可以用%d格式输出。按相互赋值的规则处理(见第2章2.9节)。unsigned型数据也可用%o或%x格式输出。例4.3无符号数据的输出。main(){unsignedinta=65535;intb=-2;printf(a=%d,%o,%x,%u\n,a,a,a,a);printf(b=%d,%o,%x,%u\n,b,b,b,b);}运行结果为:a=-1,177777,ffff,65535b=-2,177776,fffe,65534(5)c格式符,用来输出一个字符。如:charch='a';printf(%c,ch);一个整数,只要它的值在0~255范围内,也可以用字符形式输出,在输出前,系统会将该整数作为ASCII码转换成相应的字符;反之,一个字符数据也可以用整数形式输出。例4.4字符数据的输出。main(){charc='a';inti=97;printf(%c,%d\n,c,c);printf(%c,%d\n,i,i);}运行结果为:a,97a,97(6)s格式符,用来输出一个字符串。有几种用法:①%s,例如:printf(%s,china)输出“china”字符串(不包括双引号)。②%ms,输出的字符串占m列,如字符串本身长度大于m,则突破m的限制,将字符串全部输出。若串长小于m,则左补空格。③%-ms,如果串长小于m,则在m列范围内,字符串向左靠,右补空格。④%m.ns,输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格。⑤%-m.ns,其中m、n含义同上,n个字符输出在m列范围的左侧,右补空格。如果n>m,则m自动取n值,即保证n个字符正常输出。例4.5字符串的输出。main(){printf(%3s,%7.2s,%.4s,%-5.3s\n,china,china,china,china);}输出如下:china,ch,chin,chi(7)f格式符,用来输出实数(包括单、双精度),以小数形式输出。有以下几种用法:①%f,不指定字段宽度,由系统自动指定,使整数部分全部如数输出,并输出6位小数。例4.6输出实数时的有效位数。main(){floatx,y;x=111111.111;y=222222.222;printf(%f,x+y);}运行结果为:333333.328125双精度数也可用%lf格式输出双精度数的有效位数一般为16位,给出小数6位。例4.7输出双精度数时的有效位数。main(){doublex,y;x=1111111111111.111111111;y=2222222222222.222222222;printf(%lf,x+y);}输出结果为:3333333333333.333010②%m.nf指定输出的数据共占m列,其中有n位小数。如果数值长度小于m,则左端补空格。③%-m.nf与%m.nf基本相同,只是使输出的数值向左端靠,右端补空格。例4.8输出实数时指定小数位数。main(){floatf=123.456;printf(%f%10f%10.2f%.2f%-10.2f\n,f,f,f,f,f);}(8)e格式符,以指数形式输出实数。①%e②%m.ne和%-m.ne(9)g格式符,用来输出实数,它根据数值的大小,自动选f格式或e格式(选择输出时占宽度较小的一种),且不输出无意义的零。在使用printf函数时,还有几点要说明:(1)除了x,e,g外,其他格式字符必须用小写字母,如%d不能写成%D。(2)可以在printf函数中的“格式控制”字符串内包含第2章2.5节2.5.1段中的“转义字符”,如“\n”、“\t”、“\b”、“\r”、“\f”、“\377”等。(3)上面介绍的d、o、x、u、c、s、f、e、g等字符,如用在“%”后面就作为格式符号。一个格式说明以“%”开头,以上述9个格式字符之一为结束,中间可以插入附加格式字符(也称修饰符)。(4)如果想输出字符“%”,则应该在“格式控制”字符串中用连续两个%表示,如:printf(%f%%,1.0/3);输出:0.333333%4.5.2scanf函数(格式输入函数)1.一般形式scanf(“格式控制”,地址表列)“格式控制”的含义同printf函数;“地址表列”是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址。例4.9用scanf函数输入数据。main(){inta,b,c;scanf(“%d%d%d”,&a,&b,&c);printf(%d,%d,%d\n,a,b,c);}注:“&”是“地址运算符”,&a指a在内存中的地址。“%d%d%d”表示按十进制整数形式输入数据。输入数据时,在两个数据之间以一个或多个空格间隔,也可以用回车键、跳格键tab。2.格式说明和printf函数中的格式说明相似,以%开始,以一个格式字符结束,中间可以插入附加的字符。说明:(1)对unsigned型变量所需的数据,可以用%u,%d或%o,%x格式输入。(2)可以指定输入数据所占列数,系统自动按它截取所需数据。如,scanf(%3d%3d,&a,&b);输入:123456系统自动将123赋给a,456赋给b。此方法也可用于字符型:scanf(%3c,&ch);如果从键盘连续输入3个字符abc,由于ch只能容纳一个字符,系统就把第一个字符‘a’赋给ch。(3)如果在%后有一个“*”附加说明符,表示跳过它指定的列数。(即虚读)例如:scanf(%2d%*3d%2d,&a,&b);如果输入如下信息:1234567将12赋给a,%*3d表示读入3位整数但不赋给任何变量。然后再读入2位整数67赋给b。(4)输入数据时不能规定精度,例如,scanf(%7.2f,&a);是不合法的。3.使用scanf函数时应注意的问题(1)scanf函数中的“格式控制”后面应当是变量地址,而不应是变量名。例如,如果a、b为整型变量,则scanf(%d,%d,a,b);是不对的,应将“a,b”改为“&a,&b”。(2)如果在“格式控制”字符串中除了格式说明以外还有其他字符,则在输入数据时应输入与这些字符相同的字符。(3)在用“%c”格式输入字符时,空格字符和“转义字符”都作为有效字符输入。scanf(%c%c%c,&c1,&c2,&c3);如输入:abc字符‘a’送给c1,字符‘’送给c2,字符‘b’送给c3,因为%c只要求读入一个字符,后面不需要用空格作为两个字符的间隔,因此‘’作为下一个字符送给c2。(4)在输入数据时,遇以下情况时该数据认为结束。①遇空格,或按“回车”或“跳格”(tab)键。②按指定的宽度结束,如“%3d”,只取3列。③遇非法输入。如:scanf(%d%c%f,&a,&b,&c);若输入:1234a1230.26↓↓↓abc4.6顺序结构程序设计举例例4.10输入三角形的三边长,求三角形面积。#includemath.hmain(){floata,b,c,s,area;scanf(%f,%f,%f,&a,&b,&c);s=1.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));printf(a=%7.2f
本文标题:C语言教程第4章 最简单的C程序设计---顺序程序设计
链接地址:https://www.777doc.com/doc-6133827 .html