C语言第03章顺序结构_第1页
C语言第03章顺序结构_第2页
C语言第03章顺序结构_第3页
C语言第03章顺序结构_第4页
C语言第03章顺序结构_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言程序设计第3章顺序结构程序设计问题:一年有春夏秋冬四季,按序执行,做事亦有先后顺序,那么C语言在编写程序时可以采用这样的顺序结构吗?

按程序书写的前后顺序依次按序执行。顺序结构程序设计

C语言同样提供了这种最简单的程序设计结构:顺序结构。引子

本章重点第3章顺序结构程序设计

本章难点

C语言基本语句的分类字符数据输入输出函数格式化输入输出函数

格式化输入输出函数的格式控制字符串3.13.23.33.4C语言语句概述字符数据的输入输出格式化输入输出函数顺序结构程序设计举例本章主要内容说明语句变量定义或说明数据类型定义函数声明等语句可执行语句:用来向计算机发出操作指令。简单语句表达式语句:表达式;例:i++;函数调用语句控制语句空语句:只有分号“;”组成的语句,程序执行时不产生任何动作。复合语句:把多个语句用括号“{}”括起来组成的一个语句C语言无I/O语句,I/O操作由函数实现#include<stdio.h>1)条件判断语句:if语句、switch语句等;2)循环执行语句:do-while语句、while语句、for语句;3)转向语句:break语句、goto语句、continue语句、return语句。3.1C语言语句概述printf("CProgram");/*调用库函数,输出字符串*/

while(getchar()!='\n');

{语句1;语句2;┇语句n;}。

{x=y+z;a=b+c;printf("%d%d",x,a);}3.13.23.33.4C语言语句概述字符数据的输入输出格式化输入输出函数顺序结构程序设计举例本章主要内容输出3.2字符数据的输入输出从计算机向外部输出设备(如显示器、打印机、磁盘等)输出数据输入从输入设备(如键盘、磁盘、光盘、扫描仪等)向计算机输入数据在VC中,调用输入/输出函数之前,必须使用下面预编译命令对头文件“stdio.h”(stdio是standardinput/output的缩写)进行文件包含说明。#include<stdio.h>格式:putchar(ch)参数:ch为字符常量或变量,也可以是一个转义字符

功能:在默认输出终端(一般为显示器)上输出单个字符

字符输出函数(putchar)3.2字符数据的输入输出#include<stdio.h>main(){charch='B';putchar(ch);/*输出变量的值字符B*/putchar('\n');/*输出一个换行符*/putchar('B');/*直接输出字符B*/putchar('\n');/*输出一个换行符*/putchar(0x42);/*使用ASCII值输出字符B*/putchar('\n');/*输出一个换行符*/}运行结果:BBB例:输出单个字符格式:getchar()功能:从系统默认的输入终端(一般为键盘)输入一个字符,可以是字母字符、数字字符和其他字符等例3.2-1输入单个字符,并输出。#include<stdio.h>main(){charc;c=getchar();putchar(c);}

运行结果:abc↙a字符输入函数(getchar)getchar函数等待输入直到按回车才结束,回车前所输入的全部字符都会在在屏幕上显示,但只有第一个字符作为函数的返回值。例3.2-2输入单个字符,并输出。#include<stdio.h>main(){putchar(getchar());}

3.13.23.33.4C语言语句概述字符数据的输入输出格式化输入输出函数顺序结构程序设计举例本章主要内容格式:printf("格式控制字符串",输出表列);功能:将数据在终端设备(或系统默认的输出设备上)按指定格式输出

说明:输出表列是以逗号隔开的表达式;

格式控制字符串规定输出格式格式控制串作用:为各输出项提供输出格式%[修饰符]格式字符:将要输出的数据转换为指定的格式输出,由“%”符号开始,紧跟其后的是格式描述符,说明输出数据的类型、形式、长度、小数位数等。

原样输出普通字符:在程序运行过程中起提示作用格式输出函数(printf)3.3格式化输入输出函数例3.3输出函数printf程序示例。#include<stdio.h>main(){inti=3314;floata=2.1454;printf("i=%d,a=%f,a*10=%e\n",i,a,a*10);}运行结果:i=3314,a=2.145400,a*10=2.145400e+001printf函数中常用的输出格式printf函数的输出格式的一般形式为:%[标志][宽度指示符][.精度指示符][长度修饰符]格式字符格式字符格式字符说明d或iox,Xufe,E以十进制形式输出带符号整数(正数不输出符号)以八进制形式输出无符号整数(不输出前缀0)以十六进制形式输出无符号整数(不输出前缀0x),对于x用abcdef输出;对于X用ABCDEF输出以十进制形式输出无符号整数以小数形式输出单、双精度实数,隐含输出6位小数以指数形式输出单、双精度实数,数字部分小数位数为6位,指数部分占5位,用“E”时,指数以大写表示格式字符格式字符说明g,Gcsp以%f或%e中较短的输出宽度输出单、双精度实数,不输出无意义的0,用“G”时,则指数以大写表示输出单个字符输出字符串输出变量的内存地址宽度(域宽)指示符。作用:用来指定输出数据项的最小字段宽度,通常用十进制表示。

省略宽度指示符时,按实际位数输出;若实际位数大于定义的宽度,也按实际位数输出;若实际位数小于定义的宽度,数据右对齐,左边补以空格。未指定宽度和指定输出宽度时的输出结果输出语句输出结果printf("%3d\n",4321);printf("%f\n",123.54);printf("%12f\n",123.54);4321123.540000ㄩㄩ123.540000printf("%e\n",123.54);1.235400e+002printf("%14e\n",123.54);ㄩ1.235400e+002printf("%g\n",123.5);123.5printf("%8g\n",123.5);ㄩㄩㄩ123.5精度指示符以“.”开头,后跟十进制整数精度指示符通常与宽度指示符结合使用,格式为:“m.n”,“m”表示输出数据所占总的宽度,“n”表示输出数据的精度浮点数n表示输出数据的小数的位数,输出数据的小数位数大于“n”时,截去右边多余的小数,并对截去的第一位小数做四舍五入;输出数据的小数位数小于“n”时,在小数的最右边添0。省略“m.n”中的m用“.n”表示小数的位数,并对截去的第一位小数进行四舍五入,这时输出数据的宽度由系统决定。若指定“%.0f”,则不输出小数部分,但要对第一位小数进行四舍五入。对于g或G“.n”表示输出的有效数字,并对截去的第一位进行四舍五入,整数部分并不丢失,隐含的输出有效数字为6位有效数字。对于字符串“.n”则表示要输出字符的个数;如果实际位数大于所定义的精度时,则截去超过的部分。输出语句输出结果指定精度时的输出结果printf("%8.3f\n",123.55);

ㄩ123.550printf("%8.1f\n",123.55);

ㄩㄩㄩ123.6

printf("%8.0f\n",123.55);

printf("%g\n",123.56789);printf("%.7g\n",123.56789);

printf("%.5s\n",“abcdefg”);

ㄩㄩㄩㄩㄩ124

123.568

123.5679

abcde

注意:输出数据的实际精度不完全取决于格式控制串中的宽度和精度,而是取决于数据的存储精度。如果在格式控制串中指定的宽度和精度超过了相应类型数据的有效数字,输出的多余数字是没有意义的,只是系统用来填充数据宽度而已。标志标志及其意义

标志意义−

输出结果左对齐,右边填空格;缺省则输出结果右对齐,左边填空格+输出符号(正号或负号)

空格输出值为正时冠以空格,为负时冠以负号

#对c,s,d,u类无影响;对o类,在输出时加前缀0;对x类,在输出时加前缀0x标志标志的用法输出语句输出结果ㄩㄩㄩ111

printf("%6d\n",111);

printf("%−6d\n",111);111ㄩㄩㄩ

printf("%

+

d\n",111);

+111

printf("%d\n",111);

ㄩ111

printf("%d\n",−111);

−111

printf("%#o\n",10);

012

printf("%#x\n",16);0x10

长度修饰符长度修饰符为h、l两种h表示按短整型(short)输出,可加在格式符d、o、x、u前面,如%hd;l表示按长整型(long)输出,如%ld、%lx等。l也可加在格式符f前面,但没有什么意义。例3.4输出函数printf程序示例。#include<stdio.h>main(){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.231235e+002c=12345678.123457,12345678.123457,12345678.1235d=p,ㄩㄩㄩㄩㄩㄩㄩp调用printf函数时的注意事项如果格式控制字符串中的格式描述符少于输出项的个数,多余的输出项不予输出;如果格式控制字符串中的格式描述符多于输出项的个数,则对于多余的格式将输出不定值(或0值)。(1)输出表列中的各输出项要用逗号隔开,输出项可以是合法的常量、变量或表达式。格式控制字符串中的格式描述符与输出列表的输出项在数量和类型上应该一一对应。例inta=3,b=4;printf(“%d%d\n”,a,b);printf(“a=%d,b=%d\n”,a,b);输出结果:34a=3,b=4例inta=3,b=4;printf("%d%d\n",a,b);printf(“a=%d,b=%d\n”,a,b);

例inta=3,b=4;printf("%d%d\n",a,b);printf("a=%d,b=%d\n",a);

调用printf函数时的注意事项(2)如果格式控制字符串中的格式描述符与对应的输出项类型不匹配,将导致数据不能正确输出,这时系统并不报错例如:在输出长整型数据时,应使用%ld格式说明,在VC6.0中也可使用%d(因为int型和long型数据所占字节数相同),但如果使用%hd,将输出错误的数据。例3.5输出函数printf程序示例。#include<stdio.h>main(){longa=80000;printf("x=%hd\n",a);}运行结果:x=14464调用printf函数时的注意事项(3)在格式控制字符串中,除了合法的格式说明外,可以包含任意的合法字符(包括转义字符),这些字符在输出时将原样输出。(4)如果需要输出百分号%,则应该在格式控制字符串中用连续的百分号“%%”来表示。(5)printf函数的返回值通常是本次调用中输出项的个数。(6)尽量不要在输出函数中改变输出变量的值,因为在输出时,先对输出表列的各项求值,然后再输出。输出顺序是从左到右,而求值顺序,有的编译系统是从左到右,有的是从右到左,VC6.0是按从右到左进行的。例3.6输出函数printf程序示例。#include<stdio.h>main(){inti=8;printf("%d\t%d\n",i,++i);}输出结果为:99格式输入函数(scanf)格式:scanf(“格式控制串”,地址表)功能:从终端设备(或系统默认的输入设备)上输入数据。格式控制字符串的作用是指定输入数据的格式,由“%”符号开始,其后是格式描述符。各输入项只能是合法的地址表达式例scanf(“%d”,&a);

输入:10

则a=10例scanf(“%x”,&a);

输入:11

则a=17例scanf("%d%d",&a,&b);scanf函数中常用的格式说明scnaf格式字符

格式字符说明输入有符号的十进制整数

d,i

o

输入无符号的八进制整数

x,X

输入无符号的十六进制整数

u

输入无符号的十进制整数

f,e

输入实型数(用小数形式或指数形式)c输入单个字符s

输入字符串,结果存入字符数组中,输入时以第一个非空白字符开始,以第一个空白字符结束,系统自动加上'\0'作为字符串结束标志%[*][输入数据宽度][长度修饰符]格式字符scanf函数中常用的格式说明“*”符表示读入该输入项后不赋予相应的变量,即跳过该输入值。数据宽度用十进制整数指定输入的宽度,即读取输入数据中相应位数赋给相应的变量,舍弃多余部分。长度修饰符长度格式符为h和l。在VC环境下,输入short型整数,格式控制要求用%hd;输入double型数据,必须用%lf或%le。否则,数据可能不能正确输入。但在VC中,%ld与%d一样。10a,30b12345a12a,67bscanf(“%d%*d%d”,&a,&b);

输入102530scanf(“%5d”,&a);

输入12345678scanf(“%2d%*3d%2d”,&a,&b);

输入12345671234a,5678bscanf("%4d%4d",&a,&b);

输入12345678scanf(“%4d%2d%2d”,&yy,&mm,&dd);

输入199910151999yy,10mm,15dd调用scanf函数时的注意事项scanf函数中的格式字符前可以用一个整数指定输入数据所占宽度,但不可以对实型数指定小数位的宽度。scanf("%5.2f",&a);非法的scanf中要求给出变量地址,如给出变量名则会出错。scanf("%d",a);非法的在输入多个数值数据时,若格式控制字符串中没有非格式字符作为输入数据之间的间隔,则可用空格、Tab或回车作为间隔。程序在运行时碰到空格、Tab键、回车或非法数据时即认为该数据结束。对"%d"输入“12A”时,A即为非法数据输入分隔符的指定一般以空格、TAB或回车键作为分隔符其它字符做分隔符:格式串中两个格式符间字符例scanf(“%d%o%x”,&a,&b,&c);printf(“a=%d,b=%d,c=%d\n”,a,b,c);输入123123123输出a=123,b=83,c=291例scanf(“%d:%d:%d”,&h,&m,&s);

输入12:30:45则12h,30m,45s例scanf(“%d,%d”,&a,&b)

输入3,4

则3a,4b例scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);输入a=12,b=24,c=36说明:用“%c”格式符时,空格和转义字符作为有效字符输入如scanf(“%c%c%c”,&c1,&c2,&c3);

若输入abc

则ac1,

c2,bc3输入数据时,遇以下情况认为该数据结束:遇空格、TAB、或回车遇宽度结束遇非法输入如scanf(“%d%c%f”,&a,&b,&c);若输入1234a123o.26则1234a,‘a’b,123c输入函数留下的“垃圾”:例intx;charch;scanf(“%d”,&x);ch=getchar();printf(“x=%d,ch=%d\n”,x,ch);执行:123输出:x=123,ch=10例intx;charch;scanf(“%d”,&x);scanf(“%c”,&ch);printf(“x=%d,ch=%d\n”,x,ch);执行:123输出:x=123,ch=10解决方法:(1)用getchar()清除(2)用函数fflush(stdin)清除全部剩余内容(3)用格式串中空格或“%*c”来“吃掉”例intx;charch;scanf(“%d”,&x);scanf(“%c”,&ch);或scanf(“%*c%c”,&ch);

例scanf(“%3c%2c”,&c1,&c2);

输入abcde

在输入字符数据时,若格式控制字符串中没有非格式字符,则认为所有输入的字符均为有效字符。调用scanf函数时的注意事项scanf("%c%c%c",&a,&b,&c);

输入dㄩeㄩf↙“d”a,“ㄩ”b,“e”cscanf("%c%c%c",&a,&b,&c);

输入def↙“d”a,“e”b,“f”c例scanf(“%3d%*4d%f”,&k,&f);输入12345678765.43123k,8765.43f‘a’c1,‘d’c2调用scanf函数时,应当注意变量类型与格式字符保持一致,否则虽然编译能够通过,但结果将不正确。例3.7输入函数scanf程序示例。#include<stdio.h>main(){longi;doublef;scanf("%hd%f",&i,&f);printf("%d\t%g\n",i,f);}运行情况如下:1111111111123↙-859032121-9.25596e+061scanf函数也有一个返回值,这个返回值就是成功输入的项数。调用scanf函数时的注意事项调用scanf函数时,应当注意变量类型与格式字符保持一致,否则虽然编译能够通过,但结果将不正确。例3.8输入函数scanf的返回值。#include<stdio.h>main(){intx,y;printf("%d\n",scanf("%d%d",&x,&y));}运行结果:45ㄩ54↙2例3.9输入函数scanf程序示例。#include<stdio.h>main(){inta,b,c,d;scanf("%d%d",&a,&b);printf("a=%d,b=%d\n",a,b);scanf("%d%d",&c,&d);printf("c=%d,d=%d",c,d);}运行结果:45ㄩ54ㄩ23ㄩ89↙a=45,b=54c=23,d=893.13.23.33.4C语言语句概述字符数据的输入输出格式化输入输出函数顺序结构程序设计举例本章主要内容例输入圆半径,输出圆周长和面积。#include<stdio.h>#definePI3.14159main(){floatr,l,s;scanf("%f",&r);l=2*PI*r;s=PI*r*r;printf("\nl=%8.4f",l);printf("\ns=%8.4f",s);}运行情况如下:

5↙l=ㄩ31.4159s=ㄩ78.5397文件包含预处理命令变量定义输入数据输出数据3.4顺序结构程序设计举例#include<stdio.h>main(){inta,b;intx,y;printf("Inputthehead:");scanf("%d",&a);printf("Inputthefeet:");scanf("%d",&b);x=(4*a-b)/2;y=(b-2*a)/2;printf("TheNumberofchickis%d\n",x);printf("TheNumberofrabbitis%d\n",y);}

Inputthehead:35↙Inputthefeet:94↙TheNumberofchickis23TheNumberofrabbitis12例:在同一个笼子里养着鸡与兔,但不知道其中鸡有多少只,兔有多少只,只知道鸡和兔的总数是a,鸡与兔共有b只脚,问鸡与兔各有多少只?/*ch4_12.c*/#include<math.h>#include<stdio.h>main(){floata,b,c,s,area;scanf("%f,%f,%f",&a,&b,&c);s=1.0/2*(a+b+c);area=s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论