C程序设计2020/2/241第3章顺序程序设计《C程序设计》C程序设计2020/2/2423.1C语句概述3.2赋值语句3.3输入/输出函数3.4结构化程序设计思想3.5顺序结构程序设计举例第三章简单的C程序设计C程序设计2020/2/243C语句可分为以下5类表达式语句:由一个表达式构成一个语句函数调用语句:由一次函数调用加一个分号构成一个语句控制语句(9种):完成一定控制功能。复合语句空语句§3.1C语句的概述C程序设计2020/2/244§3.2赋值语句其一般形式为:变量=表达式;1.变量=(变量=表达式);是成立的。2.inta=5,b=6;c=7;d=9;二者是不同的。3.在变量说明中,不允许连续给多个变量赋同一初值。如:inta=b=b=3;4.if((x=y+5)0)z=x;合法if((x=y+5;)0)z=x;非法C程序设计2020/2/245§3.3输入输出函数输入:Input输出:OutputC语言没有I/O语句,只有I/O函数。调用系统函数时,在程序的开头要有头文件#include“stdio.h”C程序设计2020/2/246一、字符数据I/O1.putchar()函数(字符输出函数)格式:putchar(c);说明:c为参数,为字符型或整型的常量、变量或表达式。作用:putchar()函数的功能是向终端(显示器)输出一个字符。§3.3输入输出函数C程序设计2020/2/247【例3-1】使用putchar函数输出字符。#includestdio.hmain(){charx,y,z;x='B';y='Y';z='E';putchar(x);putchar(y);putchar(z);}结果:BYE§3.3输入输出函数C程序设计2020/2/248【例3-2】输出控制字符的putchar()函数。#includestdio.hmain(){charx,y,z;x='B';y='Y';z='E';putchar(x);putchar('\n');putchar(y);putchar('\n');putchar(z);}结果:BYE§3.3输入输出函数C程序设计2020/2/2492、getchar()函数(字符输入函数)格式:getchar();说明:()内无参数作用:从键盘(或系统默认的输入设备)输入一个字符。§3.3输入输出函数C程序设计2020/2/2410【例3-3】输入/输出单个字符。#includestdio.hmain(){charc;printf(inputacharacter\n);c=getchar();putchar(c);}§3.3输入输出函数结果:inputacharacterB↙BC程序设计2020/2/2411注意:(1)getchar()函数只能接受单个字符,输入数字也按字符处理。输入多于一个字符时,只接收第一个字符。【例3-4】输入多个字符,输出单个字符。#includestdio.hmain(){intc;c=getchar();printf(%c:%d\n,c,c);}§3.3输入输出函数结果:abc↙a:97C程序设计2020/2/2412(2)在TC屏幕下运行含【例3-4】程序时,将退出TC屏幕,进入用户屏幕等待用户输入。输入完毕后再返回TC屏幕。(3)【例3-4】程序最后两行可用下面两行的任意一行代替:putchar(getchar());或printf(%c,getchar());§3.3输入输出函数C程序设计2020/2/2413二、格式输入与输出1.printf函数()(格式输出函数)(1)printf()函数调用的一般形式printf(“格式控制字符串”,输出表列);作用:按用户指定的格式,把指定的数据显示到显示器屏幕上。说明:①格式控制字符串用于指定输出格式,由格式字符串和普通字符串组成。②输出表列中给出了各个输出项,要求格式字符串和各输出项在数量和类型上应该一一对应。§3.3输入输出函数C程序设计2020/2/2414【例3-5】格式控制字符串的使用。main(){inta=98,b=99;printf(%d%d\n,a,b);printf(%d,%d\n,a,b);printf(%c,%c\n,a,b);printf(a=%d,b=%d,a,b);}结果:989998,99b,ca=98,b=99§3.3输入输出函数C程序设计2020/2/2415(2)格式字符串在TurboC中格式字符串的一般形式为:%[标志][输出最小宽度][.精度][长度]类型其中,方括号[]中的项为可选项作用:指定输出项的数据类型和输出的格式各项的意义介绍如下:①%:表示格式字符串的起始符号,不可缺少。§3.3输入输出函数C程序设计2020/2/2416②类型:类型字符用以表示输出数据的类型,其格式符和意义如右表所示:格式字符意义d以十进制形式输出带符号整数(正数不输出符号)o以八进制形式输出无符号整数(不输出前缀0)x,X以十六进制形式输出无符号整数(不输出前缀Ox)u以十进制形式输出无符号整数f以小数形式输出单、双精度实数e,E以指数形式输出单、双精度实数g,G以%f或%e中较短的输出宽度输出单、双精度实数c输出单个字符s输出字符串§3.3输入输出函数C程序设计2020/2/2417③标志:标志字符为-、+、#、空格4种,其意义如下表所示:标志意义-结果左对齐,右边填空格+输出符号(正号或负号)空格输出值为正时冠以空格,为负时冠以负号#对c,s,d,u类无影响;对o类,在输出时加前缀o;对x类,在输出时加前缀0x;对e,g,f类,当结果有小数时才给出小数点§3.3输入输出函数C程序设计2020/2/2418④输出最小宽度:用十进制整数来表示输出的最少位数。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0。⑤精度:精度格式符以“.”开头,后跟十进制整数。本项的意义是:如果输出的是数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。⑥长度:长度格式符为h,l两种,h表示按短整型量输出,l表示按长整型量输出。§3.3输入输出函数C程序设计2020/2/2419main(){inta=15;floatb=123.1234567;doublec=12345678.1234567;chard='p';printf(a=%d,%5d,%o,%x\n,a,a,a,a);printf(b=%f,%lf,%5.4lf,%e\n,b,b,b,b);printf(c=%lf,%f,%8.4lf\n,c,c,c);printf(d=%c,%8c\n,d,d);}结果:a=15,15,17,fb=123,123459,123.123459,123.1235,1.23123e+02c=12345678.123457,12345678.123457,12345678.1235d=p,p【例3-6】printf()函数的格式输出。§3.3输入输出函数C程序设计2020/2/2420main(){inti=8;printf(%d\n%d\n%d\n%d\n%d\n%d\n,++i,--i,i++,i--,-i++,-i--);}结果:8778-7-8【例3-7】printf()函数求值的顺序。§3.3输入输出函数C程序设计2020/2/2421main(){inti=8;printf(%d\n,++i);printf(%d\n,--i);printf(%d\n,i++);printf(%d\n,i--);printf(%d\n,-i++);printf(%d\n,-i--);}结果:9889-8-9【例3-8】判断变量的变化。§3.3输入输出函数C程序设计2020/2/2422#includestdio.hmain(){inti=-6,x=5;floaty=123.456;printf(%d,%d\n,i);printf(%-4d,%f,i,y,x);}结果:-6,2509-6,123.456001【例3-9】printf()输出参数不一致产生的错误。§3.3输入输出函数C程序设计2020/2/24232.scanf()函数(格式输入函数)(1)scanf()函数的一般形式:scanf(“格式控制字符串”,地址表列);作用:从键盘向程序中的变量输入一个或若干个任意类型的数据。二、格式输入与输出§3.3输入输出函数C程序设计2020/2/2424格式字符串的一般形式为:%[*][输入数据宽度][长度]类型其中,有方括号[]的项为任选项。①类型:表示输入数据的类型,其格式符意义如下表所示。(2)格式字符串格式字符意义d输入十进制整数o输入八进制整数x输入十六进制整数u输入无符号十进制整数f或e输入实型数(用小数形式或指数形式)c输入单个字符s输入字符串§3.3输入输出函数C程序设计2020/2/2425格式字符串的一般形式说明:②“*”符:用以表示该输入项,读入后不赋予相应的变量,即跳过该输入值。例如:scanf(%d%*d%d,&a,&b);当输入为:123时,把1赋予a,2被跳过,3赋予b。③宽度:用十进制整数指定输入数据的宽度(即字符数)。④长度:长度格式符为l和h。l表示输入长整型数据(如%ld)和双精度浮点数(如%lf);h表示输入短整型数据。§3.3输入输出函数C程序设计2020/2/2426使用scanf()函数还必须注意以下几点:①scanf()函数中没有精度控制。例如:scanf(%5.2f,&a);/*是非法的*/不能企图使用此语句限制输入的数据为2位小数的实数。②scanf()中要求给出变量地址,若给出变量名,则会出错。例如:scanf(%d,a);是不对的,应改为scanf(“%d”,&a);才是合法的。这是C语言与其他高级语言不同之处。许多初学者常在此出错。§3.3输入输出函数C程序设计2020/2/2427使用scanf()函数还必须注意以下几点:③在输入多个数值数据时,若格式控制串中没有非格式字符作为输入数据之间的间隔,则可用空格、Tab键或回车键作为间隔。C语言编译系统在遇到空格、Tab键、回车键或非法数据(如对“%d”输入“12A”时,A即为非法数据)时,即认为该数据结束。④在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。§3.3输入输出函数C程序设计2020/2/2428main(){chara,b;printf(inputcharactera,b\n);scanf(%c%c,&a,&b);printf(%c,%c\n,a,b);}运行结果:MN↙M,【例3-11】没有空格的输入。§3.3输入输出函数C程序设计2020/2/2429main(){chara,b;printf(inputcharactera,b\n);scanf(%c%c,&a,&b);printf(\n%c%c\n,a,b);}运行结果:MN↙MN【例3-12】有空格的输入。§3.3输入输出函数C程序设计2020/2/2430使用scanf()函数还必须注意以下几点:⑤如果格式控制串中有非格式字符,则输入时也要输入该非格式字符。例如:scanf(“%d,%d,%d”,&a,&b,&c);其中用非格式符“,”作为间隔符,故输入时应为:5,6,7⑥当输入的数据与输出的类型不一致时,虽然编译能够通过,但结果将不正确。§3.3输入输出函数C程序设计2020/2/2431main(){inta;printf(inputanumber\n);scanf(%d,&a);printf(%ld,a);}运行结果:8↙524296【例3-13】类型不统一出现的问题。§3.3输入输出函数C程序设计2020/2/2432main(){inta;printf(inputanumber\n);scanf(%d,&a);printf(%ld,a);}运行结果