




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、C语言字符集
自然语言:字符、单词、语句、段落、文章、文档
C语言:字符、单词、语句、函数模块、程序文件、完整程序
1.大、小写英文字母(52个)
A-Z,a-ze如A和a不同,Abe和abc不同。
2.十进制数字符号(10个)
0-9。
3.标点符号
,;'”:<空格>{}等。半角西文。
4.单字符运算符号
()[]+-*/%.>=<!~&八|?。半角西文。
5.特殊用途的符
井字号伊)、反斜线(\)、下划线(_);
含128个字符的单字节的ASCII编码表;
含65536个字符的双字节的Unicode编码表;
一对双引号括起来的为字符串,其中可以使用任何J字符。如匕bc=5"、
”姓名:王明”为合法字符串。
由C语言中规定的字符可以组成每个单词,有些为单个字符本身,有些
为连续若干个字符组合。
1.保留字
又称为关键字。如int,char,if,for等。
2.标识符
由英文字母或下划线开头的字母数字串所组成。如x2,Time,a,
maxMage等。标识符length表示长度,标识符age表示年龄。
3•常量
在运算过程中不能被改变值的量。
常数如5、23、-256、2.307等都是常数。
字符就是单个西文字符或者各种符号,即ASCII码字符。如宣、
5、中、’%等。
字符串用双引号括起来的一串字符。如“5"、'pple”、“姓名”、“A+B二”
等。又如“张华“、“食品安全鉴定会”。
4.运算符
就是能够进行运算的符号。算术运算符、关系(比较)运算符、字符串
运算符、逻辑运算符等。单目、双目、三目。
单字符运算符如+、・、*、/、>、<、=等。
双字符运算符如>二、<=.==、++、--、&&等。
三字符运算符如>>=、<<=等。
5.标点符号
每个标点符号都可以单独作为单词使用。
1.用户类型定义语句
把一个标识符定义为一种数据类型。如typedefintinData;
2.变量定义语句
把标识符定义为一个变量,如intx;
3.函数原型语句
函数声明语句或函数说明语句。函数定义、函数声明和函数调用。一个
函数的声明或定义必须在前,而对它的函数调用在后。
4.表达式语句
表达式就是进行运算的式子。表达式后加分号构成表达式语句。
如y=3*x+5是赋值表达式,而y=3*x+5;是赋值表达式语句。
5.复合语句
由一对花括号括起来的一条或若干条语句。如{intx;x=10;}
6.选择类语句
根据已知条件从多个分支语句块中选择一个满足条件的语句块执行。if
语句和语句。如
switchif(x>=60)cn=l;elsecn=0;o
7.循环类语句
根据所设定的循环条件控制一个程序段反复执行。for循环语句、while
循环语句和d。循环语句。如for(i=l;i<=10;i++)s=s+i;
1十2十…十10二55。
8.跳转类语句
改变程序从上到下顺序执行语句的次序,转移到其他指定的位置执行。
goto语句、return语句、break语句、continue语句等。如gotoL1;
函数:函数头和函数体。可以带参数,可以返回值。
1.函数分类
带参函数和无参函数;有返回值函数和无返回值函数;数值函数、
日期与时间函数、逻辑函数、字符串函数、存储空间分配函数、文件函
数、输入与输出函数等;系统函数和用户函数。
2.系统函数和用户函数
系统函数由C语言系统内部的函数库所定义的函数,系统函数的所
有函数原型被组织到系统头文件中。
系统头文件如math.h,stdio.h;
系统函数如
printf(),scanf()o
用户函数由用户根据需要自己编写函数定义的函数。
3.C语言中的头文件
系统头文件和用户头文件。
系统头文件是在C语言系统内已经定义的头文件。
用户头文件由用户在程序中根据需要而定义的头文件。
头文件的使用:通过在程序文件开始使用include命令。
头文件的扩展名为h。如stdio.h是系统头文件。
C头文件的内容:数据类型定义、常量定义、函数原型语句等。
4.#include包含命令格式
命令格式:includeC头文件名〉
include”头文件名”
尖括号表示引入的是系统头文件;双引号表示引入的是用户头文
件。
$Q#include"abc.h"
#include"d:\\c语言\\abc.h"
包含命令可以包含头文件,也可以包含一般的程序文件。
在编译一个程序的过程中,用包含命令中的文件内容取代该命令。
带并字符开头#indude或其他命令都称为编译预处理命令。这些
命令不能以分号结束,以示同语句的区别,无论是否被编译,将始终保
持在源文件中。
一个include命令只能包含一个文件。
5.C语言中函数的定义格式
〈函数类型〉v函数标识符》(〈参数表〉)〈函数体〉
函数头:〈函数类型〉〈函数标识符〉(〈参数表〉),是函数说明
部分。
函数体:是一条复合语句,是函数的执行部分。
intfl(intn){intp;p=n*n+l;returnp;}//n=5,返回26。
6.主函数定义和作用
定义格式:〈函数类型,main(〈参数表〉)<函数体〉
主函数不是系统函数,而是由用户自己定义的用户函数,函数名
main。
如intmain(intargc,char*argv){...}
常用格式:voidmain(void){语句序列}
若返回值类型为int,则函数体最后使用return0;结束
7.使用主函数的程序举例
include〃包含的头文件用来进行输入和输出
voidmain(void)〃主函数的头部,无返回类型,无参数
{〃向下是函数体
printf("这是一个C语言程序的例子!\n");〃标准输出函数
)
这是一个C语言程序的例子!〃输出内容
Pressanykeytocontinue//运行结束提示
1.多文件结构
一个C语言程序包含一个或多个程序文件;
每个程序文件是一个独立的存储单位和编译单元;
一个完整程序是一个独立的程序运行单元。
2.主程序文件
一个完整的程序包含有一个主程序文件;
一个主程序文件包含有主函数的定义的程序文件,主函数名main;
一个C语言程序包含一个主程序文件,可以包含0个、1个或多个一般
程序文件。
3.程序文件的函数结构
一个程序文件可以包含一个或若干个用户定义的困数。
4.程序中的注释
注释的作用:增强程序的可读性
注释方法:双斜线〃;/*开始,//结束
使用注释的程序举例
程序举例1:
#include〃包含命令
intAdd(intx,inty);//Add用户函数定义的原型声明语句
intmain(void)〃主函数的定义
(
inta;〃变量定义语句
d=Add(3,4);〃调用并赋值语句
printf(”a=%d\Ma);〃屏幕输出函数调用
return0;〃返回语句
)
intAdd(intx,inty)//Add函数定义
intz=x+y;returnz;〃此返回x+y的和7
)
程序举例2:
#include〃标准I/O操作需包含stdio.h
include〃调用数学函数需包含math.h
/*以下是主函数定义*/
voidmain()〃主函数头
{〃向下为函数体
doublex,y,z;〃定义三个实数变量
x=9.0;〃给变量x赋值为常数9.0
y=pow(x,3);〃计算x3,其值729.0赋给y
z=sqrt(x);〃计算x的平方根,其值3.0赋给z
printf("%5.0Lf%5.0Lf%5.0Lf\n”,x,y,z);〃输出变量值
)
输出结果:
97293
Pressanykeytocontinue
程序举例3:
#include/*标准I/O操作需包含stdio.h*/
/*以下是主函数定义*/
voidmain。/*主函数头*/
{/*向下为函数体*/
intx,y,z,w;〃定义四个整型变量
scanf("%d%d%d”,&x,&y,&z);〃给x,y和z输入整数
w=x+y+z;//x+y+z的值赋给w
printf("%d%d%d%d\n”,x,y,z,w);〃输出x,y,z,w的值
)
程序运行结果如下:
234〃键盘输入
2349
Pressanykeytocontinue
1.printfO函数的来历和作用
printf()函数是系统函数,标准输出函数,向显示器屏幕窗口输出数据。
需要在程序文件的开始使用包含命令,包含
includestdio.ho
2.printfO函数格式
函数原型声明语句格式(包含在stdio.h头文件中):
intprintf(〈字符指针参数〉,〈形式参数表>);
函数调用格式(由编程者/用户使用在用户函数的定义中):
printf(〈格式字符串〉,〈实际参数表>);
函数功能:
将格式字符串中的非格式字符的内容和实际参数表中每个数据项的值
输出到显小器屏帚窗口上显小出来。
实际参数表:
含有0个、一个或多个数据项,数据项之间用逗号分开。
3.格式字符串
格式字符串是用双引号括起来的包含格式字符的字符序列。
每个格式字符用来表示一种数据类型,以一个百分号%开始。
格式字符串中可包含需原样输出的一般字符,如空格、换行等。
在百分号%和格式字符之间带有对齐方式、占用宽度、小数位数等。
4.简单格式字符串举例
如"%d*%d=%d\n”,3个格式字符d,d代表整数int类型。
格式字符串中3个格式字符d,对应实际参数表中3个整型数据项。
实际参数表中各数据项值的类型决定格式字符串中对应格式字符的类
型。
如要输出整数变量X的值,则对应的格式字符为%d。
5.常用的格式字符
d、i、f、e、c、s、p、o、u、x、%o
d和i:整数类型
f和e:单精度类型,f是定点表示法,e是浮点表示法。
如23.05是定点表示法的常数,而2.305e+002是浮点表示法的常数。
科学表示法:尾数部分、指数符号e和指数部分。
格式字符c:字符类型
格式字符s:字符指针类型
6.printf函数调用举例
a是char,值,x是int,值32,wg是float,值2.56。
printf("%c%d%f\n",a,,wg);
输出结果:,322.560000
7.数据项的输出宽度控制
每个格式字符与它前面的百分号%之间,可以使用一个正整数,用来规
定对应值的输出宽度。
printf(”%5d\n”,36);
数据值按右对齐方式输出,用负整数按左对齐方式输出。
printf("%-5d\n",36);
8.输出单精度数和双精度数
格式字符f将对应输出一个单精度数,对于“%m.nf”,m表示总宽度,
n表示纯小数部分所占用的宽度。
printf("%6.2f\n"/35.8);
得到的输出结果为“35.80〃。
格式字符If或Lf表示双精度类型。例如:
printf("%lf”,x)或printf(”%Lf”,x);将输出一个双精度变量x的值。
9.输出各种整数类型的数据
短整数类型shortint,标准整数类型int、长整数类型longinto
格式字符d表示标准整数类型int
格式字符hd表示短整型类型shortint
格式字符Id或Ld表示长整型类型longint
假定标识符a、b和c分别是短整型、标准整型和长整型的变量
printf("%hd%d%ld\n"za,b,c);
1.scanf()函数的来历和作用
标准输入函数scanf()也是系统函数,从标准输入设备键盘输入各种类
型的数据,给程序中的变量赋值。
在使用函数调用前,也要使用#近山命令包含
scanf()16stdio.ho
2.scanf()函数格式
函数原型声明语句格式:
intscanf(v字符指针参数〉,〈形式参数表>);
函数调用格式:
scarify格式字符串a,v实际参数表》);
函数功能:
执行此函数调用时,等待用户从键盘上为实际参数表中的每个变量依次
输入数据。接着从键盘缓冲区中读取数据,并依次赋值给实际参数表中
的每个参数变量。
实际参数表:
是一个含有一个或多个实际参数的列表,每两个参数之间必须用逗号分
开,每个参数只能是指针类型的变量。若利用scanf()函数调用从键盘
缓冲区为输入一个整数,则应书写为
xscanf("%d"z&x)o
格式字符串:
在格式字符串中,可以包含各种格式字符选项,也可以包含通常作为输
出或输入数据值之间提示符的一般普通字符。对于printf()函数,提示
符是原原本本地显示到屏幕,对于scanf()函数,提示符是需要用户从
键盘上输入的。
在scanf()函数调用的格式字符串中,各格式字符之间通常使用空格字
符。从键盘上输入的数据之间也要求输入一个空格,最后按下回车键结
束。
3.scanf()因数调用举例
⑴scanf(”%d%d”,&x,&y);
(2)scanf("%d%lf"f&nl/&xl);
(3)scanf(〃%d%c%d",&a,&p,&b);
scanf()和printf()函数调用举例
/*这个程序用cl_4.c作为文件名保存,只有主程序文件。*/
#include
voidmain()
{intxzy;
y=o;
while(l)
(
scanf("%d”,&x);〃输入一个整数至I」x
if(x<=0)break;//gx小于或等于0则退出循环
y=y+x;〃把x的值累加到y上
)
printf("y二%d\n”,y);〃输出y的值
)
若从键盘输入的一组整数为:
3581215-1〃键盘输入
输出的结果为:
y=43//3+5+8+12+15=43
运行VC++6.0后,打开一个可视化的操作界面窗口。文字教材中第1
章第18页图1-1给出了一个抓图视屏,它是进入VC++6.0集成开发
环境后的主操作界面窗口。此操作界面窗口同具有windows风格的各
种软件开发界面窗口的结构大致相同,从上到下包含有标题栏、菜单栏、
工具栏、程序文本编辑区域、显示程序编译和连接信息的状态区域等。
在菜单栏中,包含有文件、编辑、查看、插入、工程、编译、工具、窗
口、帮助等菜单项。
文字教材中的第1章第L8节,介绍了输入、编辑、编译、连接和运行
一个C语言程序的全部操作过程,同学们应当认真阅读和实践。
利用VC++6.0集成开发环境开发C语言程序大致经过以下几步。
第1步:针对问题建立程序的层次结构
根据要解决的具体编程问题,分析整个程序应该由哪几个程序文件和头
文件所组成,每个程序文件又包含有哪几个函数定义,函数之间应用如
何调用等。
第2步:编写出C语言程序中的每个程序文件和一些头文件
最简单的情况是:只需要编写出一个程序文件,它就是包含主函数定义
的主程序文件。
第3步:上机输入和编辑每个程序文件和头文件
上机输入、编辑和保存每个程序文件,同时输入、编辑和保存每个用户
头文件。通常先进行主程序文件的操作,再进行其他一般程序文件和头
文件的操作。
第4步:编译每个程序文件生成相应的目标代码文件
通过选择〃编译〃菜单项下的〃编译〃子菜单项,能够实现对程序编辑
区域中的当前程序文件进行编译。通常是首先编译主程序文件,然后再
编译其他每个程序文件,目标代码文件的扩展名为。切,目标文件的文
件名与源程序文件的文件名相同。
当编译一个程序文件出现错误时,对程序文件或涉及到的头文件需要进
行修改。然后再重新进行编译。
注意:每个用户头文件不能被单独编译,只能被使用在#indude命令
中,同所在的程序文件一起被编译。
第5步:把所有目标代码文件连接起来生成可执行文件
选择〃编译〃菜单项下的〃连接〃(构件)子菜单项,将自动把当前程
序中的所有目标代码文件连接起来,自动生成一个可执行的文件,该文
件的扩展名为exe,其文件名同样与源程序文件名相同。
第6步:运行程序
通过选择〃编译〃菜单项下的〃执行〃子菜单项,将自动执行当前C语
言源程序所对应的可执行程序文件,调用执行主程序文件中的主函数,
依次执行主函数体中的每条语句。
Pressanykeytocontinue〃提示信息
1.数据类型的概念
整数类型的数据:人的年龄和工龄、物品的个数、时间上的天数
实数类型的数据:商品单价和重量、天气的温度和湿度、车辆行驶距离
和速度。
组合类型的复杂数据:日期、居民身份证、商品、单位
2.C语言中的数据分类
「短整数
(―整数—标准整数
—广义整数------字符二长整数
枚举
简单---I—
厂单精度
—实数------双精度
一长双精度
一数组
一指针
数据组合一
—结构
—联合
「空值
3.数据类型的表示
例如用标识符int表示标准整数类型,用标识符char表示字符类型,
用标识符float表示单精度实数类型。
字符类型char:类型长度为1,值域范围是-128到+127之间的整数。
常用的ASCII代码表中包含有128个字符对应的字符编码为。至127。
每个ASCII码字符都属于C语言中字符类型char中的一个字符。
短整数类型shortint:类型长度为2,能够表示-32768到+32767。
4.系统定义的数据类型
(1)标准整数类型:又分为有符号和无符号两种。
有符号标准整数类型:int或signedint长度4々31〜+23i・l
无符号标准整数类型:unsigned或unsignedint0~+232-1
有符号短整型:short、shortint、signedshortint
无符号短整型:unsignedshort、或者unsignedshortint
有符号长整型:long、longint、signedlongint
无符号长整型:unsignedlong、或者unsignedlongint
(2)实数类型:又分为单精度、双精度、长双精度等3种。
单精度实数类型:float,类型长度为4,对应二进制的32位,能够精
确保存到7位有效数字。实数-3.18359。
双精度实数类型:double,类型长度为8,对应二进制的64位,能够
精确保存到15位就数字。实数3.18359*7.2345的结果有11位有效
数字。
长双精度实数类型:longdouble,类型长度为8
(3)字符类型:又分为有符号和无符号两种。
有符号字符类型:char或signedchar
无符号字符类型:unsignedchar表示
(4)空类型:即无值类型或者叫做空值类型,使用保留字void表示。
通常用来定义函数的返回类型。
在函数名后面的一对圆括号内填写保留字void,表示参数表为空。
例如:voidmain(void){…}
5.用户定义的数据类型
枚举类型:是需要用户自己定义的一种简单的数据类型,它以保留字
enum开始,后跟用户定义的标识符,作为枚举类型的名称,再后面是
用一对花括号括起来的部分,作为该枚举类型的定义体,最后用分号结
束定义。
定义体中包含用逗号分开的枚举常量标识符,每个枚举常量的值为它的
位置序号。
enumcoloured,yellow,blue};
其中color为该枚举类型的标识符,red.yellow和blue为枚举常量,
位置序号依次为0、1和2。
enumcolorx=blue;
enumday{Sun=7,Mon=1,Tues,WedzThur,Fri,Sat};
常量:字面常量和符号常量。字面常量的值就是字面本身。如整数25。
符号(标识符)常量:定义时为它赋值,以后不允许被改变。
在定义枚举类型时,定义体中的标识符都是符号常量,在C语言系统内
部定义有符号常量NULL,它的值为整数值0。
1.字面常量
字面常量又分为整数常量、实数常量、字符常量、字符串常量等四种。
(1)整数常量:十进制、八进制和十六进制三种。
十进制:第一个数字非0的正整数或负整数,如L25、-100.3270
等。
八进制:第一个字符为0、第二个及以后为八进制数字0-7的正整数。
如023、074等。八进制采用逢8进1,每一位的权值为8的若干次方。
如八进制数023对应的十进制整数为19,又如0345对应的十进制整
数为229。
十六进制:前两个字符为Ox或0X,后面为十六进制数字的正整数。十
六进制采用逢16进1,开且具有16个数字符号,前10个数字符号信
用十进制的,后个数字符号借用英文字母如十六进
0-96a-f(A-F)o
制数0x23的十进制值为35;0Xa5c的十进制值为为
12+80+2560=2652。
字面整数常量的数据类型:当一个整数常量属于int类型的表示范围时,
则是一个int类型的整数若超出int类型的表示范围则是—double
类型的双精度数。
小写或大写字母u,则为unsignedint的整数
小写或大写字母|,则为类型的长整数。如
longint2525u25Le
(2)实数常量:只有十进制表示,又分为定点和浮点两种表示方法。
定点表示方法:带小数点不带指数的表示方法。如12.0.-3.56.0.06
等。
浮点表示方法:在定点表示的基础上,再添加有指数部分的表示方法。
指数部分用小写或大写字母e表示鬲的底数10幕的指数紧跟在字母e
之后。如2.45e3,其表示值是2.45*103;-30E-4,表示值是30.0*104
规范化的浮点表示方法:若在浮点数的定点部分(尾数部分),其小数
点前只有T立不为0的数字。如3.05E-8对应的数值为3.05*10-8。如
32.5e6改写为3.25e7就为规范了r0.024e5改写为-2.4e3就规范了。
字面实数常量的类型确定:对于任一个实数常量,认为是双精度double
类型的。
小写或大写字符f,是单精度float类型的常量。如2.542.54f。又如
2.54e3为双精度类型,则2.54e3F则为单精度类型。
(3)字符常量:就是一个ASCII码字符,为了区别于数值或变量表示,
必须在字符两边用单引号括起来。
字符常量分为一般字符和转义字符两种。当单引号内只有一个字符时,
则为一般(普通、可打印)字符表示,如a、5、+、
G等。当单引号内包含有两个或两个以上字符,并且第1个字符
为反斜线时,则为转义字符表示。如\n表示打印输出时的换行控
制;\0表示空字符,输出它时不起任何作用;\\也是一个转义
字符。
在转义字符表示中,其反斜线后面还允许使用3为八进制整数或以小写
字母x开始的2位十六进制整数。如\075;又如\x75,表示
字符u。
(4)字符串常量:就是用双引号括起来的一串字符,简称为字符串。
如"%d\rT;又如"长x宽二面积\n“°
2.符号常量
第1种是通过使用#define编译预处理命令,第2种是通过使用const
常量定义语句,第3种是通过使用enum枚举类型定义语句。
(1)使用#define预处理定义命令
例如:#definePI3.14159
又如:#defineEND-100表达式END+20的值80o
(2)使用const常量定义语句
例如:constintMM=10;
又如:constdoublePI=3.14159;//r*r*PI的值就是圆的面积。
(3)在枚举类型中定义的每个枚举值都是符号常量
例如:enumplace{beg=-l,cur=O,end=l};
使用符号常量的好处:能够增强程序的可读性、安全性和易修改性。
1.变量的概念
在程序设计中,允许其值被改变的量叫做变量。
2.变量定义语句
<类型标识符〉(变量名〉[二〈初值表达式>],.・.;
半径和面积的英文单词radius和area作为变量名,应该定义为实数变
量。
doubleradius,area;
doubleradius=l,area=0;
若需要在程序中定义一个变量表示年龄,定义另一个变量表示体重,假
定采用的变量标识符分别为age和weight:
shortintage;
floatweight;
下面在看一些变量定义和赋值的例子。
intx=Ly=2;
intz=x+y;
x=5;y=8;
z=z+x+y;
y=x+10;
使用变量和常量的程序举例
带有井字符的预处理编译命令,变量和常量定义语句,函数原型声
明语句,主函数以及其他用户函数的定义。
函数头后面用花括号括起来的为函数定义体,它就是一条复合语句,
或者说是一个程序模块。在函数定义体内,可以定义变量和常量,
必须在所有其他语句的前面。
include〃包含的头文件用来进行输入和输出
#defineM-1
constintN=10;
inta=5;
voidmain(void)〃主函数的头部,无返回类型,无参数
{〃向下是函数体
intx,y;
printf("请输入两个整数
scanf("%d%d”,&x,&y);
if(x>y)a=a*M+y;
elsea=a*N+x;
printf("x=%d/y=%d,a=%d\n"/xJy/a);
)
x=6,y=7,a=56
x=7,y=6,a=l
1.运算符和表达式的概念
运算符就是对数据进行运算的符号。每个运算符都有它专门的符号表
示,有它的含义、运算目数(运算对象个数)、优先级和结合性等特性。
表达式是由操作数和运算符进行有效连接而成的式子。单个操作数
是最简单的表达式。如16、x、f⑸,x+y,x>5,(a>5)&&(b<=10)o
2.运算对象
运算对象:就是利用运算符进行运算的数据。3+5。
运算符:单目运算符、双目运算符和三目运算符3种。-x;x+y。
3.运算符的功能分类
算术运算符:+、-、*、/、%
比较运算符:<、<=、==、>、>=^!=
逻辑运算符:&&、||、!
赋值运算符:=、+=、-=、*二、/=、%=
指针运算符:&、*
成员访问运算符:[]、.、->
其他:()、sizeof、++、--、,
4.运算符的优先级
运算符优先级有高低之分,高的先被计算,低的后被计算。
15个优先级,优先级编号越小表示优先级越高。如*、/为3,+、
■为4。
5.运算符的结合性
运算符的结合性分为从左向右和从右向左两种相反次序。计算8-3+2。
赋值运算符的纭合性是从右向左。a.b、c的值为2、3和4,a=b=co
6.常用运算符使用介绍
・双目算术运算符
+、-、*、/、%(取余),如30/8,30%8z(double)30/8,-30/4,
-30%4,3+4.5*2/10
•赋值运算符
能够把一个值赋给一个变量或通过运算后赋给一个变量。
赋值运算符:一般赋值运算符和复合赋值运算符两类。
一般赋值运算符为等号,复合赋值运算符有许多种,+=、
/=
如a=4;b=5;a+=3相当于a=a+3;a*=b-2相当于a=a*(b-2)
•增1(++)和减1(一)运算符:单目运算符,2级,右左
前增1:++i,先增后求值,若i=5,计算结果和i值均为6e
前减1:-L先减后求值,若i=5,计算结果和i值均为4O
后增1:i++,先求值后增,若i=5,计算结果为5,i值为6。
后减1:i「先求值后减,若i=5,计算结果为5,i值为4。
如x=2;y=3;z=x++*—y;z=++x*y—;
•求类型长度运算符sizeof
如sizeof(int),sizeof(char),sizeof(-30)4,sizeof(2.5),
sizeof(2.5f),sizeof(char*)
・强制类型转换运算符()
(〈类型关键字>)(表达式〉
如(float)3/2=1.5f,(int)34.8=34,(float)(3/2)=1.0f
•增1(++)和减1(--)运算符:单目运算符,2级,右左
前增1:++i,先增后求值,若i=5,计算结果和i值均为6。
前减1:-L先减后求值,若i=5,计算结果和i值均为4。
后增1:i++,先求值后增,若i=5,计算结果为5,i值为6e
后减1:i「先求值后减,若i=5,计算结果为5,i值为4。
・关系(比较)运算符
共6个:>,>=,<,<=,==,!=
如5>4为真,3<二2为假。若x=2fx>0tx<=5,x!=2,x-3>=4e
关系表达式:由关系运算符连接而成的式子。如x+5>=y。
优先级:>、>=、<、<=优先于==、!=。
x=5,x==5oif(x=5)if(x==5)...
关系式的相反式:如x==l,相反式x!=l;x>y,相反式x<二y。
•逻辑运算符
3个与(&&)、或(||)、非⑴。如x&&y>4、a<=,,nspan=H,,>
&&:两个运算对象的值同时为真,其结果为真,否则为假。
||:两个运算对象的值同时为假,其结果为假,否则为真。
!:对其后的运算对象的值取反,真变假,假变真。
运算对象:数值(非。为真).关系式、逻辑表达式
优先级:!高于&&,&&高于
逻辑运算的等价关系:!!a与a.!(a&&b)与!a||!b、!(a||b)
与!a&&!b。
逻辑运算的相反关系:a与!a.(a&&b)与遥||!b、(a||b)
与!a&&!b。
如!(x>3&&xv8)与(x<=3]|x>=8)等价。
如(g==lIIg==2)与(g!=l&&g!=2)相反。
•条件运算符(?:)
〈表达式1〉?〈表达式2>:v表达式3>
如:(x>y)?(z=x):(z=y);z=(x>y?x:y);
•逗号运算符
v表达式1>,v表达式2>,…;
从左到右相继计算每个表达式的值,最后一个表达式的值就是整个
逗号表达式的值。如a++,b++,c-・;若a=2,b=3,c=4,则运算结果为
4。
•圆括号运算符0
括号内运算优先进行,即先算括号内,后算括号外。如x/(y+2)o
圆括号可以嵌套。如(x*(y+5)・3),最内层的括号更优先。
要尽量使用圆括号。如x>=y+z与x>=(y+z)相同。
圆括号其他用途:f(x)、(int)3.5、sizeof(int)o
<=""span=""style-color:rgb(0,0,0);font-family:"MicrosoftYaHei";
font-size:medium;font-style:normal;font-variant-1igatures:normal;
font-variant-caps:normal;letter-spacing:normal;orphans:2;
text-align:start;text-indent:Opx;text-transform:none;white-space:
normal;widows:2;word-spacing:Opx;-webkit-text-stroke-width:Opx;
text-decoration-thickness:initial;text-decoration-style:initial;
text-decoration-color:initial
7.表达式
•分类:数值表达式、关系表达式、逻辑表达式、指针(地址)表达式。
如x*y-l>a!=5>(x==3)11(x>=10)>&x+2
•表达式运算
按照每个运算符的优先级和结合性进行。
函数调用最优先,逻辑非、取负、增1、减1等运算优先于各种算术运算,
算术运算优先于各种关系运算,而关系运算又优先于逻辑与、或的运算,优先
级较低的是直接赋值和各种复合赋值运算,括号内优先于括号外。
4*a+2/x-5//*Z+/-
x>0&&y==10||2*a<=100//>/==,&&/*,<=J|
2-f(8)*4+5//f(8)*•+
•表达式的值
数值(算术)表达式的计算结果将是一个数值。关系表达式和逻辑表达式
的计算结果将是一个逻辑值1或0,为int类型的一个整数;例如5>3运算结果
为整数1。每个地址表达式的计算结果是一个内存地址值,&x是一个取x内存
地址的地址表达式。
•数值表达式值的类型
每个字符就是一个整数,它的值就是该字符的ASCII码,如E+3*4的值就是
98+12=110,值的类型也为int整型。
从类型长度(数据表示范围)由小到大的次序排列为shortint>int>longint>
float>double>longdouble0而当字符或枚举常量参与数值运算时,认为是int
类型的整数。
不同数值类型的操作数进行运算时,运算结果的类型向表示范围较大的那
个操作数的类型看齐。如25*3.0的值75.0,而不是75;25/38,而25/3.0是一
个double型的实数8.333333。
1.函数的概念
能够实现独立功能的一个程序模块,它带有名称和参数,并能够被调用
执行。
可以把求n个整数的平均值编写为一个函数,函数名为average,n个
整数保存在一维数组a中,执行该函数后将返回a中n个整数的平均值。
2.系统函数和用户函数
系统函数有几百个函数之多,涉及到数据输入输出、字符处理、数学计
算、日期和时间、动态存储分配等。用户可以编写出求平均值的函数,
求最大值的函数,按递增次序排列输出一批数据的函数等。
3.常用的系统函数
C语言的所有系统函数,可以通过相关的资料查阅得到。
4.数学函数(math.h)
求整数绝对值abs(x)或实数绝对值fabs(x),abs(-12)、fabs(-3.26)
正弦sin(x)、余弦con(x)、正切tan(x)
平方根sqrt(x)、sqrt(36)=6.0.自然指数exp(x)exe=2.718282
幕、自然对数
pow(x,y)xypow(2/5)=32.0.log(x)Inx
向下取整floor(x)、向上取整ceil(x)
floor(4.6)=4.0,ceil(4.6)=5.0xfloor(-4.6)=-5.0,ceil(-4.6)=-4.0
函数返回值类型:为其余为
abs(x)int,doubleo
使用的系统头文件:math.h#include
5.随机函数(stdlib.h)
rand()返回0-32767之间的一个整数;
srand(s)当自变量s的值不同时,将使系统产生不同的随机数序列。
如rand()%100得到0-99之间一个随机数
a+rand()%(b-a+l)得至I」a〜b之间的一个随机整数
〃共
for(i=l;i<10;i++)printf("%d"rrand()%100);0~9910
个
使用的系统头文件:stdlib.h
6.终止运行函数(stdlib.h)
exit(l)执行时结束程序执行,返回到C++开发界面窗口
7.函数调用或称函数调用表达式
〈函数名〉(〈实参表〉)
正弦sin(x)、余弦con(x)、正切tan(x)
实参表应与函数定义中的参数表中的参数——对应。
例:求指数函数原型doublepow(doublex,doubley);
调用格式:pow(实参1,实参2)
pow(3,2),pow(3*2,3)//9.0,216.0
doublea=37b=4,c;c=pow(a,b)-15;//c的值为66.0
8.将数学算式转换成C语言表达式
a+b
"b:(a+b)/(a-b)
3excos(x+n/3):3*exp(x)*cos(x+3,14159/3)
制2+尸
勿力:sqrt(x*x+y*y)/(2*a*b)
axxl(l-x12)
a*pow(xjl)*(l-pow(xJ2))
|In4(xi3+x-l)
•J2
使用函数的程序举例(点击展开)
#include
#include
#include
intmain(void)
(
intx,y,z;
srand(time(O));
x=rand()%100;
y=rand()%100;
printf("%d+%d="/xzy);
scanf("%d\&z);
if(x+y==z)printf("计算正确!\nn);
elseprintf("计算错误!\n");
)
1.条件处理的概念
哪些学生能够被哪个大学录取,是由填报志愿和高考分数决定的。
在使用scanf()函数调用前,也要使用#吊(:1川0命令包含stdio.ho
在C语言中就是用if条件语句和switch开关语句来实现。
2.条件语句格式
if(〈表达式〉)〈语句1>[else<语句2>]
3.条件语句执行过程
if语句入口
if语句出口
4.格式举例:
(1)if(x!=-l)c++;
(2)if(x%2)sl+=x;elses2+=x;
(3)if(grade>=60&&grade<=100)printf(nPass!\nn);
(4)if(x*x+y*y==z*z){c++;w=x+y+z;}
(5)if(x>=0){y=3*x-l;z=sqrt(x)+2;}else{y=6;z=y*pow(y,4);}
(6)if(x=3)printf("%delseprintf("%d",x*x);
5.if语句的嵌套结构
if(表达式1)语句1
elseif(表达式2)语句2
else语句3
intxzy;
if语句入口
if语句出口
scanf("%d”,&x);〃-336
if(x<0)y=2*x+l;
elseif(x<5)y=x*x-2;
elsey=4*(x+3);
printf("y=%d';y);//y=-5y=7y=36
6.含有if语句的程序分析
程序1:
#include
voidmain()
intxzy;
printf("从键盘输入一个整数:");
scanf("%cr,&x);
if(x<0)y=2*x-l;
elsey=7*x+4;
printf("x=%d/y=%d\n"/x,y);
)
r2x-l(x<0)
尸17x+4(x>0)
输入一个整数5,则输出y的值为39,输入一个整数-5,则输出y的
值为-11。
程序2:
#include<stdio.h&>
voidmain()
inta,b,c,temp;
printf("输入三个整数:");
scanf(n%d%d%d”,&a,&b,&c);
if(a<b){temp="a;"a="b;"b="temp;}
if(a<b){temp="a;na="b;"b="temp;}
if(a<c){temp=na;na="c;"c="temp;}
if(b<c){temp="b;"b="c;"c="temp;}
printf("%d%d%d\n",a/b/c);//a>b>c
)
使用if语句的编程举例
编写一个程序,求出一元二次方程ax2+bx+c=0的实数根。
<strong分析:一元二次方程的实数根为,其中awO,b2-4ac
对n和的情况做特殊处理,当满足
>0oa==0b2-4ac<0azO,
b2-4ac>0要求时,再利用计算公式分别求出xl和x2两个实
根的值。
#include
#include
#include
voidmain()
(
doublea/b/c/d/xlzx2;
printf,输入方程的二次项系数、一次项系数和常数项
scanf(M%Lf%Lf%Lf”,&a,&b,&c);
if(a==O.O){
printf(”此方程不是二次方程!\n)
exit(l);〃中止程序运行
)
d=b*b-4*a*c;
if(d<O.O){
prints此方程没有实数根!\n");
exit(l);〃中止程序运行
)
if(d==O.O)
xl=x2=-b/(2*a);
else{
xl=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
)
printf。此方程的两个根为:%LMH%Lf\n”,xLx2);
)
1.switch语句的概念
一个单位需要同时为不同级别的人增加各自不同的工资。
一个班主任需要根据学生成绩的不同分数段进行不同的成绩评定。
在C语言中需要通过switch语句(开关、分情况)来处理的。
2.switch语句格式
switch(<表达式))(
case<常量<语句1序列》
case<常量2〉:<语句2声歹
.
■.
[default:〈语句n序列>]
)
3.语句执行过程
第1步:计算出语句关键字switch后面圆括号内〈表达式〉的值,用M
表示;
第2步:让M依次同每个case子句标号常量1、常量2、…依次进行
比较,执行对应标号后面的语句序列;在碰不到相等的情况下,若存在
default子句,则就执行此子句冒号后面的语句序列,否则不执行任何
操作。
语句格式举例
举例1:
intc0=0,cl=0,c2=0,n;
scanf("%d"z&n);
switch(n%3){
case0:c0++;break;
case1:cl++;break;
case2:c2++;break;
)
举例2:
switch(ch){〃其值为M
case'a':
case'A':printf("优秀\n");break;
case'b':
caseB:printf("良好\n");break;
case'c':
case'C:printf("一般\n)break;
default:printf('较差\n”);
)
使用switch语句的程序举例
#include
#include
voidmain()
{〃把0〜15之间的一个整数,输出对应的十六进制的数字字符
intx;
printf("输入0-15之间的一个整数:)
scanf("%d”,&x);
if(x<0||x>15){printf。输入数据不正确!\n)exit(l);)
switch(x){
case10:printf("%c",'A');break;
case11:printf("%c“,B);break;
case12:printf("%c'\'C');break;
case13:printf("%c",'D');break;
case14:printf(“%c",'E');break;
case15:printf("%c",F);break;
default:printf('%c"/x+48);break;
printf("\n");
)
使用switch语句编程举例
要求:根据从键盘上输入的两个整数和一个二目算术运算符求出运
算结果。
分析
在程序开始包含stdio.h头文件;
定义两个整数变量为x和y,定义一个字符变量为op;
定义一个整数变量为此计算需要使用语句;
zzz=xopyzswitch
程序中只需一个主函数,完成变量定义,数据输入,计算和输出。
#include
#include
voidmain(){
intx,y,z;charop;
printf("输入两个整数和一个运算符:1*);
scanf("%d%d%c”,&x,&y,&op);
if((op==7'||op=='%')&&y==0){printf("除数为O)exit(l);}
switch(op){
case'+z=x+y;break;
casez=x-y;break;
casez=x*y;break;
casez=x/y;break;
casez=x%y;break;
default:{printf("运算符错!\rT);exit(l);}
)
printf("%d%c%d=%d\n"/x/op/y/z);
程序运行结果:
输入两个整数和一个运算符:508/
50/8=6
1.循环的概念
如财务人员需要给每个人计算工资,一个班级需要计算学生一次考试的
总成绩和平均成绩。在C语言程序设计中有for语句、while语句、do
循环语句。
2.for循环语句的格式:
for(〈表达式;(表达式2〉;〈表达式3〉)〈语句>
3.for循环语句的执行过程:
(1)计算循环头部中的表达式1的值;
(2)计算循环头部中的表达式2的值,假定其值为M,若缺省其值为
1;
(3)若M为逻辑真(非0)则执行一遍循环体,否则结束for语句;
(4)计算表达式3的值,紧接着自动转向第2步继续执行循环循环。
4.for语句格式举例
(1)for(i=0;i<5;i++)printf("%d
//O14916
(2)for(j=l,p=l;j<=M;j++,p*=j);
//p=(M+l)!
(3)for(k=lzs=0;;)[s+=k*(k+l);k+=2;if(k>5)break;}
//k=7zs=2+12+30=44
5.for语句嵌套
在一个for循环语句的循环体内,还可以包含有for循环语句。
(1)for(i=l;i<4;i++)
for(j=l;j<=5;j++)s+=l;
2)for(i=l;i<4;i++)
for(j=l;j<=i;j++)p+=i*j;
//p=25次数l+2+3=6
(3)for(i=l;i<=5;i++){
scanf(”%d”,&x);
for(j=2;j<=3;j++)if(x%j==O)break;
if(j>3)C++;
)
//38131525C=2
使用for循环的程序举例
程序1:
#include
#include
voidmain()
(
intn,x,mxx,min;
printf("输入待处理数据的个数(n>0):");
scanf("%d"z&n);
for(;n<=0;){print"重输(n>0):");scanf(M%d;&n);}
printf("需要从键盘上输入%d个待处理的数据!\n”,n);〃输入提示
scanf("%cT,&x);
max=min=x;
for(;-n;){
scanf("%dn,&x);
if(x>max)max=x;
if(x<min)min=nx;
)
printf("max:%drmin:%d\n”,max,min);
)
输入待处理数据的个数(n>0):6
需要从键盘上输入6个待处理的数据:
486230245536
max:62zmin:24
程序2:
#include
voidmainQ
intazb;
for(a=0,b=l;b<20;a=a+b,b=a+b)
printf("%d%d”,a,b);〃011235813
printf("%d%d\n"/a/b);//2134
)
利用for循环编程举例
举例1:编一程序计算出1+22+42+62++502的值。
分析:设循环变量为i,它的初值、终值和步长应分别为2、50和2,
设用于累加的变量为s,它的初值应为和式中的第一项1。在循环体中
每次把i的平方值累加到s上。
#include
voidmainQ
intizs=l;
for(i=2;i<=50;i+=2)s+=i*i;
M
printf("s=%d\n/s);
)
运行结果:s=22101
举例2:由勾股定理可知,在一个直角三角形中,两条直角边a和b与
斜边c的关系为a2+b2=c2,编一程序求出每条直角边均不大于30的
所有整数组解。如(3,4,5)、(5,12,13)就是该题的2组解。
分析:根据题意,需要使用三重循环来解决,设外循环变量用a表示,
初值、终值和步长取L30和1。内循环变量用b表示,初值、终值和
步长取a+1,30和1。会出现象(3,4,5)和(4,3,5)这样的重复组。最内层
循环的变量用c表示,它表示直角三角形的斜边,c>b同时c
le
#include
constintN=30;
voidmain()
inta,bzc;
for(a=l;a<=N;a++)
for(b=a
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 权益受让合同(标准版)
- 安全用电培训总结课件
- 活动安全教育培训计划课件
- 安全用电培训学习心得
- 安全用电培训大纲课件
- 2025年紫外光固化油墨项目申请报告
- 2025年聚合物多元醇(POP)项目提案报告
- 2025年长春市市直事业单位公开招聘高层次人才(5号)模拟试卷及答案详解(名校卷)
- 法治与安全培训教案课件
- 2025年康复医疗服务体系改革与康复医疗产业链协同运营模式研究报告
- 《电流表及正确使用》课件
- (北师大版)2024-2025学年九年级数学上学期期中测试卷
- 工程施工项目个人合伙协议书
- HGT 4686-2014 液氨泄漏的处理处置方法
- 《答谢中书书》教学设计
- (正式版)HGT 22820-2024 化工安全仪表系统工程设计规范
- 愚公移山说课稿讲解课件
- 《城市的起源与发展》课件
- 4.CSR社会责任法律法规合规性评价表
- 小学生解决万以内退位减法错误类型及影响研究
- GB/T 14294-2008组合式空调机组
评论
0/150
提交评论