版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、C语言字符集自然语言:字符、单词、语句、段落、文章、文档C语言:字符、单词、语句、函数模块、程序文件、完整程序1.大、小写英文字母(52个)A-Z,a-z。如A和a不同,Abc和abc不同。2.十进制数字符号(10个)0-9。3.标点符号,;’":<空格>{}
等。半角西文。4.单字符运算符号()[]+-*/%.>=<!~&^|?。半角西文。5.特殊用途的符井字号(#)、反斜线(\)、下划线(_);含128个字符的单字节的ASCII编码表;含65536个字符的双字节的Unicode编码表;一对双引号括起来的为字符串,其中可以使用任何字符。如"abc=5"、"姓名:王明"为合法字符串。由C语言中规定的字符可以组成每个单词,有些为单个字符本身,有些为连续若干个字符组合。1.保留字又称为关键字。如int,char,if,for等。2.标识符由英文字母或下划线开头的字母数字串所组成。如x2,Time,a,maxMage等。标识符length表示长度,标识符age表示年龄。3.常量在运算过程中不能被改变值的量。常数
如5、23、-256、2.307等都是常数。字符
就是单个西文字符或者各种符号,即ASCII码字符。如'a'、'D'、'5'、'+'、'%'等。字符串
用双引号括起来的一串字符。如"5"、"apple"、"姓名"、"A+B="等。又如"张华"、"食品安全鉴定会"。4.运算符就是能够进行运算的符号。算术运算符、关系(比较)运算符、字符串运算符、逻辑运算符等。单目、双目、三目。单字符运算符
如+、-、*、/、>、<、=等。双字符运算符
如>=、<=、==、++、--、&&等。三字符运算符
如>>=、<<=等。5.标点符号每个标点符号都可以单独作为单词使用。1.用户类型定义语句把一个标识符定义为一种数据类型。如typedefintinData;2.变量定义语句把标识符定义为一个变量,如intx;3.函数原型语句函数声明语句或函数说明语句。函数定义、函数声明和函数调用。一个函数的声明或定义必须在前,而对它的函数调用在后。4.表达式语句表达式就是进行运算的式子。表达式后加分号构成表达式语句。
如y=3*x+5是赋值表达式,而y=3*x+5;是赋值表达式语句。5.复合语句由一对花括号括起来的一条或若干条语句。如{intx;x=10;}6.选择类语句根据已知条件从多个分支语句块中选择一个满足条件的语句块执行。if语句和switch语句。如if(x>=60)cn=1;elsecn=0;。7.循环类语句根据所设定的循环条件控制一个程序段反复执行。for循环语句、while循环语句和do循环语句。如for(i=1;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()。
用户函数由用户根据需要自己编写函数定义的函数。3.C语言中的头文件系统头文件和用户头文件。
系统头文件是在C语言系统内已经定义的头文件。
用户头文件由用户在程序中根据需要而定义的头文件。
头文件的使用:通过在程序文件开始使用#include命令。
头文件的扩展名为h。如stdio.h是系统头文件。
C头文件的内容:数据类型定义、常量定义、函数原型语句等。4.#include包含命令格式命令格式:#include<头文件名>
#include"头文件名"
尖括号表示引入的是系统头文件;双引号表示引入的是用户头文件。
如#include"abc.h"
#include"d:\\c语言\\abc.h"
包含命令可以包含头文件,也可以包含一般的程序文件。
在编译一个程序的过程中,用包含命令中的文件内容取代该命令。
带井字符开头#include或其他命令都称为编译预处理命令。这些命令不能以分号结束,以示同语句的区别,无论是否被编译,将始终保持在源文件中。
一个#include命令只能包含一个文件。5.C语言中函数的定义格式<函数类型><函数标识符>(<参数表>)<函数体>
函数头:<函数类型><函数标识符>(<参数表>),是函数说明部分。
函数体:是一条复合语句,是函数的执行部分。
intf1(intn){intp;p=n*n+1;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;
//变量定义语句
a=Add(3,4);
//调用并赋值语句
printf("a=%d\n",a);//屏幕输出函数调用
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
Pressanykeytocontinue1.printf()函数的来历和作用printf()函数是系统函数,标准输出函数,向显示器屏幕窗口输出数据。需要在程序文件的开始使用#include包含命令,包含stdio.h。2.printf()函数格式函数原型声明语句格式(包含在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、%。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.5600007.数据项的输出宽度控制每个格式字符与它前面的百分号%之间,可以使用一个正整数,用来规定对应值的输出宽度。printf("%5d\n",36);数据值按右对齐方式输出,用负整数按左对齐方式输出。printf("%-5d\n",36);8.输出单精度数和双精度数格式字符f将对应输出一个单精度数,对于"%m.nf",m表示总宽度,n表示纯小数部分所占用的宽度。printf("%6.2f\n",35.8);得到的输出结果为“35.80”。格式字符lf或Lf表示双精度类型。例如:printf("%lf",x)或printf("%Lf",x);将输出一个双精度变量x的值。9.输出各种整数类型的数据短整数类型shortint、标准整数类型int、长整数类型longint。格式字符d表示标准整数类型int格式字符hd表示短整型类型shortint格式字符ld或Ld表示长整型类型longint假定标识符a、b和c分别是短整型、标准整型和长整型的变量printf("%hd%d%ld\n",a,b,c);1.scanf()函数的来历和作用标准输入函数scanf()也是系统函数,从标准输入设备键盘输入各种类型的数据,给程序中的变量赋值。在使用scanf()函数调用前,也要使用#include命令包含stdio.h。2.scanf()函数格式函数原型声明语句格式:intscanf(<字符指针参数>,<形式参数表>);函数调用格式:scanf(<格式字符串>,<实际参数表>);函数功能:执行此函数调用时,等待用户从键盘上为实际参数表中的每个变量依次输入数据。接着从键盘缓冲区中读取数据,并依次赋值给实际参数表中的每个参数变量。实际参数表:是一个含有一个或多个实际参数的列表,每两个参数之间必须用逗号分开,每个参数只能是指针类型的变量。若利用scanf()函数调用从键盘缓冲区为x输入一个整数,则应书写为scanf("%d",&x)。格式字符串:在格式字符串中,可以包含各种格式字符选项,也可以包含通常作为输出或输入数据值之间提示符的一般普通字符。对于printf()函数,提示符是原原本本地显示到屏幕,对于scanf()函数,提示符是需要用户从键盘上输入的。在scanf()函数调用的格式字符串中,各格式字符之间通常使用空格字符。从键盘上输入的数据之间也要求输入一个空格,最后按下回车键结束。3.scanf()函数调用举例(1)scanf("%d%d",&x,&y);(2)scanf("%d%lf",&n1,&x1);(3)scanf(“%d%c%d",&a,&p,&b);scanf()和printf()函数调用举例/*这个程序用c1_4.c作为文件名保存,只有主程序文件。*/
#include
voidmain()
{intx,y;
y=0;
while(1)
{
scanf("%d",&x);
//输入一个整数到x
if(x<=0)break;
//若x小于或等于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章第1.8节,介绍了输入、编辑、编译、连接和运行一个C语言程序的全部操作过程,同学们应当认真阅读和实践。利用VC++6.0集成开发环境开发C语言程序大致经过以下几步。第1步:针对问题建立程序的层次结构根据要解决的具体编程问题,分析整个程序应该由哪几个程序文件和头文件所组成,每个程序文件又包含有哪几个函数定义,函数之间应用如何调用等。第2步:编写出C语言程序中的每个程序文件和一些头文件最简单的情况是:只需要编写出一个程序文件,它就是包含主函数定义的主程序文件。第3步:上机输入和编辑每个程序文件和头文件
上机输入、编辑和保存每个程序文件,同时输入、编辑和保存每个用户头文件。通常先进行主程序文件的操作,再进行其他一般程序文件和头文件的操作。第4步:编译每个程序文件生成相应的目标代码文件通过选择“编译”菜单项下的“编译”子菜单项,能够实现对程序编辑区域中的当前程序文件进行编译。通常是首先编译主程序文件,然后再编译其他每个程序文件,目标代码文件的扩展名为obj,目标文件的文件名与源程序文件的文件名相同。当编译一个程序文件出现错误时,对程序文件或涉及到的头文件需要进行修改。然后再重新进行编译。注意:每个用户头文件不能被单独编译,只能被使用在#include命令中,同所在的程序文件一起被编译。第5步:把所有目标代码文件连接起来生成可执行文件选择“编译”菜单项下的“连接”(构件)子菜单项,将自动把当前程序中的所有目标代码文件连接起来,自动生成一个可执行的文件,该文件的扩展名为exe,其文件名同样与源程序文件名相同。第6步:运行程序通过选择“编译”菜单项下的“执行”子菜单项,将自动执行当前C语言源程序所对应的可执行程序文件,调用执行主程序文件中的主函数,依次执行主函数体中的每条语句。Pressanykeytocontinue//提示信息1.数据类型的概念整数类型的数据:人的年龄和工龄、物品的个数、时间上的天数实数类型的数据:商品单价和重量、天气的温度和湿度、车辆行驶距离和速度。组合类型的复杂数据:日期、居民身份证、商品、单位2.C语言中的数据分类3.数据类型的表示例如用标识符int表示标准整数类型,用标识符char表示字符类型,用标识符float表示单精度实数类型。字符类型char:类型长度为1,值域范围是-128到+127之间的整数。常用的ASCII代码表中包含有128个字符,对应的字符编码为0至127。每个ASCII码字符都属于C语言中字符类型char中的一个字符。短整数类型shortint:类型长度为2,能够表示-32768到+32767。4.系统定义的数据类型(1)标准整数类型:又分为有符号和无符号两种。有符号标准整数类型:int或signedint长度4-231~+231-1无符号标准整数类型: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开始,后跟用户定义的标识符,作为枚举类型的名称,再后面是用一对花括号括起来的部分,作为该枚举类型的定义体,最后用分号结束定义。定义体中包含用逗号分开的枚举常量标识符,每个枚举常量的值为它的位置序号。enumcolor{red,yellow,blue};其中color为该枚举类型的标识符,red、yellow和blue为枚举常量,位置序号依次为0、1和2。enumcolorx=blue;enumday{Sun=7,Mon=1,Tues,Wed,Thur,Fri,Sat};常量:字面常量和符号常量。字面常量的值就是字面本身。如整数25。符号(标识符)常量:定义时为它赋值,以后不允许被改变。在定义枚举类型时,定义体中的标识符都是符号常量,在C语言系统内部定义有符号常量NULL,它的值为整数值0。1.字面常量字面常量又分为整数常量、实数常量、字符常量、字符串常量等四种。(1)整数常量:十进制、八进制和十六进制三种。十进制:第一个数字非0的正整数或负整数,如1、25、-100、3270等。八进制:第一个字符为0、第二个及以后为八进制数字0-7的正整数。如023、074等。八进制采用逢8进1,每一位的权值为8的若干次方。如八进制数023对应的十进制整数为19,又如0345对应的十进制整数为229。十六进制:前两个字符为0x或0X,后面为十六进制数字的正整数。十六进制采用逢16进1,并且具有16个数字符号,前10个数字符号借用十进制的0-9,后6个数字符号借用英文字母a-f(A-F)。如十六进制数0x23的十进制值为35;0Xa5c的十进制值为为12+80+2560=2652。字面整数常量的数据类型:当一个整数常量属于int类型的表示范围时,则是一个int类型的整数,若超出int类型的表示范围,则是一个double类型的双精度数。小写或大写字母u,则为unsignedint的整数小写或大写字母l,则为longint类型的长整数。如2525u25L。(2)实数常量:只有十进制表示,又分为定点和浮点两种表示方法。定点表示方法:带小数点不带指数的表示方法。如12.0、-3.56、0.06等。浮点表示方法:在定点表示的基础上,再添加有指数部分的表示方法。指数部分用小写或大写字母e表示幂的底数10,幂的指数紧跟在字母e之后。如2.45e3,其表示值是2.45*103;-30E-4,表示值是30.0*10-4。规范化的浮点表示方法:若在浮点数的定点部分(尾数部分),其小数点前只有一位不为0的数字。如3.05E-8对应的数值为3.05*10-8。如32.5e6改写为3.25e7就为规范了,-0.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\n";又如"长×宽=面积\n"。2.符号常量第1种是通过使用#define编译预处理命令,第2种是通过使用const常量定义语句,第3种是通过使用enum枚举类型定义语句。(1)使用#define预处理定义命令例如:#definePI3.14159又如:#defineEND-100表达式END+20的值80。(2)使用const常量定义语句例如:constintMM=10;又如:constdoublePI=3.14159;//r*r*PI的值就是圆的面积。(3)在枚举类型中定义的每个枚举值都是符号常量例如:enumplace{beg=-1,cur=0,end=1};使用符号常量的好处:能够增强程序的可读性、安全性和易修改性。1.变量的概念在程序设计中,允许其值被改变的量叫做变量。2.变量定义语句<类型标识符><变量名>[=<初值表达式>],…;半径和面积的英文单词radius和area作为变量名,应该定义为实数变量。doubleradius,area;doubleradius=1,area=0;若需要在程序中定义一个变量表示年龄,定义另一个变量表示体重,假定采用的变量标识符分别为age和weight:shortintage;floatweight;下面在看一些变量定义和赋值的例子。intx=1,y=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",x,y,a);
}
x=6,y=7,a=56
x=7,y=6,a=11.运算符和表达式的概念运算符就是对数据进行运算的符号。每个运算符都有它专门的符号表示,有它的含义、运算目数(运算对象个数)、优先级和结合性等特性。
表达式是由操作数和运算符进行有效连接而成的式子。单个操作数是最简单的表达式。如16、x、f(5),x+y,x>5,(a>5)&&(b<=10)。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=c。6.常用运算符使用介绍●双目算术运算符
+、-、*、/、%(取余),如30/8,30%8,(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值均为6。
前减1:--i,先减后求值,若i=5,计算结果和i值均为4。
后增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:--i,先减后求值,若i=5,计算结果和i值均为4。
后增1:i++,先求值后增,若i=5,计算结果为5,i值为6。
后减1:i--,先求值后减,若i=5,计算结果为5,i值为4。
●关系(比较)运算符
共6个:>,>=,<,<=,==,!=
如5>4为真,3<=2为假。若x=2,x>0,x<=5,x!=2,x-3>=4。
关系表达式:由关系运算符连接而成的式子。如x+5>=y。
优先级:>、>=、<、<=优先于==、!=。
x=5,x==5。if(x=5)…;if(x==5)…
关系式的相反式:如x==1,相反式x!=1;x>y,相反式x<=y。
●逻辑运算符
3个与(&&)、或(||)、非(!)。如x&&y>4、a<=""span="">
&&:两个运算对象的值同时为真,其结果为真,否则为假。
||:两个运算对象的值同时为假,其结果为假,否则为真。
!:对其后的运算对象的值取反,真变假,假变真。
运算对象:数值(非0为真)、关系式、逻辑表达式
优先级:!高于&&,&&高于||。
逻辑运算的等价关系:!!a与a、!(a&&b)与!a||!b、!(a||b)与!a&&!b。
逻辑运算的相反关系:a与!a、(a&&b)与!a||!b、(a||b)与!a&&!b。
如!(x>3&&x<8)与(x<=3||x>=8)等价。
如(g==1||g==2)与(g!=1&&g!=2)相反。
●条件运算符(?:)
<表达式1>?<表达式2>:<表达式3>
如:(x>y)?(z=x):(z=y);z=(x>y?x:y);
●逗号运算符
<表达式1>,<表达式2>,…;
从左到右相继计算每个表达式的值,最后一个表达式的值就是整个逗号表达式的值。如a++,b++,c--;若a=2,b=3,c=4,则运算结果为4。
●圆括号运算符()
括号内运算优先进行,即先算括号内,后算括号外。如x/(y+2)。
圆括号可以嵌套。如(x*(y+5)-3),最内层的括号更优先。
要尽量使用圆括号。如x>=y+z与x>=(y+z)相同。
圆括号其他用途:f(x)、(int)3.5、sizeof(int)。<=""span=""style="color:rgb(0,0,0);font-family:"MicrosoftYaHei";font-size:medium;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;">7.表达式●分类:数值表达式、关系表达式、逻辑表达式、指针(地址)表达式。
如x*y-1、a!=5、(x==3)||(x>=10)、&x+2
●表达式运算
按照每个运算符的优先级和结合性进行。
函数调用最优先,逻辑非、取负、增1、减1等运算优先于各种算术运算,算术运算优先于各种关系运算,而关系运算又优先于逻辑与、或的运算,优先级较低的是直接赋值和各种复合赋值运算,括号内优先于括号外。
4*a+2/x-5//*,/,+,-
x>0&&y==10||2*a<=100//>,==,&&,*,<=,||
2-f(8)*4+5//f(8)*-+
●表达式的值
数值(算术)表达式的计算结果将是一个数值。关系表达式和逻辑表达式的计算结果将是一个逻辑值1或0,为int类型的一个整数;例如5>3运算结果为整数1。每个地址表达式的计算结果是一个内存地址值,&x是一个取x内存地址的地址表达式。
●数值表达式值的类型
每个字符就是一个整数,它的值就是该字符的ASCII码,如'b'+3*4的值就是98+12=110,值的类型也为int整型。
从类型长度(数据表示范围)由小到大的次序排列为shortint、int、longint、float、double、longdouble。而当字符或枚举常量参与数值运算时,认为是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)xy、pow(2,5)=32.0、自然对数log(x)lnx向下取整floor(x)、向上取整ceil(x)floor(4.6)=4.0、ceil(4.6)=5.0、floor(-4.6)=-5.0、ceil(-4.6)=-4.0函数返回值类型:abs(x)为int,其余为double。使用的系统头文件:math.h#include5.随机函数(stdlib.h)rand()返回0-32767之间的一个整数;srand(s)当自变量s的值不同时,将使系统产生不同的随机数序列。如rand()%100得到0-99之间一个随机数a+rand()%(b-a+1)得到a~b之间的一个随机整数for(i=1;i<10;i++)printf("%d",rand()%100);//0~99共10个使用的系统头文件:stdlib.h6.终止运行函数(stdlib.h)exit(1)执行时结束程序执行,返回到C++开发界面窗口7.函数调用或称函数调用表达式<函数名>(<实参表>)正弦sin(x)、余弦con(x)、正切tan(x)实参表应与函数定义中的参数表中的参数一一对应。例:求指数函数原型doublepow(doublex,doubley);调用格式:pow(实参1,实参2)pow(3,2),pow(3*2,3)//9.0,216.0doublea=3,b=4,c;c=pow(a,b)-15;//c的值为66.08.将数学算式转换成C语言表达式:(a+b)/(a-b):3*exp(x)*cos(x+3.14159/3):sqrt(x*x+y*y)/(2*a*b):a*pow(x,i1)*(1-pow(x,i2))使用函数的程序举例(点击展开)#include
#include
#include
intmain(void)
{
intx,y,z;
srand(time(0));
x=rand()%100;
y=rand()%100;
printf("%d+%d=",x,y);
scanf("%d",&z);
if(x+y==z)printf("计算正确!\n");
elseprintf("计算错误!\n");
}1.条件处理的概念哪些学生能够被哪个大学录取,是由填报志愿和高考分数决定的。在使用scanf()函数调用前,也要使用#include命令包含stdio.h。在C语言中就是用if条件语句和switch开关语句来实现。2.条件语句格式if(<表达式>)<语句1>[else<语句2>]3.条件语句执行过程4.格式举例:(1)if(x!=-1)c++;(2)if(x%2)s1+=x;elses2+=x;(3)if(grade>=60&&grade<=100)printf("Pass!\n");(4)if(x*x+y*y==z*z){c++;w=x+y+z;}(5)if(x>=0){y=3*x-1;z=sqrt(x)+2;}else{y=6;z=y*pow(y,4);}(6)if(x=3)printf("%d",x);elseprintf("%d",x*x);5.if语句的嵌套结构if(表达式1)语句1elseif(表达式2)语句2else语句3intx,y;scanf("%d",&x);//-336if(x<0)y=2*x+1;elseif(x<5)y=x*x-2;elsey=4*(x+3);printf("y=%d",y);//y=-5y=7y=366.含有if语句的程序分析程序1:#includevoidmain(){intx,y;printf("从键盘输入一个整数:");scanf("%d",&x);if(x<0)y=2*x-1;elsey=7*x+4;printf("x=%d,y=%d\n",x,y);}输入一个整数5,则输出y的值为39,输入一个整数-5,则输出y的值为-11。程序2:#include<stdio.h&>voidmain(){inta,b,c,temp;printf("输入三个整数:");scanf("%d%d%d",&a,&b,&c);if(a<b){temp="a;"a="b;"b="temp;}if(a<b){temp="a;"a="b;"b="temp;}if(a<c){temp="a;"a="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分析:一元二次方程的实数根为,其中a≠0,b2-4ac≥0。对a="=0和b2-4ac<0的情况做特殊处理,当满足a≠0,b2-4ac≥0要求时,再利用计算公式分别求出x1和x2两个实根的值。#include#include#includevoidmain(){doublea,b,c,d,x1,x2;printf("输入方程的二次项系数、一次项系数和常数项:");scanf("%Lf%Lf%Lf",&a,&b,&c);if(a==0.0){printf("此方程不是二次方程!\n");exit(1);//中止程序运行}d=b*b-4*a*c;if(d<0.0){printf("此方程没有实数根!\n");exit(1);//中止程序运行}if(d==0.0)x1=x2=-b/(2*a);else{x1=(-b+sqrt(d))/(2*a);x2=(-b-sqrt(d))/(2*a);}printf("此方程的两个根为:%Lf和%Lf\n",x1,x2);}1.switch语句的概念一个单位需要同时为不同级别的人增加各自不同的工资。一个班主任需要根据学生成绩的不同分数段进行不同的成绩评定。在C语言中需要通过switch语句(开关、分情况)来处理的。2.switch语句格式3.语句执行过程第1步:计算出语句关键字switch后面圆括号内<表达式>的值,用M表示;第2步:让M依次同每个case子句标号常量1、常量2、...依次进行比较,执行对应标号后面的语句序列;在碰不到相等的情况下,若存在default子句,则就执行此子句冒号后面的语句序列,否则不执行任何操作。语句格式举例举例1:intc0=0,c1=0,c2=0,n;scanf("%d",&n);switch(n%3){case0:c0++;break;case1:c1++;break;case2:c2++;break;}举例2:switch(ch){//其值为Mcase'a':case'A':printf("优秀\n");break;case'b':case'B':printf("良好\n");break;case'c':case'C':printf("一般\n");break;default:printf("较差\n");}使用switch语句的程序举例#include#includevoidmain(){//把0~15之间的一个整数,输出对应的十六进制的数字字符intx;printf("输入0~15之间的一个整数:");scanf("%d",&x);if(x<0||x>15){printf("输入数据不正确!\n");exit(1);}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;定义一个整数变量为z,z=xopy,此计算需要使用switch语句;程序中只需一个主函数,完成变量定义,数据输入,计算和输出。#include#includevoidmain(){intx,y,z;charop;printf("输入两个整数和一个运算符:");scanf("%d%d%c",&x,&y,&op);if((op=='/'||op=='%')&&y==0){printf("除数为0");exit(1);}switch(op){case'+':z=x+y;break;case'-':z=x-y;break;case'*':z=x*y;break;case'/':z=x/y;break;case'%':z=x%y;break;default:{printf("运算符错!\n");exit(1);}}printf("%d%c%d=%d\n",x,op,y,z);}程序运行结果:输入两个整数和一个运算符:508/50/8=61.循环的概念如财务人员需要给每个人计算工资,一个班级需要计算学生一次考试的总成绩和平均成绩。在C语言程序设计中有for语句、while语句、do循环语句。2.for循环语句的格式:for(<表达式1>;<表达式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",i*i);//014916(2)for(j=1,p=1;j<=M;j++,p*=j);//p=(M+1)!(3)for(k=1,s=0;;){s+=k*(k+1);k+=2;if(k>5)break;}//k=7,s=2+12+30=445.for语句嵌套在一个for循环语句的循环体内,还可以包含有for循环语句。(1)for(i=1;i<4;i++)for(j=1;j<=5;j++)s+=1;2)for(i=1;i<4;i++)for(j=1;j<=i;j++)p+=i*j;//p=25次数1+2+3=6(3)for(i=1;i<=5;i++){scanf("%d",&x);for(j=2;j<=3;j++)if(x%j==0)break;if(j>3)c++;}//38131525C=2使用for循环的程序举例程序1:#include#includevoidmain(){intn,x,max,min;printf("输入待处理数据的个数(n>0):");scanf("%d",&n);for(;n<=0;){printf("重输(n>0):");scanf("%d",&n);}printf("需要从键盘上输入%d个待处理的数据!\n",n);//输入提示scanf("%d",&x);max=min=x;for(;--n;){scanf("%d",&x);if(x>max)max=x;if(x<min)min="x;}printf("max:%d,min:%d\n",max,min);}输入待处理数据的个数(n>0):6需要从键盘上输入6个待处理的数据:486230245536max:62,min:24程序2:#includevoidmain(){inta,b;for(a=0,b=1;b<20;a=a+b,b=a+b)printf("%d%d",a,b);//011235813printf("%d%d\n",a,b);//2134}利用for循环编程举例举例1:编一程序计算出1+22+42+62++502的值。分析:设循环变量为i,它的初值、终值和步长应分别为2、50和2,设用于累加的变量为s,它的初值应为和式中的第一项1。在循环体中每次把i的平方值累加到s上。#includevoidmain(){inti,s=1;for(i=2;i<=50;i+=2)s+=i*i;printf("s=%d\n",s);}运行结果:s=22101举例2:由勾股定理可知,在一个直角三角形中,两条直角边a和b与斜边c的关系为a2+b2=c2,编一程序求出每条直角边均不大于30的所有整数组解。如(3,4,5)、(5,12,13)就是该题的2组解。分析:根据题意,需要使用三重循环来解决,设外循环变量用a表示,初值、终值和步长取1、30和1。内循环变量用b表示,初值、终值和步长取a+1,30和1。会出现象(3,4,5)和(4,3,5)这样的重复组。最内层循环的变量用c表示,它表示直角三角形的斜边,c>b同时c1。#includeconstintN=30;voidmain(){inta,b,c;for(a=1;a<=N;a++)for(b=a+1;b<=N;b++){for(c=b+1;c<=b+a-1;c++){if(c*c==a*a+b*b)&nprintf("(%d,%d,%d)\n",a,b,c);p;}}}运行结果://共13组,前5组(3,4,5)(5,12,13)(6,8,10)(7,24,25)(8,15,17)
1.while语句格式和功能while(<表达式>)<语句>2.while循环语句的执行过程(1)计算循环头部中圆括号内表达式的值,假定其值为M;(2)若M的值为非0,则执行循环体,否则结束整个循环的执行;(3)循环体执行结束后转向第1步,继续执行下一次循环。while循环语句的格式举例(1)while(x<=0)scanf("%d",&x);(2)while(1){s+=i*i;i++;if(s>50)break;}//s=1,5,14,30,55(3)while(i++<n){<=""span="">x=rand()%99+1;if(x%2==0)c2++;if(x%3==0)c3++;if(x%5==0)c5++;}//对随机产生的N个正整数,统计被2、3、5整除的个数带有while循环的程序举例#include#includevoidmain(){inti=10;while(i>0){inta,k;a=rand()%189+11;for(k=2;k*k<=a;k++)if(a%k==0)break;if(k*k>a){printf("%d",a);i--;}}printf("\n");}程序功能:随机产生出10个11~199之间的素数并显示出来。14917113837361191179163197使用while循环编程举例编程举例1:编一程序求出满足不等式的最小n值。分析:对于和式中的每个数据项,对应的通式为1/i,i=1、2、...、n。设循环变量为i,它应从1开始取值,每次增加1,直到和式的值不小于5为止,此时的i值就是所求的n值;设累加变量为s,初值为0,在循环体内应把1/i的值累加到s上。#includestdio.hvoidmain(){inti=1;doubles=0;while(s<5)s+=1.0/i++;printf("n=%ds=%Lf\n",i-1,s);}//n=83s=5.002068编程举例2:编写一个程序,采用辗转相除法求出两个正整数的最大公约数。分析:设两个正整数分别为a和b,a除以b的整余数用r表示,若r==0,则表明b能被a整除,则b就是a和b的最大公约数,否则,令b赋给a,r赋给b,再接着上述过程,直到整余数r为0时止,此时的b的值就是原有两个正整数a和b的最大公约数。#includestdio.hvoidmain(){inta,b,r;printf("请输入两个正整数:");scanf("%d%d",&a,&b);while(a<=0||b<=0){printf("重输:");scanf("%d%d",&a,&b);}printf("正整数%d和%d的最大公约数:",a,b);r=a%b;while(r){a=b;b=r;r=a%b;}printf("%d\n",b);}//请输入两个正整数:4024//正整数40和24的最大公约数:81.do循环语句格式do<语句>while(表达式);2.do循环语句的执行过程(1)执行一次循环体语句;(2)计算表达式的值,若为非0再继续执行循环体,否则结束循环。特点:是先执行循环体后进行循环条件的判断。与for和while循环相反。3.三种循环语句的比较for和while语句是先判断循环条件再执行循环体,而do循环是先执行循环体而后判断。当循环次数固定时,通常采用for循环较方便。当需要先执行后判断时选择do循环,否则选择for或while循环。在任一种循环的循环体内都可以使用break语句,break语句也能够中止switch语句的执行过程。do循环语句格式举例(1)dos+=i++;while(s<10);(2)do{scanf("%d",&x);s*=x;}while(--n);程序举例程序1:#include#defineNM10voidmain(){intx,n=1,c=0;do{scanf("%d",&x);if(x>=30&&x<=60)c++;}while(n++<nm);<span="">printf("c=%d\n",c);}根据从键盘上输入的NM个整数,统计出30至60内的整数个数并输出。程序2:#includevoidmain(){inti,x;printf("请输入一个整数,若小于3则重输:");doscanf("%d",&x);while(x<=2);i=2;do{while(x%i==0){printf("%d",i);x/=i;}i++;}while(i<=x);printf("\n");}//x=24,2223;50,255;37,37程序功能:把一个大于等于3的整数分解为质因数的乘积。跳转类语句共有四条这种语句,goto、continue、break和return。1.goto语句goto<语句标号>如:gotofinish;当执行到goto语句时,就转移到语句标号所标识的位置执行。goto语句中的<语句标号>所标识的位置必须与goto语句在同一函数体内。voidfunc(doublex){doubley;if(x<0){y=3*x*x-1;gotofinish;}if(x>=0&&x<=10){y=exp(x)/3+2;gotofinish;}y=5*sqrt(x)-2*x+1;finish:printf("x=%Lf\n",x);printf("y=%Lf\n",y);}2.continue语句只能使用在任一种循环语句内,执行时将结束循环体的一次执行。while(1){scanf("%d",&x);if(x<=0)break;if(x<60)continue;c++;//2562783086-5c的值为3}3.break语句应用范围:使用在各种循环语句的循环体中和switch语句的语句体中。功能:结束整个循环语句或开关语句的执行过程。例如:#includevoidmain(){inti,s=0;for(i=1;i<=10;i++){s+=i;//s=1,3,6,10,15,21if(s>15)break;}printf("%d%d\n",i,s);//621}又如:#includevoidmain(){inti=3,s=0;switch(i){case2:s+=i;case3:s+=i*i;case4:s+=i+5;break;default:s+=6;}printf("s=%d\n",s);//s=17若取消break则s=23}4.return语句语句格式:return[表达式];功能:结束整个函数的执行过程,并计算出表达式的值,把这个值返回到调用该函数的位置。对于void函数,使用return语句时,将省略其后的表达式,并且函数定义中可以不使用return语句,当执行到右花括号,将结束函数执行。但对于不是void类型的函数定义,必须在函数体中至少使用一条return语句,用来返回一个值。#includeintTwoAdd(inta,intb){returna+b;}voidTwoMult(intx,inty){printf("%d*%d=%d\n",x,y,x*y);}voidmain(){intx=15,y=20;intz=TwoAdd(x,y);//z的值为35printf("%d+%d=%d\n",x,y,z);//输出15+20=35TwoMult(x,y);//输出15*20=300}1.数组的引入数组是一种组合数据类型,用一个数组能够同时表示和保存一批数据。数组中包含有若干个相同类型的数据,每个数据称为该数组的一个元素,每个元素通过数组名、下标及下标运算符(一对中括号)来表示。具体格式是:<数组名>[<下标>]例如:a[5]数组元素、下标变量2.数组的分类:按照数组维数:一维数组:元素带有一个下标a[5]二维数组:元素带有两个下标b[3][4]三维数组:元素带有三个下标c[0][3][2]按照元素的数据类型:整型数组、实型数组、字符数组、字符串数组、指针数组、结构数组3.一维数组表示一维数组能够用来表示具有相同数据类型的一组成序列的数据,每个一维元素对应一个编号(下标)。数组a:{12,34,56,34,58,44,66}下标:0123456表示:a[0]a[1]a[2]a[3]a[4]a[5]a[6]一维数组长度:数组中所包含的数据元素的个数。4.二维数组表示二维数组能够用来表示具有相同数据类型、一组按照行列表格结构排列的数据,每个数据既对应有行号,又对应有列号。二维数组c行下标0、1、2列下标0、1、2、3二维数组元素(双下标变量)c[1][0]=4,c[2][3]=10二维数组长度(元素总数):行数*列数二维数组c的长度(元素总数):3*4=121.一维数组定义语句格式<元素类型关键字><数组名>[<常量表达式>][={<元素初值表>}];如:intgrade[10];一维数组的存储空间大小:等于元素类型长度乘以数组长度。如inta[10];占用40个字节2.一维数组定义语句举例(1)inta[20];//a[0]a[1]…a[19]80(2)doubleb[MS];//b[0]b[1]…b[NS-1]8*MS(3)intc[5]={1,2,3,4,0};//数组长度5占用字节数20(4)chard[]={a,b,c,d};//d[0]=ad[1]=bd[2]=cd[3]=d(5)inte[8]={1,4,7};//e[0]=1e[1]=4e[2]=7e[3]-e[6]=0(6)charf[10]={B,A,S,I,C};//f[5]-f[9]=’\0’(7)floath1[5],h2[10];//一条语句中定义多个同类型数组(8)intx=1,y=2,w[4]={0};//同在一条语句中定义简单变量和数组3.一维数组元素的使用inta[10];下标变量表示:<数组名>[<下标表达式>]下标表达式:常量、变量、函数或一般表达式下标变量例:a[5]、a[i]、a[j++]、a[2*x+1]数组与下标变量具有相同的表示格式,但具有不同的出现场合。inta[6]={1,2,3,4,5,6};//a[6]为数组,数组长度为6表达式a[4]*3+2中的a[4]为下标变量,表达式值为5*3+2=17。使用一维数组的程序举例程序1:
#include
voidmain()
{
inti,a[6];
printf("输入6个整数:");
for(i=0;i<6;i++)scanf("%d",&a[i]);
for(i=5;i>=0;i--)printf("%d",a[i]);
printf("\n");
}
输入:381262015
输出:152061283
程序2:
#include
#defineM10
voidmain()
{
inti,a[M+1];
a[0]=1;a[1]=2;
for(i=2;i<=M;++i)a[i]=a[i-1]+a[i-2];
//a[2]=a[1]+a[0]=3,a[3]=a[2]+a[1]=5,a[4]=8,
for(i=0;i<m;++i)=""printf("%d,=""",a[i]);<=""span="">
printf("%d\n",a[M]);
}
输出:1,2,3,5,8,13,21,34,55,891.二维数组定义语句格式<元素类型关键字><二维数组名>[<常量表达式1>][<常量表达式2>][={{<子列表1>},{子列表2},...}];例如:inta[2][4];a[0][0]a[0][1]a[0][2]a[0][3]a[1][0]a[1][1]a[1][2]a[1][3]二维数组a中的元素总数:行数×列数=2*4=8。二维数组a的存储空间大小:元素类型长度×行数×列数=4*2*4=322.二维数组存储空间的分配进行二维数组存储空间分配,是先按照行下标从小到大次序,再按照列下标从小到到次序。如doublec[3][4];元素数:3*4=12,存储字节数:8*12=96,字节编号范围:0-95。二维数组中任一元素的开始字节地址的计算公式:address(d[i][j])=sizeof(<元素类型>)*(i*<列总数>+j)//d是数组名如address(c[1][3])=sizeof(double)*(1*4+3)=8*7=563.二维数组定义语句举例(1)inta[3][3];(2)doubleb[M][N];(3)intc[2][3]={{1,3,5},{2,4,6}};(4)intd[M-1][M+1]={{0}};(5)inte[4][5]={{0},{1,2}};(6)charg[10],h[10][5];4.二维数组元素的使用元素的表示:<数组名>[<行下标表达式>][<列下标表达式>]例如:inta[4][5];a[1][2]=6;a[2][2]=3*a[1][2]+1;//a[2][2]=19printf("%d\n",a[i][j]);printf("%d\n",a[i++][j++]);5.二维数组的遍历二维数组的遍历就是依次访问数组中的每个元素。对二维数组的遍历,需要采用双重循环,外循环按行下标从小到大,内循环按列下标从小到大,在内循环体中依次访问每个元素。inti,j,s=0,a[M][N];for(i=0;i<m;i++)<=""span="">for(j=0;j<n;j++)=""s+="a[i][j];printf("s=%d\n",s);#defineM3#defineN3a[M][N]={{2,3,4,},{5,6,7},{4,6,8}};//s=2+3+4+5+6+7+4+6+8=45使用二维数组的程序举例程序1:
#include
voidmain()
{intb[2][3]={{7,15,5},{4,6,8}};
inti,j,min=b[0][0];
for(i=0;i<2;i++)
for(j=0;j<3;j++)
if(b[i][j]<min)min="b[i][j];
printf("%d\n",min);
}
程序功能:从数组b[2][3]中求出所有元素的最小值并输出。程序2:
#include
voidmain()
{intd[3][3]={{1,5},{3,2},{6,7}};
inti,j;
for(i=0;i<3;i++){
for(j=0;j<2;j++)d[i][2]+=d[i][j];
}
for(i=0;i<3;i++)printf("%d",d[i][2]);
}//6513
程序功能:利用d中每行最后一个元素累加前面同行所有元素值,并输出。inta[10];intb[3][4];//a和b都属于数组变量,不是数组类型。通过使用typedef语句来实现定义数组类型的功能。1.一维数组类型的定义语句格式typedef<元素类型关键字><数组类型名>[<常量表达式>];语句格式举例:(1)typedefintVector[10];//int[10]Vectora;等价于inta[10];(2)typedefcharStrings[80];//char[80]Stringsns;等价charns[80];(3)typedefdoubleArray[N];//double[N]Arrayd={2,4};doubled[N]={2,4};2.二维数组类型的定义语句格式二维数组类型的定义语句的格式:typedef<元素类型><数组类型名>[<常量表达式1>][<常量表达式2>];
语句格式举例:(1)typedefintMatrix[5][5];//int[5][
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 现金装修附加合同范例
- 绿茶茶叶订购合同模板
- 订购电梯设备合同模板
- 购买员工车辆合同范例
- 联想电脑销售合同范例
- 水电防水服务合同模板
- 落货公司合同范例
- 活动隔断租赁合同模板
- 购买防疫物资合同范例
- 换货合同范例
- 17 难忘的泼水节(第一课时)公开课一等奖创新教学设计
- 一年级数学20以内加减法口算混合练习题
- 矿山安全生产培训
- 2024年执业药师继续教育专业答案
- 非ST段抬高型急性冠脉综合征诊断和治疗指南(2024)解读
- 自然资源调查监测劳动和技能竞赛
- 建筑公司安全生产专项整治三年行动实施方案
- 承包酒店鲜榨果汁合同范本
- 2024-2030年中国无菌注射剂行业市场发展趋势与前景展望战略分析报告
- 2024-2025学年人教版七年级数学上册期末达标测试卷(含答案)
- 第七章-应聘应试技巧
评论
0/150
提交评论