简单C程序设计.ppt_第1页
简单C程序设计.ppt_第2页
简单C程序设计.ppt_第3页
简单C程序设计.ppt_第4页
简单C程序设计.ppt_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

第四章 最简单的C程序设计 本章重点、难点: 1、getchar(), putchar()函数 2. printf()函数及输出格式 3. scanf()函数及输入格式 第四章 最简单的C程序设计 41 C语句概述 41 C语句概述 C语句可以分为以下五类: 1控制语句:完成一定的控制功能,C只有9种控制语句 if( )else (条件语句) for ( ) (循环语句) while( ) (循环语句) dowhile ( ) (循环语句) continue (结束本次循环语句) break (中止执行switch或循环语句) switch (多分支选择语句) goto (转向语句) return (从函数返回语句) 41 C语句概述 C语句可以分为以下五类: 2函数调用语句:由一次函数调用加一个分号构成一个语句,例 如: printf (”this is a C statement”); c=max(a,b); 3表达式语句:由一个表达式构成一个语句。最典型的是:由赋 值表达式构成一个赋值语句。 a=3 是一个赋值表达式, 而 a=3; 是一个赋值语句。 可以看到一个表达式的最后加一个分号就成了一个语句。一个 语句必须在最后出现分号,分号是语句中不可缺少的一部分。例如 : i=i十1 (是表达式,不是语句) iil; (是语句) 表达式能构成语句是C语言的一个特色。 41 C语句概述 C语句可以分为以下五类: 4空语句。下面是一个空语句: ; 即只有一个分号的语句,它什么也不做。有时用来作被转向点,或 循环语句中的循环体(循环体是空语句,表示循环体什么也不做) 。 5复合语句 :C语言可以用 包括一系列的语句。一对 所包 含的内容称为一个复合语句。其中可以包含0到多条C语言语句。 如下面是一个复合语句。 z=x+y; tZ100; printf(”%f”,t); 注意:复合语句中最后一个语句中最后的分号不能忽略不写。 41 C语句概述 5复合语句: #include void main (void) int a,b; scanf(“%d,%d”, int temp; temp=a; a=b; b=temp; printf(“%d,%d”,a,b); 复合语句 复合语句 复合语句可以嵌套 凡是可以出现单一语句的地方都可以使用复合语句。 复合语句的作用: 作为分支和循环的块。 作为标识符的作用域。 42 赋值语句 赋值语句:由赋值表达式加上一个分号构成. C语言的赋值语句的特点和功能: C语言中的赋值号“=”作为赋值运算符 关于赋值表达式与赋值语句的概念, 其它多数高级语言没有“赋值表达式”这一概念。作为赋值 表达式可以被包括在其它表达式之中,例如 if (ab)0) ta; 按语法规定if后面的()内是一个条件,例如可以是:“if(x0 )”。现在在x的位置上换上一个赋值表达式“a=b”,其作用是 :先进行赋值运算(将b的值赋给a),然后判断a是否大于,如 大于是,执行t=a。在if语句中的“a=b”不是赋值语句而是赋值 表达式,这样写是合法的。如果写成 if(ab;)0) ta; C把赋值语句和赋值表达式区别开来,增加了表达式的种类,使 表达式的应用几乎“无孔不入”,能实现其它语言中难以实现的功 能。 错!赋值语句 对!赋值表达式 43 数据输入输出的概念 C 语言没有输入输出语句,输入输出是通过系统定义的标准函 数来实现的。 I/O函数的原型定义在stdio.h头文件中,在引用I/O函数时,应 在程序开始处加预处理语句包含头文件。 #include 输入输出的概念 输入输出指的是内存变量或程序和外部设备间的数据交换。 内 存 外 设 输入 输出 输入输出函数要描述: 输入输出的量; 输入输出的格式; 输入输出的设备。 43 数据输入输出的概念 几点说明: printf,scanf不是C的关键字,而是函数的名字; printf函数在编译时并不把它翻译成目标指令,而在执行阶段中 调用已被连接的函数库中的printf函数; 在使用C函数库时,要用预编译命令“#include”将有关的“头文 件”包括到用户源文件中。在头文件中包含了与用到的函数有关的 信息. (4) 考虑到printf,scanf函数使用频繁,系统允许在使用它们时不 加#include命令. 44 字符数据的输入输出 441 putchar函数(字符输出函数) putchar函数的作用是向终端输出一个字符:例如 putchar(c) ; 输出字符变量c的值。c可以是字符型变量或整型变量。在使用标 准IO库函数时,要用预编译命令“include”将“stdio.h文件 包括到用户源文件中。即 include “stdio.h” 或 #include stdio.h是standard input putchar(ch1); putchar(ch2); putchar(ch3);/*输出*/ putchar(n); putchar(ch1); putchar(n); /*输出ch1的值,并换行*/ putchar(E); putchar(n);/*输出字符E,并换行*/ putchar(ch3); putchar(n); 44 字符数据的输入输出 442 getchar函数(字符输入函数) 此函数的作用是从终端(或系统隐含指定的输入设备)输入一 个字符, getchar函数没有参数,其一般形式为:getchar( ) 函数的值就是从输入设备得到的字符。例如: include “stdio.h” main ( ) char c: cgetchar(); putchar(c); 运行结果: 在运行时,如果从键盘输入字符a; a (输入a后,按“回车”键,字符才送到内存) a (输出变量c的值a) 44 字符数据的输入输出 442 getchar函数(字符输入函数) /*功能:说明getchar()函数的格式和作用。*/ /* A2.c */ #include “stdio.h“/*文件包含*/ main() char ch; printf(“Please input two character: “); ch=getchar();/*输入1个字符并赋给ch */ putchar(ch);putchar(n); putchar(getchar(); /*输入一个字符并输出*/ putchar(n); 45 格式输入输出函数 4.5.1 输出函数printf( ) 1、格式: printf(“输出格式字符串”,输出项列表); 格式描述。 用,分隔 的常量、变量 、表达式表。 输出格式字符串可包含以下内容: 普通字符 ,如:a= 转义字符,如:n 对于普通字符和转义字符在相应位置原样输出,其中%用%。 printf(“nabcd%”); 输出结果: abcd% 格式说明符组,说明输出项列表中的各项的输出格式。格式 说名符组用%为开始标志。内容包含对一项输出对象的格式说明。 45 格式输入输出函数 4.5.1 输出函数printf( ) 格式说明类型表 格式说明符说明量的类型 d、i、o、 x 、 u整型 c字符型 s字符串 f、e、g浮点型 格式说明符应和输出的列表项对应,产生相应的输出。其中输 出的表项应与格式说明符类型一致。 printf(“a=%dnb=%f”, 2+3, 5.34); 45 格式输入输出函数 4.5.1 输出函数printf( ) 格式说明串的一般形式和意义 % - m.n l 格式类型字符 格式说明标志 对齐方式:缺省为右对齐,-为左对齐 。 宽度.精度(位数),宽度:输出总列数,精度 :小数位数(或字符位数)。 整型长度,缺省短整型,l长整型。 #include main( ) float a; a=1.232326 ; printf(“a=%10.4f”,a) 45 格式输入输出函数 4.5.1 输出函数printf( ) 2、格式字符: 对不同类型的数据用不同的格式字符。有以下几种格式字符: (1) d格式符。用来输出十进制整数。有以下几种用法: v d,按整型数据的实际长度输出。 vmd, m为指定的输出字段的宽度。如果数据的位数小于m,则左 端补以空格,若大于m,则按实际位数输出,如 printf (“4d,4d”,a,b) 若a123,d=12345,则输出结果为:_123,12345 vld,输出长整型数据。如 1ong a=135790; printf(”ld,a); ? 将“%ld”改为“%d” 一个int型数据可以 用d或ld格式输 出。 45 格式输入输出函数 4.5.1 输出函数printf( ) 2、格式字符: (2) O格式符 (3)以8进制数形式输出整数。由于是将内存单元中的各位的值(0或 1) (4)按八进制形式输出,因此输出的数值不带符号,即将符号位也一 起 (5)作为八进制数的一部分输出。例如,-在内存单元中(以补码 形 (6)式存放)如下: int a-1; printf(”d,o”,a,a); 输出为: 1,177777 不会输出带负号的八进制整数。对长整数(1ong型)可以用“ 1o。”格式输出。同样可以指定字段宽度,如printf(”8o”,a) 输出数据为 177777。 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 45 格式输入输出函数 4.5.1 输出函数printf( ) 2、格式字符: (3) X格式符: 以16进制数形式输出整数,同样不会出现负的 十六进制数。例如: int a一1; printf(”x,0,d”,a,a,a); 输出结果为: ffff,177777,-1 同样可以用“lx”输出长整型数,也可以指定输出字段的宽 度,如“12x” (4) u格式符: 用来输出unsigned型数据,即无符号数,以十进 制形式输出。 一个有符号整数(int型)也可以用u格式输出;反之,一个 unsigned型数据也可以用d格式输出。按相互赋值的规则处理 。unsigned型数据也可用o 或x 格式输出。 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 45 格式输入输出函数 4.5.1 输出函数printf( ) 2、格式字符: (4) u格式符( 举例 ): main() unsigned int a=65535; int b=-2; printf(”a=%d,%o,%x,%un”,a,a,a,a ); printf(”b=%d,%o,%x,%un”,b,b,b,b) ; 运行结果为: a一1,177777,ffff, 65535 b一2, 177776, fffe,65534 1111111111111111 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 45 格式输入输出函数 4.5.1 输出函数printf( ) 2、格式字符: (5) c格式符: 用来输出一个字符 char ca; prinft(”c”,c); 输出字符a,请注意:“c”中的c是格式符,逗号右 边的c是变量名,不要搞混。 一个整数,只要它的值在0255范围内,也可以用字符形式输 出,在输出前,将该整数转换成相应的ASCII字符;反之,一个 字符数据也可以用整数形式输出。 main () /* a3.c */ char c=a; int i=97; printf(”c,dn”,c,c); printf(“c,dn”,i,i); 45 格式输入输出函数 4.5.1 输出函数printf( ) 2、格式字符: (6) s格式符: 用来输出一个字符串 v s: 例如 printf(”%s”,”CHINA”) 输出“CHINA”字符串(不包括双引号)。 v ms: 输出的字符串占m列,如字符串本身长度大于m,则突破 m的限制,将字符串全部输出。若串长小于m,则左补空格。 v -ms: 如果串长小于m,则在m列范围内,字符串向左靠,右 补空格。 v m .ns: 输出占m列,但只取字符串中左端n个字符。这n个字 符输出在m列的右侧,左补空格。 v -m .ns: 其中m、n含义同上,n个字符输出在m列范围的左侧 ,右补空格。如果nm,则m自动取n值即保证n个字符正常输出 。 45 格式输入输出函数 4.5.1 输出函数printf( ) 2、格式字符: 例1 : char a=b; printf(“%5c, %-5c, %c” ,a ,a-32,s+1); 输出结果: b,B ,t 例 2 : #include void main(void) char chString =“China“; printf(“%s,%6s,%-6sn“,chString,chString,chString); printf(“%4s%6.2s%-6.2s“,“Hefei“,“Hefei“,“Hefei“); China, China, China HefeiHeHe 宽度不够,原样输出 。 m.n,m为总输出列数, n 截取输出字符数。 45 格式输入输出函数 4.5.1 输出函数printf( ) 2、格式字符: (7) f格式符: 用来输出实数(包括单、双精度),以小数形式 输出,有以下几种用法: v f: 不指定字段宽度,由系统自动指定,使整数部分全部如数 输出,并输出6位小数。应当注意,并非全部数字都是有效数字 .单精度实数的有效位数一般为7位。 main( ) float x,y; x111111111; y222222222; printf(”f”,x十y); 运行结果为: 333333328125 显然,只有前7位数字是有效数字。千万不要以为凡是打印 出来的数字都是准确的。 双精度数也可用f格式输出,它的 有效位数一般为16位,给出小数6位。 45 格式输入输出函数 4.5.1 输出函数printf( ) 2、格式字符: (7) f格式符: main() /* a4.c */ double x,y; x=11111111111111111111; y=2222222222222.22222222; printf(”f”,x十y); 输出结果为: 3333333333333.333010 45 格式输入输出函数 4.5.1 输出函数printf( ) 2、格式字符: (7) f格式符: v m.nf: 指定输出的数据共占m列,其中有n位小数。如果数值 长度小于m,则左端补空格。 v 一m.nf: 基本相同,只是使输出的数值向左端靠,右端补空 格。 main ( ) float f=123456; printf(”%f,%10f,%10.2f,%.2f,%- 10.2fn”,f,f,f,f,f); 输出结果如下: 123.455994, 123.455994, 123.46, 123. 46,123.46 , f 的值应为123456,但输出为123455994,这是由于实数 在内存中的存储误差引起的. 45 格式输入输出函数 4.5.1 输出函数printf( ) 2、格式字符: (8) e格式符: 以指数形式输出实数。 v e: 不指定输出数据所占的宽度和数字部分小数位数,由系 统自动指定给出6位小数,指数部分占5位(如e+002,e+02), 其中“e”占 1 位,指数符号占 1 位,指数占 3 位。数值按 标准化指数形式输出(即小数点前必须有而且只有一位非零数 字)。例如: printf(”%e”,123.456); 输出: 1.234560e002 ,(1.23456e+02)。 也就是说用e格式输出的实数共占13列宽度。 45 格式输入输出函数 4.5.1 输出函数printf( ) 2、格式字符: (8) e格式符: v m.ne 和 -m.ne : m,n和“-”字符含义与前相同。此处n 指 数据的小数部分(又称尾数)的小数位数。若f123.456,则 printf(“%e,%10e,%10.2e,%.2e,%-10.2e,”,f,f,f,f,f); 输出如下: 1.234560e+002,1.234560e+002, 1.23e002, 1.23e002,1.23e十002 45 格式输入输出函数 4.5.1 输出函数printf( ) 2、格式字符: (9) g格式符: 用来输出实数,它根据数值的大小,自动选f格式 或e格式(选择输出时占宽度较小的一种),且不输出无意义的 零。例如,若:f=123.468,则 printf(”%f,%e,%g”,f,f,f); 输出如下: 123.468000,1.234680e+002,123.468 本例用f格式输出占10列,用e格式输出占13列,用g格式 时,自动从上面两种格式中选择短者(今为f格式为短),故 占7列,且按%f格式用小数形式输出,最后三个小数位“0”为无 意义的0,不输出,g格式用得较少。 45 格式输入输出函数 4.5.1 输出函数printf( ) d,i以带带符号的十进进制形式输输出整数(正数不输输出符号) o以8进进制无符号形式输输出整数(不输输出前导导符0) x,X以16进进制无符号形式输输出整数(不输输出前导导符0x) u以无符号10进进制形式输输出整数 c以字符形式输输出,只输输出一个字符 s输输出字符串 f以小数形式输输出单单、双精度数,隐隐含输输出6位小数 e,E以标标准指数形式输输出单单 双精度数,数字部分小数位数为为6位 g,G选选用f或e格式中输输出宽宽度较较短的一种格式,不输输出无 意义义的0 printf格式字符 45 格式输入输出函数 4.5.1 输出函数printf( ) l 用于长长整型整型,可加在格式符d,o,x,u 前面 m (代表一个 正整数) 数据最小宽宽度 n (代表一个正 整数) 对实对实 数,表示输输出n位小数;对对字符串, 表示截取的字符个数 - 输输出的数字或字符在域内向左靠 printf的附加格式字符 45 格式输入输出函数 4.5.1 输出函数printf( ) 在使用 printf 函数时,还有几点要说明: v 除了 X,E,G外其他用小写,如d不能写成D。 v 上面介绍的d,o,x,c,s,f,e,g等字符,如用在“”后面就作为 格式符号。一个格式说明以“”开头,以上述9个格式字符之一 为结束,中间可以插入附加格式字符(也称修饰符)。例如: printf(“c=%cf=%fs=%s”,c,f,s); v 如果想输出字符“”,则应该在“格式控制”字符串中用连 续两个表示,如: printf(”f”,103); 输出 0.333333 45 格式输入输出函数 4.5.2 输入函数scanf( ) 格式: scanf(“格式说明字符串”,输入变量地址列表); 说明: 输入时不能使用%u; m域宽可自动截取,空格可以作为数据分隔符。 void main(void) int i,j; scanf(“%3d%3d“, printf(“%dn%d“,i,j); 123456 实型变量输入时不能规定精度; scanf(“%7.2f”, ERROR! 数据输入用SPACE分隔,当格式字符用其他字符隔离,输入 时也应在对应位置上输入相同的字符; void main(void) int i,j; scanf(“i=%d,j=%d“, printf(“n%dn%d“,i,j); 输入项只能是变量,且必须用地址形式。 45 格式输入输出函数 4.5.2 输入函数scanf( ) main( ) /* no.c */ int a,b,c; scanf(”%d%d%d”, 输入 123456 系统自动将123赋给a,456赋给b。也可用于字符型 vscanf(”3c”, 输入3个字符,把第一个字符赋给ch,例如输入abc,ch得到字 符a。 3后的“*”附加说明符,用来表示跳过它相应的数据。例如 v scanf(”2d*3d2dn”, 如果输入如下信息: 12 345 67 4. 输入数据时不能规定精度,例如 scanf(”%7.2f”, 输入: 12:23:36 q scanf(”a=%d,b=%d,c=%d”,输入:a=12,b24,c 36 45 格式输入输出函数 4.5.2 输入函数scanf( ) scanf函数的执行中应注意的问题: 3在用”c”格式输入字符时,空格字符和“转义字符”都作为 有效字符输入: scanf(”c

温馨提示

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

评论

0/150

提交评论