四通C语言教程_第1页
四通C语言教程_第2页
四通C语言教程_第3页
四通C语言教程_第4页
四通C语言教程_第5页
已阅读5页,还剩261页未读 继续免费阅读

下载本文档

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

文档简介

全国计算机等级考试

(NCRE)教师简介姓名:范老师性别:男座右铭:好人一生平安,我是好人。对国家贡献:获得国家认可教师资格认证。对社会贡献:培养了一大批有为青年。对家庭贡献:有一个妻子。对妻子贡献:一个孩子。对孩子贡献:没有家联系方式群:195985189学习C语言加群195985189

全国计算机等级考试

(NCRE)教师简介C语言最早的计算机语言。

最接近人类思维的语言。

最基础的软件设计语言。

最经典的数据结构语言。学习C语言加群195985189怎么学好C语言???1.了解C语言的运行环境。2.熟悉关键字的使用语法。3.掌握各种解决问题的手段或方法。4.反复练习例题,从中反馈。5.学会做梦学习C语言加群195985189目录第1章程序设计基本概念第2章C程序设计的初步知识第3章顺序结构第4章选择结构第5章循环结构第6章字符型数据第7章函数第8章地址和指针第9章数组第10章字符串第11章对函数的进一步讨论第12章C语言中用户标识符的作用域和存储类第13章编译预处理和动态存储分配第14章结构体、共用体和用户定义类型第15章位运算第16章文件第17章上机指导学习C语言加群195985189C语言的特点C语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。C语言的表现能力和处理能力极强。它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。它还可以直接访问内存的物理地址,进行位(bit)一级的操作。由于C语言实现了对硬件的编程操作,因此C语言集高级语言和低级语言的功能于一体。既可用于系统软件的开发,也适合于应用软件的开发。此外,C语言还具有效率高,可移植性强等特点。因此广泛地移植到了各类各型计算机上,从而形成了多种版本的C语言。学习C语言加群195985189Visualc++6.0简介VisualC++6.0,简称VC或者VC6.0,是微软推出的一款C++编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序。VisualC++是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出VisualC++1.0后,随着其新版本的不断问世,VisualC++已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了VisualC++.NET(VisualC++7.0),但它的应用的很大的局限性,只适用于Windows2000、WindowsXP和WindowsNT4.0。所以实际中,更多的是以VisualC++6.0为平台。

VisualC++6.0不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrateddevelopmentenvironment,IDE)。VisualC++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导ClassWizard等开发工具。这些组件通过一个名为DeveloperStudio的组件集成为和谐的开发环境。编辑本段缺点由于C++是由C语言发展起来的,也支持C语言的编译。6.0版本是使用最多的版本,很经典。最大的缺点是对于模版的支持比较差。现在最新补丁为SP6,推荐安装,否则易出现编译时假死状态。学习C语言加群1959851891.1程序和程序设计C语言源程序C语言编译程序二进制机器指令(目标程序).C.OBJ高级语言机器语言C语言连接程序可执行文件.EXE考点算法的基本特征①有穷性、②确定性、③可行性④有零个或多个输入⑤有一个或多个输出结构化程序设计的三种基本结构顺序结构选择结构循环结构考点总结:由以上3种基本结构组成的算法可以完成任何复杂的问题.考点总结:用C程序实现的算法可以没有输入,但必须要有输出.学习C语言加群195985189N-S图由一些特定意义的图形、流程线及简要的文字说明构成,它能清晰明确地表示程序的运行过程。在使用过程中,人们发现流程线不一定是必需的,为此,人们设计了一种新的流程图,它把整个程序写在一个大框图内,这个大框图由若干个小的基本框图构成,这种流程图简称N-S图学习C语言加群195985189程序的结构化结构是指系统内各个组成要素之间的相互联系、相互作用的框架。结构化开发方法提出了一组提高软件结构合理性的准则,如分解与抽象、模块独立性、信息隐蔽等。针对软件生存周期各个不同的阶段,它有结构化分析(SA)、结构化设计(SD)和结构化程序设计(SP)等方法学习C语言加群195985189程序的模块化一个模块就是一个独立的功能通常考试二级的时候总是考试一个模块的编写学习C语言加群195985189习题1.1在VC6.0环境中用RUN命令运行一个C程序时,这时所运行的程序的后缀是_________。1.2C语言源程序文件名的后缀是_________;经过编译后,生成文件的后缀是_________;经过连接后,生成文件的后缀是_________。1.3结构化程序由_________、_________、_________三种基本结构组成。.exe.c.obj.exe顺序结构选择结构循环结构学习C语言加群195985189第2章C程序设计的初步知识2.1简单C语言程序的构成和格式2.2标识符、常量和变量2.3整型数据2.4实型数据2.5算术表达式2.6赋值表达式2.7自加、自减运算符和逗号运算符学习C语言加群1959851892.1简单C语言程序的构成和格式本节将通过一个简单的程序例子,介绍C程序的一些基本构成和格式,使大家对C语言程序有一个初步的了解。例2.1

已知矩形的两条边长(用a表示宽,b表示长),求矩形的面积(area)。#include<stdio.h>main(){doublea,b,area;a=1.2;b=3.6;area=a*b;printf(“a=%f,b=%f,area=%f\n”,a,b,area);}a=1.200000,b=3.600000,area=4.320000注意:1.C程序由函数组成,一个程序必须有一个且只能有一个主函数(main),C程序总是从主函数开始执行,并且也是从它结束的。2.函数体必须放在一对花括号“{}”内,在函数体中,通常有定义(说明)语句和执行语句,定义语句应出现在执行语句之前,每条语句后面的分号不可少。多条语句可以写在同一行上,并且一条语句也可以写在多行上。3.C程序中的注释必须放在"/*"和"*/"之间,"/"和"*"之间不允许有空格。"/*"和"*/"之间不允许再插入"/*"或"*/"。注释可以出现在程序中任意位置。/*包含头文件*//*主函数,程序的入口*//*声明部分,定义了3实型个变量*//*给变量a赋值*//*给变量b赋值*//*将a*b的结果赋值给变量area*//*分别输出矩形的两条边长和面积*/abarea2函数体学习C语言加群1959851892.2标识符、常量和变量2.2.1标识符在C语言中,有许多东西都需要命名,如变量名、函数名、数组名等,在命名的时候都必须遵守一定的规则,按此规则命名的符号称为标识符。在C语言中,合法的标识符由字母、数字和下划线组成。遵守以下规则命名:必须以字母(大小写皆可)或下划线开头。随后可跟若干个(包括0个)字母、数字、下划线。标识符的长度各个系统不同,最好不要超过8个字符。如:areaPI_inia_arrays1234P101p(合法)456Pcade-yw.wa&b(不合法)注意C语言区分大小写,如page、Page是两个不同的标识符。学习C语言加群1959851892.2标识符、常量和变量2.2.1标识符C语言的标识符可以分为以下三类:a)关键字b)预定义标识符c)用户标识符关键字:

C语言规定了一批标识符,它们在程序中都代表着固定的含义,不能另作它用。例如,用来说明变量类型的标识符int、float、double以及if语句中的if、else等都已有专门的用途,它们不能再用作变量名或函数名。注意,所有的关键字都必须小写。C语言中的关键字请参考附录4。预定义标识符:这些标识符在C语言中也都有特定的含义,如C语言提供的库函数的名字(如include)和预编译处理命令(如define)等。

用户标识符:由用户根据需要定义的标识符称为用户标识符。一般用来给变量、函数、数组或文件等命名。如例2.1中的a,b,area三个变量学习C语言加群1959851892.2标识符、常量和变量2.2.2常量在程序运行过程中,其值不能被改变的量,称为常量。

常量整型常量:实型常量(符点型)字符常量:字符串常量:单精度型:双精度型:由上述可见,常量的类型从字面形式上就可以区分开来,我们称此常量为字面常量。12、-1、0‘A’、‘d’”NCRE”、“Beijing”3.14159、-2.71828、0.012.5678、-12.5678学习C语言加群1959851892.2标识符、常量和变量2.2.3符号常量在C语言中,可以用一个符号名来代表一个常量,称为符号常量。但是这个符号名必须在程序中用(#define)进行特别的“指定"。例2.2

计算圆面积和周长,此程序中将如何教大家使用符号常量。#include“stdio.h”#definePI3.14159main(){doubler,s,l;r=5.0;s=PI*r*r;l=2*PI*r;printf(“s=%f,l=%f\n”,s,l);}S=78.539750,l=31.415900/*包含头文件*//*定义符号常量,符号常量名为PI,用PI来代表3.14159*//*主函数,程序的入口*//*声明部分,定义了3实型个变量*//*给变量r赋值*//*计算圆的面积*//*计算圆的周长*//*分别圆的面积和周长*/注意习惯上,符号常量名用大写,变量名用小写,以示区别函数体rsl5.078.5397531.4159学习C语言加群1959851892.2标识符、常量和变量2.2.4变量1.所谓变量是指在程序运行过程中可以改变的量。如下程序:#include<stdio.h>main(){doublea,b;a=1.5;b=2.5;printf(“%f%f\n”,a,b);a=a+1;b=b+1;printf(“%f%f\n”,a,b);}ab1.5000002.5000002.在程序中,声明变量就是在计算机内存中申请了某个内存单元。对变量进行赋值,实质上就是把数据存入该变量所代表的存储单元中。3.C语言规定,程序中所有变量都必须先定义后使用。如程序例2.1、例2.2。内存空间ab2.5000003.5000002.53.5学习C语言加群1959851892.3整型数据2.3.1整型常量在C语言中,按整型常量的表示形式可以有三种形式。整型常量由0~9十个数字组成,如32767、-32768、0等。由0~7八个数字组成,如010、011、016等。注意,最高位必须用0作引导符,与十进制和十六进制区分。如:018,为不合法的八进制常量。由0~9十个数字和a~f(A~F)六个字母组成,如0x10、0Xde、0xf注意,最高位必须用0x(0X)作引导符,与十进制和八进制区分。如:oxff、0X12H,都为不合法的十六进制常量。在C语言中,按整型常量的表示范围可以分为四种。在C语言中,八进制数和十六进制数只能是正整数。注意如:-077、-0X11、01.0等,(不合法)短整型基本整型长整型无符号整型三种进制之间的转换十六进制常量:八进制常量:十进制常量:学习C语言加群1959851892.3整型数据2.3.2整型变量整型变量是用来存放整型常量的工具。可以把整型变量抽象为一个盒子。由于整型常量有短整型、基本整型、长整型和无符号整型四种类型,既然整型变量是用来存放整型数据的,那整型变量也要分为四种对应类型的整型变量,以方便存放不同类型的整型常量。在此我们只介绍基本整型变量。也叫整型变量。在C语言中,整型变量我们需要用一个符号来表示它,即整型变量名。例如:intk;

/*定义k为整型变量,k为变量名*/关键字int是用来说明变量k的类型为整型。又如:inti,j,k;

/*定义i、j、k为整型变量*/inti;intj;intk;相同注意在同一行上使用关键字定义多个变量时,变量之间用逗号隔开。所有定义语句后必须以一个“;”号结束,表示它是一条语句。学习C语言加群1959851892.3整型数据2.3.2整型变量在前面已经讲过,声明变量就是在计算机内存中申请某个内存单元。在VC6.0环境中,用关键字int声明变量时,计算机将会为每个变量开辟4字节(32个二进制位)的内存单元。例如,当前的某段内存空间如右图所示。有如下程序段。内存空间地址2000200120022003200420052006200720112010200920082012inti;intj;i=100;j=200;C语言规定,可以在定义变量的同时给变量赋初值,该过程称为变量的初始化。例如:#include<stdio.h>main(){inti=1,j=0,k=2;::}ij100200/*在声明变量的同时,为三个变量赋值*/学习C语言加群1959851892.3整型数据2.3.3整型数据的分类不同的计算机系统对整型数所占用的字节数和数值范围有不同规定,下表列出了在VC6.0中定义的整型数所占用的字节数和数值范围。

由于整型数据在C语言中分为上述几类,比如123。它是属于哪一类型的?int123L、345l、0L、123456L123U、345u、0U、123456U123LU、345lu、0LU、123456LUlongunsignedunsignedlong学习C语言加群1959851892.3整型数据2.3.4整数在内存中的存储形式计算机中,内存储器的最小的存储单位称为“位(bit)”,每一位中只能存放0或1,因此称为二进制位。8个二进制位组成一个“字节”,并给每一个字节分配一个地址。数据在内存中是以二进制形式进行存放的。一、正整数正整数在内存中是以“原码”形式存放的。如果定义了一个short类型变量i:shorti;i=5;/*声明i为短整型变量*//*给i赋以整数5*/十进制数5的二进制形式为101,在VC6.0中,由于短整型变量在内存中占2个字节,ii符号位:0代表正整数,1代表负整数二、负整数负整数在内存中是以“补码”形式存放的。5学习C语言加群1959851892.4实型数据2.4.1实型常量在C语言中,实型常量的表示形式有两种。实型常量由数字和小数点组成,如0.123、.123、123.、0.0指数形式:如:0.23026x101

2.3026x10023.026x10-10.23026E12.3026e023.026e-1注意E(e)前后必须有数字,并且后面的必须为整型数。.3e33.0e33.e3(合法)3ee355e0.3(不合法)小数形式:学习C语言加群1959851892.4实型数据2.4.2实型变量单精度型变量定义的形式如下:floata,b,c;双精度型变量定义的形式如下:doublex,y,z;实数在内存中是以“指数”形式存放的。也可以在定义实型变量的同时,对变量进行初始化。例如:#include<stdio.h>main(){floata=1.5,b=.5,c=0.0;

doublex=1.5,y=.5,z=0.0;:}/*在声明变量的同时,为三个变量赋值*//*在声明变量的同时,为三个变量赋值*/学习C语言加群1959851892.5算术表达式2.5.1基本的算术运算符+(加法运算符,或正值运算符)如:1+2、+3.9-(减法运算符,或负值运算符)如:3-4、-54*(乘法运算符)如:1.2*3.2、3*4、2*x/(除法运算符)如:5/3、(a+b)/(x+y)单目运算符双目运算符两个整数相除,其值仍然为整数。如:5/3值为1、1/2值为0。两个实数相除,其值仍然为实数。如:1.0/2.0值为0.5。除数、被除数只要有一个为实数时,系统将自动进行类型转换,转换为double型。如:1/2.0=0.5、

1.0/2.0=0.5最后结果的类型为double型。%(求余运算符)注意:%运算符的两侧必须为整型数据。如:7%4的结果为3。-7%4、7%-4、-7%-4的结果为多少?-33-3结果的符号和被除数相同学习C语言加群1959851892.5算术表达式2.5.2运算符的优先级、结合性和算术表达式一、优先级()+-*/%+-单目双目同级同级同级高低二、结合性单目运算符的结合性是从右往左的,即表达式从右往左进行计算,称为右结合。其余运算符的结合性是从左往右的。即表达式从左往右进行计算,称为左结合。例如:(5+1)/25+1/25*-25*(-2)三、算术表达式用算术运算符和一对圆括号将运算量(或称操作数)连接起来的、符合C语法的表达式称为算术表达式。算术表达式中,运算对象可以是常量、变量和函数等。例如:2+sqrt(c)*b。5-103学习C语言加群1959851892.5算术表达式2.5.3强制类型转换表达式表达式的形式如下:(类型名)(表达式)强制类型转换运算符作用:可以利用强制类型转换运算符将一个表达式转换成想要的类型。例如:(int)3.234(double)(10%3)3注意int3.234(错误)(double)10%3(错误)例:阅读如下程序,关于强制类型转换。#include<stdio.h>main(){doublea;intb;a=3.6;b=(int)a;printf(“a=%f,b=%d\n”,a,b);}a=3.600000,b=31.0ab3.63学习C语言加群1959851892.6赋值表达式2.6.1赋值运算符和赋值表达式赋值运算符:=赋值表达式:由赋值运算符组成的表达式称为赋值表达式,它的形式如下:

变量名=表达式

赋值号的左边必须是一个代表某一存储单元的变量名。赋值运算的功能是先求出右边表达式的值,然后把此值赋给左边的变量。例如,若a和b都被定义成int类型变量

a=10;

/*把常量10赋给变量a*/

b=a;

/*把a中的值赋给变量b,a中的值不变*/注意1.赋值运算符的优先级别只高于逗号运算符,比其它任何运算符的优先级都低,且具有自右向左的结合性。例如:a=2+7/32.赋值运算符的左侧只能是变量不能是常量或表达式。如a+b=c是不合法的赋值表达式。3.赋值号右边的表达式也可以是一个赋值表达式,如a=b=7+1。4.作为一个表达式,它自己也应该有一个值,C语言规定最左边变量中所得到的新值就是赋值表达式的值。学习C语言加群1959851892.6赋值表达式2.6.2复合赋值表达式在赋值运算符”=”之前加上其它运算符可以构成复合赋值运算符。+=-=*=/=%=<<=>>=&=^=|=

等价于

n=n+1

等价于

a=a+3

等价于

n=n*(m+3)注意:有括号例2.3已有变量a,初始值为9,计算表达式a+=a-=a+a的值。a表达式如:n+=1a+=3n*=m+3a+=a-=a+a918a+=a-=18a=a-18-9-9a+=-9a=a+-9a=a+(-9)-18-18a+=a-=a+a的值是:-18学习C语言加群1959851892.6赋值表达式2.6.3赋值运算中的类型转换在赋值运算中,只有在赋值号右侧表达式的类型与左侧变量类型完全一致时,赋值操作才能进行。

如:inta;doubleb;a=10;b=3.5;如果赋值运算符两侧的数据类型不一致,在赋值前,系统将自动先把右侧表达式求得的数值,按赋值号左边变量的类型进行转换,也可以用强制类型转换的方式,人为地进行转换后赋给赋值号左边的变量。a10b3.5如:inta;doubleb;a=20.5;b=15;a20b15.03.在C语言的表达式中(不包括赋值表达式),如果运算符两边的数据类型不相同,将进行类型之间的转换。转换规则如下:doublelongunsignedintfloatchar,short低高如:10+97+1.5-8765.1234*988765.1234*98.0double学习C语言加群1959851892.7自加、自减运算符和逗号运算符2.7.1自加运算符“++”和自减运算符“--”++(自加运算符)--(自减运算符)1.++、--运算符是单目运算符,运算对象只能变量,不能是常量和表达式。2.++和--运算符的结合方向是"自右至左"。i++、++ii--、--ii=i+1i=i-1例如:inti=5;i++;inti=5;++i;inti=5;i--;inti=5;--i;i:表达式:运算规则运算符在前,先计算,后赋值运算符在后,先赋值,后计算例如:inti=3;

-i++;

inti=3;-(i++);i:表达式:思考:程序示例,自增自减运算#include<stdio.h>main(){inti=0,j;j=i++;printf(“%d,%d\n”,i,j);i=0;

j=++i;printf(“%d,%d\n”,i,j);}上机练习656645444-3学习C语言加群1959851892.7自加、自减运算符和逗号运算符2.7.2逗号运算符和逗号表达式,(逗号运算符)用逗号将表达式连接起来的式子称为逗号表达式。逗号表达式的一般形式为:表达式1,表达式2,…,表达式n表达式之间用逗号进行连接1.逗号运算符的结合性为从左到右,因此逗号表达式将从左到右进行运算。如:i=3,i++,++i,i+5

i表达式33i表达式43i表达式55i表达式510逗号表达式的值为2.在所有运算符中,逗号运算符的优先级别最低。学习C语言加群195985189习题一、选择题2.1以下选项中正确的整型常量是A12.B-20C1,000D4562.2以下选项中正确的实型常量是A0B3.1415C0.329X102D.8712.3以下选项中不正确的实型常量是A2.607E-1B0.8103e2C-77.77D456e-22.4以下选项中不合法的用户标识符是Aabc.cBfileCMainDPRINTF2.5以下选项中不合法的用户标识符是

A_123BprintfCA$DDim2.6C语言中运算对象必须是整型的运算符是A%B/C!D**2.7可在C程序中用作用户标识符的一组标识符是AvoidBas_b3CForD2cdefine_123-abcDOWORDIfcaseSIGBDBABCAB学习C语言加群1959851892.8若变量已正确定义并赋值,符合C语言语法的表达式是Aa=a+7;Ba=7+b+c,a++Cint(12.3%4)Da=a+7=c+b2.9以下中叙述中正确的是Aa是实型变量,C允许进行赋值a=10,但不可以这样说:实型变量中允许存放整型值B在赋值表达式中,赋值号左边既可以是变量也可以是任意表达式C执行表达式a=b后,在内存中a和b存储单元中的原有值都将被改变,a的值已由原值改变为b的值,b的值由原值变为0D已有a=3,b=5,当执行了表达式a=b,b=a之后,使a中的值为5,b中的值为32.10以下中叙述中正确的是A在C程序中无论是整数还是实数,只要在允许的范围内都能准确无误的表示BC程序由主函数组成CC程序由若干个函数组成DC程序中只允许包含一个函数2.11VC6.0中int类型变量所占字节数是A1B2C3D4习题BACD学习C语言加群195985189习题2.12合法的八进制数是A0B028C-077D01.02.13不合法的十六进制数是AoxffB0XabcC0x11D0x19二、填空题2.14若k为int型变量且赋值11.请写出运算k++后表达式的值____和变量k的值_____.2.15若x为double型变量,请写出运算x=3.2,++x后表达式的值_____和变量x的值______.2.16函数体由符号___开始,到符号___结束.函数体内的前面是_____________部分,后面是___________部分.2.17C语言中的标识符可分为________.___________和预定义标识符三类.2.18在C语言程序中,用关键字____定义基本整型变量,用关键字_____定义单精度实型变量,用关键字_____定义双精度实型变量.2.19把a1,a2定义成双精度实型变量,并赋初值1的定义语句是________________.2.20C程序中定义的变量,代表内存中的一个_________.11124.24.2{}定义和说明语句关键字用户标识符intfloatdoubledoublea1=1,a2=1;存储单元AA学习C语言加群195985189习题2.21表达式3.5+1/2的计算结果是______.2.22对数学式axb,写出三个等价的C语言表达式_______._______.________.c2.23表达式s=10应当读做___________________________.三.改错题2.24#includestdio.h;main();/*mainfunction*/floatr,s;/*/*risradius*/,/*sisareaofcircular*/*/r=5.0;s=3.14159*r*r;printf("%f\n",s)2.25main/*mainfunction*/{floata,b,c,v;/*a,b,caresides,visvolumeofcube*/a=2.0;b=3.0;c=4.0v=a*b*c;printf("%f\n",v)}3.5(a*b)/ca*b/ca*(b/c)将10赋给变量s学习C语言加群195985189第3章顺序结构3.1赋值语句3.2数据输出3.3数据输入3.4复合语句和空语句3.5程序举例学习C语言加群1959851893.1赋值语句在赋值表达式的尾部加上一个“;”号,就构成了赋值语句,也称表达式语句。例如:a=a+b(赋值表达式)a=a+b;(赋值语句)

学习C语言加群1959851893.2数据输出3.2.1printf函数的一般调用形式首先,我们先来了解一些其它知识。一个程序,一般情况下都包含数据输入、数据处理、数据输出三个部分。输出:把数据从计算机内部送到计算机的外部设备上的操作称为“输出”。输入:从计算机外部设备将数据送入计算机内部的操作称为“输入”。显示器键盘在C语言中,数据的输入和输出是通过调用输入和输出函数来实现的。在VC6.0环境下,在调用输入和输出的库函数之前要求在源程序中出现包含头文件命令行:

#include<stdio.h>

或#include“stdio.h”1.printf函数的调用形式如下:printf(格式控制,输出项表)作用:按照指定的格式将输出项中的值输出到终端。要输出的内容(常量、变量、表达式等)双引号括起来的字符串,按照该指定的格式进行输出学习C语言加群195985189学习C语言加群1959851893.2数据输出3.2.1printf函数的一般调用形式printf也可以没有输出项,函数的调用形式将为:

printf(格式控制)比如:printf(“OK!”);OK!学习C语言加群1959851893.2数据输出3.2.2printf函数中常用的格式说明格式字符:

d

以十进制整数进行输出

o

以八进制数进行输出

x

以十六进制数进行输出

f

以小数形式进行输出::使用时,以%作为引导符格式字符必须使用小写如:%d%o%x%f简单的格式字符形式完整的格式字符形式%

+

-

0

n

n1.n2

l/h

格式字符n

指定输出的宽度printf(“%6d\n”,k);n1.n2n1指定输出的宽度,n2指定输出的小数位数printf(“%12.2f\n”,f);0

输出的数据右对齐,前面补0printf(“%06d\n”,k);-

输出的数据左对齐printf(“%-6d\n”,k);+

输出的数据为正数时,使前面带有“+”符号printf(“%+-6d\n”,k);l

输出整数时,为长整型;输出实数时,为双精度型printf(“%ld\n”,k);h

输出整数时,为短整型printf(“%hd\n”,k);有如下程序段intk;floatf;k=1234;f=123.456jj1234jjjjjj123.460012341234jj+1234j12341234学习C语言加群1959851893.2数据输出3.2.2printf函数中常用的格式说明下面,将简单的介绍一些输出格式形式和输出结果:printf(“%f\n”,f);printf(“%12f\n”,f);printf(“%.6f\n”,f);printf(“%12.0f\n”,f);printf(“%e\n”,f);printf(“%13e\n”,f);printf(“%13.8e\n”,f);printf(“%3.8e\n”,f);printf(“%.8e\n”,f);printf(“%13.9e\n”,f);printf(“%13.2e\n”,f);printf(“%g\n”,f);printf(“%10g\n”,f);printf(“%f%%\n”,12.5);123.456000jj123.456000123.456000jjjjjjjjj1231.234560e+0021.234560e+0021.23456000e+0021.23456000e+0021.23456000e+0021.234560000e+002jjjj1.23e+002123.456jjj123.45612.500000%以指数形式输出,输出时,先以小数位数为基准,再考虑输出的宽度.以原数的最小宽度进行输出,指定宽度时,按指定宽度进行输出学习C语言加群1959851893.2数据输出3.2.3使用printf函数时的注意事项1.在使用输出函数时,输出的数据要清晰,视觉感要好。例如:k=1234,f=123.456printf(“%d%d%f\n”,k,k,f);printf(“%d,%d,%f\n”,k,k,f);printf(“k=%d,k=%d,f=%f\n”,k,k,f);12341234123.4560002.在格式控制串中,格式说明与输出项从左到右在类型上要一一对应匹配。如不匹配,将导致数据不能正确输出,这时,系统并不报错。最好例如:inta=10;floatb=12.5;printf(“a=%f,b=%d\n”,a,b);a=0.000000,b=1076428800inta=10;floatb=12.5;printf(“a=%d,b=%f\n”,a,b);a=10,b=12.500000编译时能通过,则输出时为不正确的数据输出时类型一定要一一对应1234,1234,123.456000k=1234,k=1234,f=123.456000学习C语言加群1959851893.2数据输出3.2.3使用printf函数时的注意事项若格式说明中的个数少于输出项的个数时,则多余的输出项不予输出;若格式说明中的个数多于输出项的个数时,则将输出一些毫无意义的数字。例如:inta=10,b=20,c=30;printf(“%d,%d\n”,a,b,c);10,20inta=10,b=20,c=30;printf(“%d%d%d%d\n”,a,b,c);10,20,30,23674604.在格式控制串中,除了合法的格式说明外,可以包含任意的合法字符,还可以包括转义字符,这些字符在输出时将"原样照印"。例如:printf(“my\tname\tis\tchenhao\n”);mynameischenhao\t为转义字符(制表符)代表八个空格字符5.如果需要输出百分号%,则应该在格式控制串中用两个连续的百分号%%来表示。例如:printf(“%d%%”,100);100%6.printf函数的返回值通常是本次调用中输出字符的个数。思考:printf(“my\tname\tis\tchenhao\n”);函数的返回值是多少?学习C语言加群1959851893.2数据输出3.2.3使用printf函数时的注意事项7.思考:如:intk=8;

printf(“%d,%d\n”,k,++k);9,98.输出时,也可以用参数作为域宽。如:intm=8,i=10;

jjjjjj10123.4560000000intm=8,n=10;floatf=123.456;首先先对应匹配,然后再输出,输出的过程,是按输入项从右往左printf(“%8d”,i);printf(“%8.10f”,f);学习C语言加群1959851893.3数据输入3.3.1scanf函数的一般调用形式scanf(格式控制,输入项表)1.scanf函数的调用形式如下:作用:把从终端设备(如,键盘)上输入的数据传送给对应的输入项(如变量地址)。双引号括起来的字符串,按照该指定的格式进行输入把从键盘上输入的数据送到该指定的输入项中,输入项中必须为变量的地址例如:intk;floata;doubley;scanf(“%d%f%lf”,&k,&a,&y);函数名输入格式控制变量地址(实参)在scanf函数调用的后面加一个分号就构成输入语句。★变量地址形式:&变量名

学习C语言加群1959851893.3数据输入3.3.1scanf函数的一般调用形式例:对于scanf函数的调用形式,请见下面的程序示例。#include<stdio.h>main(){inta;floatb;scanf(“%d%f”,&a,&b);printf(“%d,%f\n",a,b);}scanf(“%d%f”,&a,&b);比如,想把23赋值给a,12.345赋值给b,输入形式为:程序执行到此,停止执行,等待用户从键盘输入数据,等输入数据后,待用户安回车键<CR>后,继续向后执行。2312.345<CR>ab输出结果为:23,12.3450002312.345学习C语言加群1959851893.3数据输入3.3.2scanf函数中常用的格式说明scanf函数中的格式说明字符与输出函数中的格式说明字符相同。在使用scanf函数进行输入时,应该注意以下几点:

1.在格式控制中,格式说明的类型与输入项的类型,应该一一对应匹配。如果类型不匹配,系统并不给出出错信息,但不可能得到正确的数据。2.在输入项表中,输入项的个数要与格式符的个数相同,且排列顺序要一一对应。若格式符个数少于输入项,scanf函数按格式符的数目结束输入,多余的输入项没有得到新的数据;若格式符个数多于输入项,scanf函数则按输入项的数目结束输入,多余的格式符不起作用(作废)。例如:inta,b,c;scanf(“%d%d”,&a,&b,&c);printf(“%d%d%d\n”,a,b,c);10,20,-858993460比如说,我们从键盘读入:102030<CR>inta,b,c;scanf(“%d%d%d%d”,&a,&b,&c);printf(“%d%d%d\n”,a,b,c);10,20,30比如说,我们从键盘读入:10203040<CR>学习C语言加群1959851893.3数据输入3.3.2scanf函数中常用的格式说明在scanf函数中的格式字符前可以用一个整数指定输入数据所占宽度。当输入函数的格式说明的类型与输入项的类型一一对应匹配时。程序在运行的过程中,当我们输入的数据个数少于输入项时,运行的程序将一直等待输入,直到满足要求时才继续向下执行;当我们输入的数据个数多于输入项时,多于的数据没有作废,依然在缓冲区中等待等待下一个输入操作语句。5.scanf函数在调用结束后将返回一个函数值,其值等于得到输入值的输入项的个数。例如:inta;scanf(“%5d”,&a);该输入函数正确的输入形式为:88输入宽度为5学习C语言加群1959851893.3数据输入3.3.3通过scanf函数从键盘输入数据1.输入数值数据例如:intk;floata;doubley;scanf(“%d%f%lf”,&k,&a,&y);若要给k赋值10,a赋值12.3,y赋值1234567.89,正确的输入格式如下:1012.31234567.89<CR>1012.31234567.89<CR>10<CR>12.3<CR>1234567.89<CR>输入的数据之间必须用间隔符隔开可以使用的间隔符有:空格、回车符、制表符错误的输入格式:1012.31234567.89<CR>学习C语言加群1959851893.3数据输入3.3.3通过scanf函数从键盘输入数据2.指定输入数据所占的宽度例如:intk;floata;doubley;scanf(“%3d%5f%5lf”,&k,&a,&y);若从键盘上从第1列开始输入:123456.789.123<CR>用printf(“k=%da=%fy=%f\n”,k,a,y);输出的结果是:k=123a=456.700000y=89.120000kya123456.789.12学习C语言加群1959851893.3数据输入3.3.3通过scanf函数从键盘输入数据3.跳过某个输入数据例如:intx,y,z;scanf(“%d%*d%d%d”,&x,&y,&z);printf(“%d%d%d\n”,x,y,z);若从键盘上输入:12345678<CR>则输出的结果是:125678学习C语言加群1959851893.3数据输入3.3.3通过scanf函数从键盘输入数据4.在格式控制字符串中插入其他字符又如:intx,y,z;scanf(“%d,%d,%d”,&x,&y,&z);这时从键盘上输入时,一定要向下形式进行输入:Pleaseinputx,y,z:123456<CR>在格式控制字符中出现了其他字符的语句如下:intx,y,z;scanf(“Pleaseinputx,y,z:%d%d%d”,&x,&y,&z);则正确的输入形式:12,34,56<CR>12,34,56<CR>12,34,56<CR>错误的输入形式:123456<CR>12,34,56<CR>学习C语言加群1959851893.4复合语句和空语句3.4.1复合语句复合语句是用符号"{"和"}"括起来的语句组,也可称为"语句块",在语法上被视为一条语句。复合语句的语句形式如下:{语句1;语句2;…;语句n;}例如:{a++;b*=a;printf("b=%d\",b);}学习C语言加群1959851893.4复合语句和空语句3.4.2空语句空语句由一个分号构成,但它是一个C语句,程序执行空语句时不产生任何操作。如:main(){;}学习C语言加群1959851893.5程序举例例3.1

以下程序由终端输入两个整数给变量x和y;然后输出x和y;在交换x和y中的值后,再输出x和y。验证两个变量中的数是否正确地进行了交换。程序分析:输入两个整数分别给变量x和y。输出两个变量。交换两个变量中的值。再输出两个变量。自然语言描述开始输入x、y输出x、y交换x和y中的值输出x、y结束一般流程图描述#include<stdio.h>main(){intx,y;printf(“Enterx&y:\n");scanf(“%d%d”,&x,&y);printf(“x=%dy=%d\n",x,y);

printf(“x=%dy=%d\n",x,y);}通过流程图,编写出程序xy123456zz=x;x=y;y=z;交换x和y中的值;z=x;x=y;y=z;intz;Enterx&y:123456<CR>x=123y=456x=456y=1233.5程序举例例3.2

输入一个double类型的数,使该数保留小数点后两位,对第三位小数进行四舍五入处理,然后输出此数,以便验证处理是否正确。程序分析:输入一个double类型的数给变量x。使该数保留两位小数,要进行四舍五入。输出四舍五入后的值。开始输入x对x进行四舍五入输出x结束123.4567123.4567x10012345.6712345.67+0.512346.1712346123.46#include<stdio.h>main(){doublex;

printf(“Enterx:\n”);/*输出的时候进行提示*/scanf("%lf",&x);

printf(“(1)x=%f\n”,x);/*输出我们刚刚输入的原始数据*/x=x*100;x=x+0.5;x=(int)x;x=x/100;printf("(2)x=%f\n",x);}Enterx:123.4567<CR>(1)x=123.456700(2)x=123.460000习题一.选择题3.1若a,b,c,d都是int型变量且初值为0,以下选项中不正确的赋值语句是Aa=b=c=100;Bd++;Cc+b;Dd=(c=22)-(b++);3.2下列选项中不是C语句的是A{inti;i++;printf(“%d\n”i);}B;Ca=5,c=10D{;}3.3合法的C语言赋值语句是Aa=b=58Bk=int(a+b);Ca=58,b=58D--i;3.4有以下程序#include<stdio.h>main(){intx=10,y=3;printf("%d\n",y=x/y);}执行后的输出结果是A0B1C3D不确定的值3.5若变量已正确定义为int型,要给a,b,c输入数据,正确的输入语句是Aread(a,b,c);Bscanf(“%d%d%d”,a,b,c);Cscanf(“%D%D%D”,&a,%b,%c);Dscanf(“%d%d%d”,&a,&b,&c);CCDCD习题3.6若变量已正确定义为float类型,要通过输入语句:scanf(“%f%f%f”,&a,&b,&c);给a赋值11.0,b赋值22.0,c赋值33.0,不正确的输入形式是A11B11.0,22.0,33.0C11.0D11222222.033.033333.7若变量a,b,t已正确定义,要将a和b中的数进行交换,以下选项中不正确的语句组是Aa=a+b,b=a-b,a=a-b;Bt=a,a=b,b=t;Ca=t;t=b;b=aDt=b;b=a;a=t;3.8若有正确定义语句

doublex=5.16894;语句printf(“%f\n”,(int)(x*1000+0.5)/(double)1000);的输出结果是A输出格式说明与输出项不匹配,输出无定值B5.170000B5.168000D5.1690003.9若有以下程序段:intc1=1,c2=2,c3;c3=c1/c2;printf(“%d\n”,c3);执行后的输出结果是A0B1/2C0.5D1BCDA习题3.10若有以下程序段inta=0,b=0,c=0;c=(a-=-5),(a=b,b+3);printf(“%d,%d,%d\n”,a,b,c);执行后的输出结果是A3,0,-10B0,0,5C-10,3,-10D3,0,3二.填空题3.11若有以下定义,请写出以下程序段中输出语句执行后的输出结果________.inti=-200,j=2500;printf("(1)%d,%d",i,j);printf("(2)i=%d,j=%d\n",i,j);printf("(3)i=%d\nj=%d\n",i,j);3.12变量i,j,k已定义为int类型并均有初值0,用以下语句进行输入时:scanf("%d",&i);scanf("%d",&j);scanf("%d",&k);从键盘输入:12.3<CR>则变量i,j,k的值分别是______._______._______.3.13复合语句在语法上被认为是_________.空语句的形式是_________.B(1)-200,2500(2)i=-200,j=2500(3)i=-200j=25001200一条语句;习题3.14C语句的最后用________结束.3.15以下程序段要求通过scanf语句给变量赋值,然后输出变量的值.写出运行时给k输入100,给a输入15.81,给x输入1.89234时的三种可能的输入形式________.___________.___________.intk;floata;doublex;scanf("%d%f%lf",&k,&a,&x);printf("k=%d,a=%f,x=%f\n",k,a,x);;10015.811.89234<CR>100<CR>15.811.89234<CR>100<CR>15.81<CR>1.89234<CR>习题3.16以下程序多处有错误.若指定必须按下面的形式输入数据,并且必须按下面指定的形式输出数据,请对该程序做相应的修改.main{doublea,b,c,s,v;printf(inputa,b,c:\n);scanf("%d%d%d",a,b,c);s=a*b;v=a*b*c;printf("%d%d%d",a,b,c);printf("s=%f\n",s,"v=%d\n",v);}当程序执行时,屏幕的显示和要求输入形式如下:inputa,b,c:2.02.03.0a=2.000000,b=2.000000,c=3.000000s=4.000000,v=12.000000第4章选择结构4.1关系运算和逻辑运算4.2if语句和用if语句构成的选择结构4.3条件表达式构成的选择结构4.4switch语句以及用switch和break语句构成的选择结构4.5语句标号和goto语句4.1关系运算和逻辑运算4.1.1C语言的逻辑值关系表达式和逻辑表达式的运算结果是一个逻辑值。逻辑值真假非004.1关系运算和逻辑运算4.1.2关系运算符和关系表达式1.关系运算:是对两个量进行“比较运算”。2.关系运算符:<<=>>===!=高低3.结合性:自左向右(左结合)4.和其他运算符进行混合运算时,其运算符之间的优先级为:算术运算符、关系运算符、赋值运算符、逗号运算符低高关系表达式:由关系运算符组成的表达式,称为关系表达式。关系运算符两边的运算对象可以是C语言中任意合法的表达式。例如:a>=b(a=3)>(b=4)a>c==c例如:a=10;b=6;c=15;c>a>b真假假关系运算的值为“逻辑值”真假101004.1关系运算和逻辑运算4.1.3逻辑运算符和逻辑表达式1.逻辑运算符:&&(逻辑与)||(逻辑或)!(逻辑非)双目单目(在运算对象的左边)3.结合性:自左向右(左结合)4.它们的优先级由高到低为:!(逻辑非)、&&(逻辑与)、||(逻辑或)。5.和其他运算符进行混合运算时,其运算符之间的优先级为:!(逻辑非)、算术运算符、关系运算符、&&(逻辑与)、||(逻辑或)、赋值运算符、逗号运算符高低逻辑表达式:由逻辑运算符组成的表达式,称为逻辑表达式。逻辑运算的运算对象可以是C语言中任意合法的表达式。例如:(a>b)&&(x>y)a!=b||b!=0!a!=b例如:a=10;b=16;x=5;y=8;011其逻辑运算规则见书中表4.1所示。思考:5>3&&2||!8<4-2的结果为?4.1关系运算和逻辑运算4.1.3逻辑运算符和逻辑表达式注意在C语言中,x的值必须要在0和10之间,应如何表示?0<=x<=10错误的表示方式比如:x=20;上面的表达式也满足条件。正确的表示方式为:x>=0&&x<=10或0<=x&&x<=106.C语言中,由&&或||构成的逻辑表达式,在特定的情况下会产生“短路”现象。例如:a++&&b++若:a=0;b=0;若:a=1;b=1;例如:a++||b++若:a=1;b=1;若:a=0;b=0;0110ab10a2b2ab21a1b14.2if语句和用if语句构成的选择结构4.2.1if语句C语言的if语言有两种形式:if(表达式)语句if(表达式)语句1else

语句2单分支if语句不含else子句双分支if语句含else子句关键字关键字(b)图表达式语句1语句2满足不满足(a)图表达式语句满足不满足例如:if(a<b){t=a;a=b;b=t;}例如:if(a!=0)

温馨提示

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

评论

0/150

提交评论