版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
二级C程序基础教学2023/5/26二级C程序基础教学二级C语言考试介绍考核内容:二级定位为程序员,考核内容包括公共基础知识和程序设计。所有科目对基础知识作统一要求,使用统一的公共基础知识考试大纲和教程。二级公共基础知识在各科笔试中的分值比重为30%(30分)。程序设计部分的比重为70%(70分),主要考查考生对程序设计语言使用和编程调试等基本能力。二级C程序基础教学二级C语言考试介绍考试形式:二级所有科目的考试包括笔试和上机考试两部分。二级C笔试时间为90分钟,上机时间改为90分钟。
二级C上机应用软件为VisualC++6.0二级C程序基础教学二级C语言考试介绍考试成绩划分为优秀、良好、及格和不及格四个等第成绩,笔试或上机考试成绩只有一门及格的,下次考试及格的一门可以免考,两部分考试均及格者,由教育部考试中心颁发统一印制的合格证书。二级C程序基础教学二级C语言培训介绍
实实在在学知识顺顺利利过考试二级C程序基础教学如何学二级C语言多看书多实践验证多读(背)程序二级C程序基础教学第一章程序设计基本概念什么是C程序?高级语言机器语言源程序目标程序编译程序二级C程序基础教学第一章程序设计基本概念C语言编译“三部曲”C源程序目标文件可执行文件.C.obj.exe编译连接二级C程序基础教学第一章程序设计基本概念程序设计过程确定数据结构(输入输出)确定算法(解决问题的方法和步骤)编码。(算法代码化)调试程序。(改错和修正)整理和写文档。二级C程序基础教学第一章程序设计基本概念结构化程序的三种结构顺序结构(先后顺序执行)选择结构(执行不同分支的语句)循环结构(重复执行多次或一次不执行)二级C程序基础教学第一章程序设计基本概念模块化结构由一个个功能模块构成的程序结构为模块化结构。二级C程序基础教学第二章C程序设计的初步知识C语言示例一输出一行信息:WellcometoSinree!程序名为sinree_c1.c。#include<stdio.h> /*命令行,表示文件包含*/main() /*主函数*/{printf(“WellcometoSinree!\n"); /*输出信息*/}程序输出结果二级C程序基础教学第二章C程序设计的初步知识C语言示例二输入两个整数,输出它们的和。程序名为sinree_c2.c。#include<stdio.h> /*文件包含*/main() /*主函数*/{inta,b,c; /*声明定义变量a,b和c*/scanf("%d%d",&a,&b); /*输入变量a和b的值*/c=a+b; /*计算c等于a与b的和值*/printf("c=%d\n",c); /*输出变量c的值*/}运行程序输入:90<CR>7<CR>程序结果:二级C程序基础教学第二章C程序设计的初步知识C语言示例三输入两个整数,通过调用函数计算它们的和,然后输出和值。程序名为sinree_c3.c。#include"stdio.h" /*文件包含*/intsum(intx,inty) /*定义sum函数*/{intz; /*声明定义变量z*/z=x+y; /*计算z等于x与y的和值*/return(z); /*将z的值返回,通过sum带回调用处*/}main() /*主函数*/{inta,b,c; /*声明定义变量a,b和c*/scanf("%d%d",&a,&b); /*输入变量a和b的值*/c=sum(a,b); /*调用sum函数,将得到的值赋给c*/printf("c=%d\n",c); /*输出变量c的值*/}运行程序输入:907<CR>程序结果C=97二级C程序基础教学第二章C程序设计的初步知识VC++6.0编辑环境编辑区二级C程序基础教学第二章C程序设计的初步知识VC++6.0编辑环境启动VisualC++6.0环境编辑源程序文件编译连接执行二级C程序基础教学第二章C程序设计的初步知识VC++6.0编辑环境编译Ctrl+F7连接F7运行Ctrl+F5二级C程序基础教学第二章C程序设计的初步知识C程序的构成和格式任何函数(包括主函数main())都是由函数说明和函数体两部分组成。其一般结构如下:[函数类型]函数名(函数参数表)
/*函数说明部分*/
{说明语句部分;
/*函数体部分*/
执行语句部分;}二级C程序基础教学第二章C程序设计的初步知识C程序的构成和格式C语言是由函数组成的一个C源程序可由一个main函数和若干个其他函数组成,其中必须有一个且只能有一个main函数。
C程序总是从main函数开始执行。
二级C程序基础教学第二章C程序设计的初步知识C程序的构成和格式
C程序语句和数据定义必须以分号“;”结束。C语言中,分号是程序语句的结束标志,也是C语句的必要组成部分。二级C程序基础教学第二章C程序设计的初步知识C程序的构成和格式C语言严格区分大小写。如变量a和变量A系统认定为两个不同的变量。二级C程序基础教学第二章C程序设计的初步知识C程序的构成和格式C语言数据输入和输出是由库函数实现的。C语言本身没有输入输出语句。输入和输入操作是由库函数scanf和printf等函数来实现的。所以一般C程序都要使用命令行语句#include<stdio.h>
注意:命令行以#开头,行尾不能加;号二级C程序基础教学第二章C程序设计的初步知识C程序的构成和格式C语言用/*注释内容*/形式进行程序注释在“/*”和“*/”之间的所有字符都为注释符,C系统不对注释符进行编译。(另外可以用//用于单行注释)注意:注释不能嵌套使用。如/*/*…*/*/二级C程序基础教学第二章C程序设计的初步知识C程序书写格式建议1.C程序书写格式自由。
对于短语句可以多条语句书写在同一行,也可以将长语句分写在多行。但需要注意,分行时不能将一个单词分开,也不能将双引号引起来的字符串分开。我们提倡一行一条语句的风格。2.C程序书写采用缩进格式。根据语句的从属关系,程序书写时采用缩进格式,使程序语句的层次结构清晰,提高程序的可读性。同一层次语句要左对齐,不同层次的语句要缩进若干个字符,这样程序层次清楚,便于阅读和理解。
3.程序中适当使用注释信息。在书写程序时,适当地加入注释同样可增加程序的可读性。
二级C程序基础教学第二章C程序设计的初步知识C程序标识符
C语言中,符号的命名必须遵守一定的规则,按此规则命名的符号称为标识符。合法的标识符命名规则为:标识符可以由字母、数字和下划线组成,并且第一个字符必须为字母或下划线。[提醒:c语言标识符中大写字母和小写字母被认为是两个不同的字符]二级C程序基础教学第二章C程序设计的初步知识C程序标识符分类
关键字(由C语言预先规定的,见附录4)如:int,double
预定义标识符(预先定义且具有特殊含义)如printf,define
用户标识符(见名知义)用来给变量、函数、数组等命名。
二级C程序基础教学第二章C程序设计的初步知识C程序常量和变量
关于常量、变量及数据类型说明的程序实例,程序名为sinree_c3.c。#include<stdio.h>main(){inta=3; /*定义整型变量a并赋予常量值3*/shortr=6; /*定义短整型变量r并赋予常量值6*/charc='a'; /*定义字符变量c并赋予字符常量值'a'*/floatpi=3.14; /*定义单精度实型变量pi并赋予实型常量值3.14*/doubles; /*定义双精度实型变量s*/s=pi*r*r; /*将pi*r*r值赋给s*/printf("int:%d,short:%d,char:%d,float:%d,double:%d\n",sizeof(a),sizeof(r),sizeof(c),sizeof(pi),sizeof(s)); /*输出各变量占内存的字节数*/printf("a=%d,r=%d,c=%c,pi=%f,s=%lf\n",a,r,c,pi,s); /*输出各变量的值*/}二级C程序基础教学第二章C程序设计的初步知识常量:在程序运行过程中,其值不能改变的量。根据数据类型可以分为数值型(有正、负之分)【整型常量(不带小数点)、实型常量(必须用小数点)】、字符常量(如‘a’、’d’)和字符串(“ncre”、”beijing”)常量。二级C程序基础教学第二章C程序设计的初步知识符号常量#include<stdio.h>main(){doubler,s,l;r=5.0;s=3.14*r*r;l=2*3.14*r;printf("s=%f,l=%f\n",s,l);}符号常量
#include<stdio.h>#definePI3.14main(){doubler,s,l;r=5.0;s=PI*r*r;l=2*PI*r;printf("s=%f,l=%f\n",s,l);}二级C程序基础教学第二章C程序设计的初步知识符号常量用#define命令行(不是语句,所以后面不能加分号)定义一个字符(通常用大写字母)代表一个常量。#definePI3.14二级C程序基础教学第二章C程序设计的初步知识变量:在程序运行过程中值可以改变的量。变量实质上代表了内存中的某个存储单元。变量必须先定义后使用。二级C程序基础教学第二章C程序设计的初步知识整型数十进制:0123456789八进制:01234567c程序中八进制开头加0十六进制:0123456789
abcdefc程序中十六进制开头加0x二级C程序基础教学第二章C程序设计的初步知识整型常量#include<stdio.h>main(){inta=12;printf("a=%d,a=%o,a=%#o,a=%x,a=%#x\n",a,a,a,a,a);}二级C程序基础教学第二章C程序设计的初步知识整型变量
基本型:用int关键字进行定义intk;一个定义语句用一个;结束多个变量用,隔开intk,m,n;(仅开辟存储单元,不存放初值,此时变量值无意义)变量初始化:intm=1,n=2,k=3;
二级C程序基础教学第二章C程序设计的初步知识整型数据分类
短整型:short[int]长整型:int或long[int]无符号型:unsigned在vc6.0中整型常量后面加一个字母l或L在无符号整数常量后加u或U若长整型无符号可以加lu或LU二级C程序基础教学数据类型名说明VisualC++6.0环境TurboC2.0环境字节取值范围字节取值范围short[int]短整型2-32768~327672-32768~32767signedshort[int]带符号短整型2-32768~327672-32768~32767unsignedshort[int]无符号短整型20~6553520~65535int整型4-2147483648~21474836472-32768~32767signed[int]带符号整型4-2147483648~21474836472-32768~32767unsigned[int]无符号整型40~429496729520~65535long[int]长整型4-2147483648~21474836474-2147483648~2147483647signedlong[int]带符号长整型4-2147483648~21474836474-2147483648~2147483647unsignedlong[int]无符号长整型40~429496729540~4294967295二级C程序基础教学第二章C程序设计的初步知识整数在内存中的存储形式一个字节中的最右边一位称为最低位;一个字节中的最左边一位称为最高位;对于一个有符号整数,最高位用来存放整数的符号,称为符号位。若是正整数,最高位放置0,若是负整数,最高位放置1。
二级C程序基础教学第二章C程序设计的初步知识整数在内存中的存储形式正整数:原码表示。负整数:补码表示。(取反加1)二进制转十进制为取反减1正整数5在内存中的二进制码为:0000000000000101(原码)最大正整数0111111111111111-5的二进制10000101,其反码:11111010,补码:11111011二级C程序基础教学第二章C程序设计的初步知识实型数据小数形式:由数字和小数点组成的一种实数表示形式。(必须有小数点)指数形式:以“e”或“E”跟一个整数来表示以10为底的幂,“e”或“E”之前必须有数字,且“e”或“E”后面的指数必须为整数。(“e”或“E”的前后以及数字之间无空格)
二级C程序基础教学第二章C程序设计的初步知识实型数据单精度float4个字节双精度double8个字节
二级C程序基础教学第二章C程序设计的初步知识
算术表达式基本算术表达式:
+、-、*、/、%(%运算对象为整型)注意:+、-可以看做单目,也可看做双目运算符号。双目运算符两边运算数的类型一致,则所得结果的类型与运算数的类型一致。如:1.0/2.0=0.5½=0;若不一致,自动进行类型转换,转换的原则为“就大”所有实型数运算都以双精度方式进行。二级C程序基础教学第二章C程序设计的初步知识运算符的优先级单目运算符“+”和“-”的结合性是从右到左。在算术表达式中,可以使用多层圆括号,但左右括号必须配对。若包含不同优先级的运算符,则按运算符的优先级由高到低进行,若相同,则按结合方向进行。二级C程序基础教学第二章C程序设计的初步知识强制类型转换表达式(类型名)(表达式)如(int)3.234二级C程序基础教学第二章C程序设计的初步知识赋值表达式“=”赋值运算符,赋值运算的功能是先求出右边表达式的值,然后把此值赋给赋值号左边的变量。注意:赋值运算符优先级别仅高于逗号运算符;且结合性为自右向左;赋值表达式的值为最左边变量所得的新值。二级C程序基础教学第二章C程序设计的初步知识复合赋值表达式+=n+=2n=n+2-=n-=2n=n-2*=n*=2n=n*2/=n/=2n=n/2%=n%=2n=n%2二级C程序基础教学第二章C程序设计的初步知识复合运算中的类型转换两侧不一致,把右侧数值按左侧变量类型进行转换。也可用强类型转换的方式人为的转换。
二级C程序基础教学第二章C程序设计的初步知识自加、自减、逗号运算符自加++使运算对象值加1自减--使运算对象值减1++i
i++++i;i++;
i的值都加1前缀加1,后缀不加1--i
i----i;i
--;
i的值都减1前缀减1,后缀不减1
二级C程序基础教学第二章C程序设计的初步知识#include<stdio.h>main(){inti=1,j=1,m=1,n=1,k=1;printf("i=%d\n",i);m=i++;printf("i=%d,m=%d\n",i,m);printf("j=%d\n",j);m=++j;printf("j=%d,m=%d\n",j,m);printf("n=%d\n",n);m=n--;printf("n=%d,m=%d\n",n,m);printf("k=%d\n",k);m=--k;printf("k=%d,m=%d\n",k,m);}二级C程序基础教学第二章C程序设计的初步知识逗号运算符和逗号表达式表达式1,表达式2,……表达式n结合性:从左到右,最后一个表达式的值就是此逗号表达式的值。逗号运算符的优先级最低。
二级C程序基础教学第三章顺序结构顺序结构:在程序中按语句出现的顺序逐条执行。赋值语句:在赋值表达式的尾部加上一个“;”号。应出现在函数的可执行部分。
二级C程序基础教学第三章顺序结构数据输出:把数据从计算机内部送到计算机外部设备上的操作。在VC6.0环境下,在调用输入和输出的库函数之前要求在源程序中出现包含头文件stdio.h的命令行。
二级C程序基础教学第三章顺序结构printf函数
printf(格式控制,输出项1,输出项2,…)格式控制是字符串形式,作用是将要输出的数据按照指定的格式输出和提供需要原样输出的文字或字符。如:d%、f%、e%
二级C程序基础教学第三章顺序结构格式字符%c%d%o(%#o)%x(%#x)%u%f%e%s%p%%长度修饰符在%和格式字符之间,可以加入长度修饰符,以保证数据输出格式的正确和对齐。长整%ld短整%hd二级C程序基础教学第三章顺序结构宽度说明:%和格式字符之间插入一个整数常数来指定输出的宽度n对于float和double的实数,可以用n1.n2的形式来输出,或者用.n2输出。在%d和宽度之间加“-”实现数据左对齐加“+”在每一个数字前面带正负号。
二级C程序基础教学第三章顺序结构注意事项一般在多个输出数之间留逗号、空格或者回车。要输出%符号,在格式控制符中用%%printf函数有返回值,返回值是本次调用输出字符的个数,包括回车等控制符。
二级C程序基础教学第三章顺序结构scanf函数scanf(格式控制,输入项1,输入项2,…)主要作用是指定输入时的数据转换格式,输入项之间用逗号隔开,对于int,float,double类型变量,在变量之前必须加&符号作为输入项。
二级C程序基础教学第三章顺序结构格式字符%c%d%i%o%x%u%f%e%s
二级C程序基础教学第三章顺序结构输入整数或者实数这类数值型数据时,输入的数据之间必须用空格、回车符号等间隔符号隔开。可以指定输入数据所指定的宽度一般在使用输入函数前使用输出函数对输入数据进行说明,且尽量不要使用通配符。
二级C程序基础教学第三章顺序结构复合语句和空语句{语句1;语句2;……语句n;}二级C程序基础教学第三章顺序结构空语句只有一个分号的语句。
二级C程序基础教学第三章顺序结构例题3.1
AB提问:若A和B桶都装了水(不一定是装满),请问如何将A和B桶中的水调换?(A,B的容积不受限制)二级C程序基础教学第三章顺序结构例题3.2注意:十进制小数点移位是通过10的n次方的乘除来实现.四舍五入在c语言中的操作:可以通过将小数点移动到舍入数位前,加0.5,然后取整来实现,最后再将小数点移回.强类型转换前要加括号.double类型在使用scanf输入变量时,使用%lf格式控制符.
二级C程序基础教学第四章选择结构选择结构:根据判断的结果(逻辑值)决定程序的不同流程.逻辑值:关系运算和逻辑运算都会得到一个逻辑值,C语言中,0代表逻辑值“假”,非0(正数或者负数)代表“真”.
二级C程序基础教学第四章选择结构关系运算:比较运算,进行两个数的比较,判断比较的结果是否符合指定的条件.关系运算符:<<=>>===!=小于小与等于大于大于等于等于不等于
二级C程序基础教学第四章选择结构注意:两个字符之间不允许有空格.关系运算符是双目运算符,具有从左至右的结合性.<、<=、>、>=优先级相同,但高于优先级相同的==、!=如a==b<c算术运算符优先级>关系运算符优先级>赋值运算符优先级如a=b<=c+d*e==f
二级C程序基础教学第四章选择结构关系表达式:由关系运算符构成的表达式。关系表达式的值:整数0或1关系运算符两边值的类型不一致时,自动进行类型转换。浮点数由于存放有误差,x==y为0。二级C程序基础教学第四章选择结构逻辑运算符&&逻辑“与”双目||逻辑“或”双目!逻辑“非”单目结合性:从左至右优先级:!>&&>||如b||c&&!d二级C程序基础教学第四章选择结构优先级比较!>算术>关系>&&>||>赋值如:f=a||b<=!c+d&&e
二级C程序基础教学第四章选择结构逻辑运算规则非运算!0为1!1为0是否
与运算1&&1为1同时满足条件
0&&11&&00&&0为0或运算0||0为0不满足任何一个条件
0||11||01||1为1二级C程序基础教学第四章选择结构逻辑运算规则非运算!0为1!1为0是否
与运算1&&1为1同时满足条件
0&&11&&00&&0为0或运算0||0为0不满足任何一个条件
0||11||01||1为1二级C程序基础教学第四章选择结构逻辑运算规则关系式0<x<10在c语言中的表达0<x&&x<10&&或||逻辑表达式“短路”现象当A为0时,不需计算B,可知A&&B为0当A为1时,不需计算B,可知A||B为1二级C程序基础教学第四章选择结构if语句if(表达式)语句if(表达式)语句1
else语句2二级C程序基础教学第四章选择结构if语句if(表达式)语句如if(a<b){t=a;a=b;b=t;}二级C程序基础教学第四章选择结构if语句if(表达式)语句语句只能为一条语句,可以把多条语句组合成复合语句.执行过程:计算表达式中的值,如果为真,执行if子句,然后执行if语句后的一个语句;否则,跳过if子句,直接执行if语句后的一个语句;二级C程序基础教学第四章选择结构if语句if(表达式)语句语句只能为一条语句,可以把多条语句组合成复合语句.执行过程:计算表达式中的值,如果为真,执行if子句,然后执行if语句后的一个语句;否则,跳过if子句,直接执行if语句后的一个语句;二级C程序基础教学第四章选择结构if语句if(表达式)语句1else语句2执行过程:计算表达式的值,如果表达式的值为真,执行if子句,然后跳过else子句,去执行if语句之后的下一条语句;如果表示式的值为假,跳过if子句,执行else子句,然后去执行if语句之后的下一条语句.二级C程序基础教学第四章选择结构if语句if(表达式)语句1else语句2执行过程:计算表达式的值,如果表达式的值为真,执行if子句,然后跳过else子句,去执行if语句之后的下一条语句;如果表示式的值为假,跳过if子句,执行else子句,然后去执行if语句之后的下一条语句.二级C程序基础教学第四章选择结构if语句的嵌套(一)if(表达式1)if(表达式2)语句1else语句2else语句3二级C程序基础教学第四章选择结构if语句的嵌套(二)if(表达式1){if(表达式2)语句1}else语句2注意:else子句总与前面最近不带else的if相结合.二级C程序基础教学第四章选择结构if语句的嵌套(三)
if(表达式1)语句1elseif(表达式2)语句2else语句3
if(表达式1)语句1elseif(表达式2)语句2else语句3等价尽量将内嵌的if语句放在else子句中.二级C程序基础教学第四章选择结构if语句的嵌套(四)
if(表达式1)语句1elseif(表达式2)语句2
if(表达式1)语句1elseif(表达式2)语句2
等价尽量将内嵌的if语句放在else子句中.二级C程序基础教学第四章选择结构if语句的多层嵌套if(表达式1)语句1elseif(表达式2)语句2elseif(表达式3)语句3…else语句n
if(表达式1)语句1elseif(表达式2)语句2elseif(表达式3)语句3…else语句n等价逐一对if后的表达式进行检测,只执行其中的一个表达式为真的子句,若所有表达式为0,执行最后的else子句;若无最后的else子句,不执行任何的子句.二级C程序基础教学第四章选择结构条件表达式构成的选择结构条件运算符:?:条件表达式:表达式1?表达式2:表达式3运算功能:如果表达式1为真,求表达式2的值,此时表达式2的值就是整个条件表达式的值;如果表达式1为假,求表达式3的值,此时表达式3的值就是整个条件表达式的值;
二级C程序基础教学第四章选择结构条件表达式构成的选择结构条件表达式的优先级别低于关系运算符和算术运算符,但高于赋值运算符.如:y=x>10?100:200x<0?(-1)*x:x
二级C程序基础教学第四章选择结构switch表达式构成的选择结构switch(表达式){case常量表达式1:语句1case常量表达式2:语句2…case常量表达式n:语句ndefault:语句n}
通常和break语句联合使用,当执行到break时,立即跳出switch语句.二级C程序基础教学第四章选择结构语句标号和goto语句gotostop;…stop:printf(“end\n”);
二级C程序基础教学第五章循环结构while语句和用while语句构成的循环while(表达式)循环体例如:k=0;while(k<10){printf(“*”);k++;}
二级C程序基础教学第五章循环结构do-while语句及其循环do循环体while(表达式);例如:do{i++;s+=i;}While(i<10);
二级C程序基础教学第五章循环结构for语句及其循环for(表达式1;表达式2;表达式3)循环体例如:for(k=0;k<10;k++)printf(“*”);
表达式1;While(表达式2){循环体;表达式3;}等价形式二级C程序基础教学第五章循环结构break语句和continue语句Break在循环结构中终止本层循环体;Continue跳过本次循环体中余下尚为执行的语句,立刻进行下一次的循环条件判定,可以理解为仅结束本次循环.
二级C程序基础教学第六章字符型数据字符型常量C语言中,一个字符常量代表ASCII字符集(见附录七)中的一个字符,用单引号把一个字符括起来作为字符常量.例如:a为标识符,‘a’为字符型常量.
二级C程序基础教学第六章字符型数据字符型常量注意:大写字母和小写字母的ASCII值不同,因而代表不同的字符常量.单引号中的空格也是一个字符常量.字符常量只能包含一个字符.字符常量只能用单引号括起来,不能用双括号.字符常量在内存中占一个字节,存放的是字符的ASCII代码值.
二级C程序基础教学第六章字符型数据字符型常量转义字符常量‘\特定字符’\n回车\\反斜杠\‘单引号\“双引号\ddd三位八进制代表的一个ASCII字符\xhh二位十六进制代表的一个ASCII字符注意:转义字符常量只代表一个字符.
二级C程序基础教学第六章字符型数据字符串常量字符串常量是由双引号括起来的一串字符.
在c语言中,系统在每个字符串的最后自动加入一个字符‘\0’作为字符串的结束标志.注意:“”称为空串,也是一个字符串常量,占用一个字节的存储空间.
二级C程序基础教学第六章字符型数据字符量的运算在C程序中,字符量可参与任何整数运算.大小写字母的转换:大写字母ASCII值=小写字母ASCII值-32可以将数字字符转换成整数值,也可以将整数值转换成数字字符.字符量可以进行关系运算.
二级C程序基础教学第六章字符型数据字符变量用关键字char进行定义charch1=‘a’;字符变量可以参与整型变量允许的运算,有可以使用与字符处理相关的库函数.
二级C程序基础教学第六章字符型数据字符的输入和输出printf输出字符时使用格式说明符%c,也可以在c前加入整数来指定输出字符时所占的宽度.用scanf输入字符时也用格式说明符%c,当%c一个接一个时,字符之间不应有间隔符号(如回车,空格).
二级C程序基础教学第六章字符型数据putchar和getchar输入和输出函数putchar输出字符putchar(ch);getchar输入字符ch=getchar();注意:只有在用户敲入enter键时,读入才开始执行.
二级C程序基础教学第七章函数一个实用的c语言源程序总是由许多函数组成.这些函数中可以调用c提供的库函数,也可以调用由用户或他人编写的函数.c源程序在正常情况下总是从main函数开始执行,main()结束.
二级C程序基础教学第七章函数熟悉c语言提供的丰富库函数,应正确调用.调用c语言标准库函数要求使用include命令行.include命令行必须以#开头,系统提供的头文件以.h为文件的后缀,文件名用一对双引号“”或一对尖括号<>括起来.标准库函数的调用形式:出现在表达式中或者作为独立的语句完成某种操作。
二级C程序基础教学第七章函数函数的定义与返回值函数定义的语法
函数返回值的类型名函数名(类型名形式参数1,类型名形式参数2,……){说明部分语句部分}
注意:不能在函数的内部定义函数。
函数名和形式参数都是用户命名的标识符,同一程序中,函数名必须唯一,形式参数名只要在同一函数中唯一即可。若在函数的首部省略了函数返回值的类型名,则默认函数返回值的类型为int类型。除了返回值类型为int类型的函数外,函数必须先定义(或说明)后调用。若函数只是用于完成某些操作,没有函数值返回,则必须把函数定义成void类型。二级C程序基础教学第七章函数函数的定义与返回值如:doubleadd(doublea,doubleb){doubles;s=a+b;returns;}
函数体中,除形参外,用到的其他变量必须在说明部分进行定义,这些变量(包括形参),只在函数被调用时才临时开辟存储单元,当退出函数时,这些临时开辟的存储单元全部被释放掉,因此这种变量只在函数体内部起作用,与其他函数体中的变量互不相干,它们可以和其他函数中的变量同名。二级C程序基础教学第七章函数函数的定义与返回值如:doubleadd(doublea,doubleb){doubles;s=a+b;returns;}
函数的值通过return语句返回,return语句的形式如下:return表达式;或return(表达式);return语句中表达式的值就是所求的函数值,此表达式值的类型必须与函数首部所说明的类型一致。若类型不一致,则以函数值的类型为准,由系统自动进行转换。
当程序执行到return语句时,程序的流程就返回到调用该函数的地方,并带回函数值。二级C程序基础教学第七章函数函数的定义与返回值如:doubleadd(doublea,doubleb){doubles;s=a+b;returns;}
在同一个函数中,可以根据需要在多处出现return语句,在函数体的不同部位退出函数,但return只可能执行一次return语句中也可以不含表达式,这时必须定义函数为void类型函数体内可以没有return语句,这时必须定义函数为void类型,程序的流程就一直执行到函数末尾的“}”,然后返回调用函数,也没有确定的函数值带回。二级C程序基础教学第七章函数函数的两种调用方式函数的一般调用形式为:函数名(实参表)若函数无形参,调用形式为函数名()一般情况下,可用两种方式调用函数:
当所调用的函数用于求出某个值时,函数的调用可作为表达式出现在允许表达式出现的任何地方。当函数仅进行某些操作而不返回函数值,这时函数的调用可作为一条独立的语句。
当实参个数多于一个时,各实参之间用逗号隔开。实参的个数必须与所调函数中的形参相同,类型一一对应匹配。二级C程序基础教学第七章函数函数调用的语法要求调用函数时,函数名必须与所调用的函数名字完全一致。实参的个数必须与形参的个数一致。实参可以是表达式,在类型上应按位置与形参一一对应。函数必须先定义后调用(函数的返回值类型为int或char时除外).函数可以直接或间接的自己调用自己,称为递归调用。
二级C程序基础教学第七章函数函数说明的形式
函数说明的一般形式类型名函数名(参数类型1,参数类型2,……)也可以采用下面的形式类型名函数名(参数类型1参数1,参数类型2参数2,……)函数说明可以是一条独立的说明语句,也可以与普通变量一起出现。
二级C程序基础教学第七章函数函数说明的形式对函数进行说明能使c语言的编译程序在编译时进行有效的类型检查。当在所有函数的外部、被调用之前说明函数时,在对函数进行说明的语句后面所有位置都可以对函数进行调用。函数说明也可以放在调用函数内的说明部分。
二级C程序基础教学第七章函数调用函数和被调用函数之间的数据传递三种方式:1、实参和形参之间进行数据传递2、通过return语句把函数值返回。3、通过全局变量。在C语言中,数据只能从实参单向传递给形参,称为“按值”传递,也即是说,当简单变量作为实参时,用户不可能在函数中改变对应实参的值。
二级C程序基础教学第八章地址和指针变量的地址和指针ab
101210131201120212031204一个变量实质上是代表了“内存中的某个存储单元”,若在程序中定义了一个变量,c编译系统就会根据定义中变量的类型,为其分配一定字节数的内存空间。每个变量的地址是指该变量所占存储单元的第一个字节的地址。直接存取:直接按变量的地址存取变量值的方式。
二级C程序基础教学第八章地址和指针变量的地址和指针ppa
2002200210121013存放地址的变量称为“指针变量”。间接存取:通过指针变量间接存取变量值的的方式。“指针变量p指向了变量a”就是指针变量p中存放了变量a的地址。在c语言中,指针被广泛运用,它和数组、字符串、函数间数据的传递等有着密不可分的联系。
10121012二级C程序基础教学第八章地址和指针指针变量的定义和指针变量的基类型定义指针变量的一般形式如下:类型名*指针变量名1,*指针变量名2,…..;如int*pi,*pj;double*pd;我们称int、double是指针变量的基类型。
二级C程序基础教学第八章地址和指针指针变量的定义和指针变量的基类型如:int**p,*s,k=20;s=&k;p=&s;对于基类型不同的指针变量,其内容(地址值)增1、减1所跨越的字节数是不同的,因为指针移动的最小单位。
二级C程序基础教学第八章地址和指针给指针变量赋地址值通过求地址运算符&获得地址值intk=1,*p,*q;q=&k;通过指针变量获得地址值p=q;通过标准函数获得地址值
二级C程序基础教学第八章地址和指针给指针变量赋“空”值p=NULL;NULL是在stdio.h头文件中定义的预定义符,因此在使用NULL时,应该在程序的前面出现预定义行#include<stdio.h>,NULL的代码值为0,因此以上代码等价于p=‘\0’;或p=0;
二级C程序基础教学第八章地址和指针对指针变量的操作通过指针来引用一个存储单元当变量中存放了一个确切的地址值时,可以用“间接访问运算符”*通过指针来引用该地址的存储单元。如int*p,j=10,m;p=&j;m=*p;
二级C程序基础教学第八章地址和指针对指针变量的操作间接访问运算符*是一个单目运算符,必须出现在运算对象的左边,其运算对象是存储地址的指针变量或者是地址。注意:++和*具有相同优先级,结合性为从右到左++*p*p+=1(*p)++*p+=1*p++p+=1
二级C程序基础教学第八章地址和指针对指针变量的操作移动指针:对指针变量加上或减去一个整数,或通过赋值运算,使指针变量指向相邻的存储单元。在对指针进行加、减运算时,数字“1”不再代表十进制整数“1”,而是指1个存储单元长度。1个单元长度的字节数,根据指针的基类型而定。
二级C程序基础教学第八章地址和指针对指针变量的操作指针比较在关系表达式中可以对两个指针进行比较,如:int*p,*q;if(p<q)printf(“ppointstolowermemory”);if(p==‘\0’)printf(“ppointstoNUll”);
二级C程序基础教学第八章地址和指针函数之间地址值的传递形参为指针变量时实参和形参之间的数据传递通过传送地址值在被调用函数中直接改变调用函数中的变量的值。函数返回地址值。
二级C程序基础教学第九章数组数组一组具有同一类型的变量在内存中占有连续的存储单元在c语言中,可以用a[0]、a[1]、a[2]、…这种形式来表示数组中连续的存储单元,我们把它们称为“带下标的变量”或数组元素。
二级C程序基础教学第九章数组一维数组的定义一维数组:数组中每个元素只带有一个下标形式:类型名数组名[整型常量(表达式)]如:inta[8];
a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]二级C程序基础教学第九章数组一维数组的定义如:inta[8];
a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]定义了一个名为a的一维数组。方括号的8规定了a数组含有8个元素,它们是a[0]、a[1]、……a[7]类型名int规定a数组中每个元素都是整型,只能存放整型数。每个元素一个下标,c语言规定每个数组第一个元素的下标总是0(下标的下界),最后一个元素的下标应该是7(下标的上界)。可以用存储单元的名字a[0]、a[1]、…a[7]直接引用各存储单元。二级C程序基础教学第九章数组一维数组的定义多个数组说明符doublew[22],v[100],u[5];和普通变量名一起说明charc1,c2,carr[81];二级C程序基础教学第九章数组一维数组元素的引用引用形式数组名[下标表达式]如:doublex[8];则x[0]、a[j]、a[m+n]都是对数组元素的合法引用。注意:一个数组元素实质上就是一个变量名,代表内存中的一个存储单元,一个数组占有一串连续的存储单元。另外,在c语言中,一个数组不能被整体引用,例如x数组,不能用x代表x[0]到x[7]这8个元素。二级C程序基础教学第九章数组一维数组的初始化在定义语句中为所定义数组的各元素赋初值inta[8]={0,1,2,3,4,5,6,7};当所赋值初值少于所定义数组的元素个数时,将自动给后面的元素补以初值0如inta[3]={1};相当于inta[3]={1,0,0}当所赋初值多于所定义数组的元素个数时,在编译时将给出出错信息。二级C程序基础教学第九章数组通过赋初值定义数组的大小inta[]={0,1,2,3}相当于inta[4]={0,1,2,3}数组说明符的一对方括号中可以不指定数组的大小,可以根据赋初值来隐性定义数组元素的个数。
二级C程序基础教学第九章数组一维数组的定义和数组元素的引用举例定义for(j=0;j<M;j++)a[j]=j;/*依次赋值*/for(j=0;j<M;j++)printf(“%d”,a[j]);/*依次输出*/for(j=M-1;j>=0;j--)printf(“%d”,a[j])/*倒序输出*/for(j=0;j<M;j++)printf(“%d”,a[M-1-j])/*倒序输出*/控制换行符正序(j+1)%n==0每输出n个元素可以换行逆序j%n==0每输出n个元素可以换行二级C程序基础教学第九章数组一维数组和指针一维数组和数组元素的地址c语言中,在函数体中或在函数外部定义的数组名可以认为是一个存放地址值的指针变量名,其中的地址值是数组第一个元素的地址,也就是数组所占一串连续存储单元的起始地址,定义数组时的类型就是此指针变量的基类型。注意:这个指针变量的地址值不可改变,即不可给数组名重新赋值,可以认为数组名是一个地址常量。二级C程序基础教学第九章数组一维数组和指针一维数组和数组元素的地址floata[10],*p,x;intk;for(k=0;k<10;k++)p=a+k;for(k=0;k<10;k++)scanf(“%d”,a+k);语句p=&a[0];和p=a;都是合法的,功能相同,都使p指向了数组的首部地址。二级C程序基础教学第九章数组一维数组和指针一维数组和数组元素的地址for(p=a,k=0;k<10;k++){scanf(“%d”,p);p++;}for(p=a,k=0;k<10;k++)scanf(“%d”,p++);for(p=a;p-a<10;p++)scanf(“%d”,p);二级C程序基础教学第九章数组一维数组和指针通过数组的首地址引用数组元素inta[10];a是数组元素的首地址,a的值等于&a[0],a+1的值为&a[1]a[0]等于*&a[0],即*(a+0),*aa[1]等于*&a[1],即*(a+1)
二级C程序基础教学第九章数组通过指针引用一维数组元素floata[10],*p,k;p=a;可以通过指针变量p来表示数组元素a[0]*pa[1]*(p+1)如for(p=a;p-a<10;p++)printf(“%4d”,*p);
二级C程序基础教学第九章数组通过指针引用一维数组元素floats[10],*p,k;p=s;可以用&s[k],s+k,p+k来表示s[k]的地址可以用s[k],*(s+k),*(p+k),p[k]来表示s[k]的值
但注意:s是不变的,而p中的地址值是可以改变的
二级C程序基础教学第九章数组函数之间对一维数组和数组元素的引用数组元素作实参数组名作实参
形参形式intarrin(int*a)intarrin(inta[])intarrin(inta[M])
注意:当数组名为实参时,在被调用函数中,并没有为与数组名对应的形参另外开辟一串连续的存储单元,而只是开辟了一个指针变量的存储单元。
数组元素地址作为实参二级C程序基础教学第九章数组二维数组二维数组:数组元素带有两个下标。逻辑上把二维数组看成一个具有行和列的表格。定义形式:
类型名数组名[常量表达式1][常量表达式2],……;如:inta[3][4]二级C程序基础教学第九章数组二维数组inta[3][4]的逻辑结构inta[3][4]的实际存储结构第0列第1列第2列第3列第0行a[0][0]a[0][1]a[0][2]a[0][3]第1行a[1][0]a[1][1]a[1][2]a[1][3]第2行a[2][0]a[2][1]a[2][2]a[2][3]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][0]a[2][1]a[2][2]a[2][3]按行存放二级C程序基础教学第九章数组二维数组在c语言中,可以把一个二维数组看成一个一维数组,每个数组元素又是包含有若干个元素的一维数组。例如:inta[3][4]这个a数组可以看成是由a[0]、a[1]、a[2]三个元素组成的一维数组。其中每个元素又是由四个元素组成的一维数组。二级C程序基础教学第九章数组二维数组元素的引用数组名[下标表达式1][下标表达式2]二维数组的初始化inta[4][3]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}};inta[4][3]={{1,2},{4,5},{7},{10}};inta[4][3]={{1,2},{4,5}};inta[4][3]={1,2,3,4,5};
二级C程序基础教学第九章数组通过赋初值定义二维数组的大小inta[][3]={{1,2,3},{4,5},{6},{8}};第一维大小由行数来决定。inta[][3]={1,2,3,4,5};第一维大小由以下规则决定:a、当初值的个数能被第二维的常量表达式的值整除时,所得商数就是第一维的大小。b、当初值的个数不能被第二维的常量表达式的值整除时,第一维的大小=所得商数+1
二级C程序基础教学第九章数组二维数组的定义和数组元素引用举例inta[M][N];for(i=0;i<M;i++)for(j=0;j<N;j++)scanf(“%d”,&a[i][j]);for(i=0;i<M;i++)for(j=0;j<N;j++)printf(“%d”,&a[i][j]);二级C程序基础教学第九章数组二维数组和指针int*p,a[3][4]二维数组a由若干个一维数组组成a[0]、a[1]、a[2]是一维数组名,代表一个不可变的地址常量,其值为二维数组每行第一个元素的地址,其基类型就是数组元素的类型。二级C程序基础教学第九章数组二维数组和指针int*p,a[3][4]二维数组a也是一个地址值常量二维数组名也是一个存放地址常量的指针,其值为二维数组中第一个元素的地址。以上a数组,a的值和a[0]的值相同,但其基类型为具有4个整型元素的数组类型。a+0、a+1、a+2分别表示a数组中第一、第二、第三行的首地址。二级C程序基础教学第九章数组二维数组和指针int*p,a[3][4]二维数组元素的地址&a[i][j]a[i]+j*(a+i)+j&a[0][0]+4*i+ja[0]+4*i+j以上地址的基类型为int类型a[i][j]*(a[i]+j)*(*(a+i)+j)(*(a+i))[j]*(&a[0][0]+4*I+j)二级C程序基础教学第九章数组建立一个指针数组引用二维数组元素int*p[3],a[3][2],i,j;for(i=0;i<3;i++)p[i]=a[i];二级C程序基础教学第九章数组建立一个指针数组引用二维数组元素p数组的每个元素都指向a数组每行的开头时,则a数组元素a[i][j]的引用形式*(a[i]+j)和*(p[i]+j)是完全等价的。二级C程序基础教学第九章数组建立一个行指针引用二维数组元素inta[3][2],(*prt)[2];这里a的类型和prt的类型相同,都是包含两个int元素的数组。不同的是prt是个指针变量,是可变的,而a是一个常量。二级C程序基础教学第九章数组二维数组名作为实参时的数据传递当二维数组名为实参时,对应的形参必须是一个行指针变量。
doubles[M][N];fun(s);形参:fun(double(*a)[N])fun(doublea[][N])fun(doublea[M][N])二级C程序基础教学第九章数组指针数组名作为实参时的数据传递当指针二维数组名为实参时,
*ps[M];fun(ps);形参:fun(double*a[M])fun(double*a[])fun(double**a)二级C程序基础教学第十章字符串c语言本身并没有设置一种类型来定义字符串变量,字符串的存储完全依赖于字符数组,但字符数组又不等于是字符串变量。二级C程序基础教学第十章字符串用一维字符数组存放字符串
在C语言中,字符串是借助字符型一维数组来存放的,并规定以字符‘\0’作为字符串结束标志,占用存储空间但不计入字符串的实际长度。字符串常量是由双引号括起来的一串字符,不需要人为的在其末尾加入‘\0’,c编译程序自动在末尾加‘\0’。字符串常量占用内存中一串连续的存储空间,这些连续的存储空间实际上是字符型一维数组。数组虽然没有名字,但c语言编译系统却以字符串常量的形式给出存放每一字符串的存储空间的首地址。二级C程序基础教学第十章字符串用一维字符数组存放字符串字符数组和字符串的区别字符数组的每个元素中可存放一个字符,但不限定最后一个字符应该是什么。在c语言中,有关字符串的大量操作都与串结束标志‘\0’有关,因此,在字符数组中的有效字符后面加上‘\0’,可以把一维字符数组看作字符串“变量”。二级C程序基础教学第十章字符串用一维字符数组存放字符串通过赋初值的方式给一维字符数组赋字符串Charstr[10]={‘s’,’t’,’r’,’i’,’n’,’g’,’!’,’\0’};Charstr[]={‘s’,’t’,’r’,’i’,’n’,’g’,’!’,’\0’};当赋初值的字符个数少于数组的元素个数时,系统将自动在其后的元素加入‘\0’,如果一个字符数组用来作为字符串使用,数组大小将比实际存放最长字符串多一个元素,从而在末尾存放‘\0’留有空间。
二级C程序基础教学第十章字符串用一维字符数组存放字符串通过赋初值的方式给一维字符数组赋字符串Charstr[]={‘s’,’t’,’r’,’i’,’n’,’g’,’!’};//字符数组Charstr[10]={“string!”};简写成charstr[10]=“string!”;Charstr[]=“string!”;注意:不可以用赋值语句给字符串数组整体赋一串字符。如Charmark[10];mark=“string!”二级C程序基础教学第十章字符串用一维字符数组存放字符串给字符数组逐个赋字符值,最后人为加入串结束标志。charmark[10];inti;for(i=0;i<9;i++)scanf(“%c”,&mark[i]);mark[i]=‘\0’;二级C程序基础教学第十章字符串使指针指向一个字符串Char*ps1=“formone”;或者Charstr[]=“formone”,*ps2=str;或者Char*ps1;ps1=“formone”;或者charstr[]=“formtwo”,*ps2;Ps2=str;二级C程序基础教学第十章字符串用字符数组作为字符串和用指针指向字符串的区别charmark[]=“program”;Char*pmark=“program”;二级C程序基础教学第十章字符串字符串的输入和输出当对字符串进行输出时,输出项既可以是字符串常量或字符数组名,也可以是已指向字符串的字符指针变量。当对字符串进行输入时,输出项可以是字符数组名,也可以是字符指针变量。二级C程序基础教学第十章字符串字符串的输入和输出在scanf函数中使用%s实现整体输入。
Scanf(“%s”,str_adr);
注意:%s输入时,空格和回车符是输入数据的分隔符而不能被读入。在printf函数中使用格式说明符%s实现整体输出
printf(“%s”,str_adr);
注意:输出结束后不自动换行。二级C程序基础教学第十章字符串字符串的输入和输出gets函数的调用形式
gets(str_adr);
注意:gets函数用来从终端键盘读入字符串(包括空格符),直到读入一个换行符为止。换行符读入后,不作为字符串的内容,系统自动用‘\0’代替。puts函数的调用形式puts(str_adr);
注意:输出结束时自动输出一个换行符。二级C程序基础教学第十章字符串字符串数组charname[10][80];或者charca[3][5]={“A”,”BB”,”CCC”};或者charca[][5]={“A”,”BB”,”CCC”};或者char*pa[3]={“a”,”bb”,”ccc”};二级C程序基础教学第十章字符串用于字符串处理的函数#include<string.h>字符串复制函数strcpystrcpy(s1,s2)作用:把s2所指字符串的内容复制到s1所指的存储空间中,函数返回s1的值。
字符串连接函数strcatstrcat(s1,s2)作用:把s2所指
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 慢性肝炎病毒携带者的肝功能监测方案
- 儿科细菌感染措施培训
- 肾内科慢性肾病患者透析方案
- 急性肾盂肾炎护理方案
- 肺结核传染控制措施培训
- 癌痛规范化治疗护理
- 膀胱癌患者化疗护理培训
- 2026届湖南省湘西土家族苗族自治州初中物理毕业考试模拟冲刺卷(含答案解析)
- 2026年剧本杀实体店创业计划书
- 2026年教育数据伦理与隐私保护策略
- 利多卡因凝胶安全性分析-洞察及研究
- 水专题测试卷-高考地理二轮复习讲练测(解析版)
- 剪力墙渗水注浆施工方案
- 我国行政监督中存在的问题及其对策
- 我会自己晾衣服教案
- (粤教粤科2024版)科学二年级上册2.6 运用感觉器官 课件(新教材)
- 美丽的沙滩课件观看
- 养羊畜牧专业毕业论文
- 低压电容柜维护手册
- 汽车电子技术发展
- 【《Y公司5层宿舍楼建筑与结构设计》15000字(论文)】
评论
0/150
提交评论