版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言期末复习大纲幸运C语言期末复习大纲幸运考试的主要题型和分数分布:1单项选择题(10小题,每题2分,共20分)2填空题(每空1分,共10分)3阅读程序(每题2分,共10分)4程序填空(每空2分,共40分)5编写程序(2小题,每题10分,共20分)幸运考试的主要题型和分数分布:幸运第一章C语言概述幸运第一章C语言概述幸运
第1章C语言概述本章包含4项目重点内容:1简单的C语言程序#include<stdio.h>voidmain(){printf("ThisisaCprogram.\n");}幸运
第1章C语言概述幸运
2VC++6.0环境:编辑C语言源程序后缀是.c或.cpp经过编译产生目标文件,后缀是.obj再经过连接成为可执行文件,后缀是.exe3C语言是结构化程序,有三种结构(1)顺序结构;(2)选择结构;(3)循环结构;幸运
2VC++6.0环境:幸运4C语言是由函数组成的,其中必须有一个并且只有一个主函数main,程序的执行从main函数开始,到main函数结束.幸运4C语言是由函数组成的,其中必须有一个并且只有一个主函数第二章数据类型、运算符与表达式幸运第二章数据类型、运算符与表达式幸运C的数据类型C语言提供了以下一些数据类型。
数据类型构造类型指针类型空类型(无值类型)void枚举类型enum数组类型结构类型struct联合类型
union基本类型整型int字符型char实型(浮点型)单精度实型
float双精度实型
double幸运C的数据类型C语言提供了以下一些数据类型。
常量与变量
常量和符号常量在程序运行过程中,其值不能被改变的量称为常量常量区分为不同的类型:整型100,125,-100,0实型3.14,0.125,-3.1e3字符型‘a’,’\057’,‘\x3c’字符串“a”,“ab”,”1232”定义字符常量:#definePI3.1415926#defineN20幸运常量与变量常量和符号常量整型100,125,-10
变量命名的规定:C语言规定标识符:1只能由字母、数字和下划线三种字符组成;(注意不要混淆下划线_和杠号(减号)-)2第一个字符必须为字母或下划线;3不能使用关键字.
例:sum,_123,m123,Student_name1
12a,Jo-hn,¥123,a#b,int
幸运变量命名的规定:幸运整型常量的表示方法整型常量即整常数。在C语言中,整常数可用以下三种形式表示:(1)十进制整数。
如:123,-456(2)八进制整数。以0开头的数是八进制数。
如:0123表示八进制数123,等于十进制数830129非法(每位0-7合法)(3)十六进制整数。以0x开头的数是16进制数。如:0x123,代表16进制数123,等于十进制数291而0x12g非法(每位0-f合法)幸运整型常量的表示方法幸运
字符型数据
字符常量(1)用单引号包含的单个字符(2)用单引号包含的由\开始的转义字符例‘a’,’A’,‘1’,’\037’,’\x2d’‘abc’,“a”,’\082’,’\x5g’
幸运字符型数据字符常量例‘a’,’A’,‘1’,’\0字符串常量字符串常量是一对双引号括起来的字符序列.合法的字符串常量:“Howdoyoudo.”,“CHINA”,“a”,“$123.45”可以输出一个字符串,如
printf(“Howdoyoudo.”);幸运字符串常量幸运C运算符简介C的运算符有以下几类:(1)算术运算符(+-*/%)(2)关系运算符(><==>=<=!=)(3)逻辑运算符(!&&||)(4)位运算符(<<>>~|∧&)(5)赋值运算符(=及其扩展赋值运算符)(6)条件运算符(?:)幸运C运算符简介幸运算术运算符和算术表达式基本的算术运算符:+(加法运算符或正值运算符如:3+5、+3)-(减法运算符或负值运算符,如:5-2、-3)*(乘法运算符。如:3*5)/(除法运算符,实数相除结果是双精度实数,整数相除结果是整数;两数同号结果是正数,两数异号结果是负数,且舍入得方向不固定,Vc++是“向0取整)%(求余运算符,%两侧必须为整型数据,结果与被除数一致。)幸运算术运算符和算术表达式幸运
自增、自减运算符作用是使变量的值增1或减1如:++i,--i(在使用i之前,使i+1或-1)
i++,i--(在使用i之后,使i+1或-1)
就是使用i的原值执行本条语句,
而在执行下条语句前将i+1或-1
intm=5,n=10;printf("%d,%d\n",m++,--n);
显示5,9若再有:printf(“%d\n”,m);显示6幸运幸运赋值运算符
赋值符号“=”就是赋值运算符,它的作用是将一个数据赋给一个变量,如a=5;(单等号)而a==5是判断a是否等于5;(双等号)如inta=3;if(a==2)为假,而if(a=5)为真。幸运赋值运算符幸运第三章最简单的c程序设计--顺序程序设计幸运第三章最简单的c程序设计--顺序程序设计幸运C语句概述C程序源程序文件1源程序文件2源程序文件n预处理命令函数n函数1数据声明函数首部函数体数据声明执行语句幸运C语句概述C程序源程序文件1源程序文件2源程序文件
C语句概述控制语句完成一定的控制功能 1if()~else条件语句6break间断语句 2for()~循环语句7switch()开关语句 3while()~循环语句8goto转向语句 4do~while();循环语句9return返回语句 5continue继续语句幸运C语句概述控制语句完成一定的控制
格式输入与输出(一).格式输出函数函数作用:向终端(或系统隐含指定的输出设备)输出若干个任意类型的数据。一般格式:printf(格式控制,输出表列)%d:以带符号的十进制形式输出整数%o:以八进制无符号形式输出整数%x:以十六进制无符号形式输出整数幸运格式输入与输出(一).格式输出函数%d:以带符号的
格式输入与输出%u:以无符号十进制形式输出整数%c:以字符形式输出,只输出一个字符%s:输出字符串%f:以小数形式输出单,双精度数,隐含输出六位小数%e:以指数形式输出实数%g:选用%f或%e格式中输出宽度较短的一种格式,不输出无意义的0幸运格式输入与输出%u:以无符号十进制形式输出整数幸
格式输入与输出用printf和scanf函数输出和输入数据。
#include<stdio.h>
intmain()
{
inta,b,c;
scanf(“%d,%d,%d”,&a,&b,&c);
printf(“%d,%d,%d\n”,a,b,c);
}
运行情况:
3,4,5(输入a,b,c的值)
3,4,5(输出a,b,c的值)表示a在内存中的地址其中,&是地址运算符幸运格式输入与输出用printf和scanf函数
在格式输入与输出中
格式控制是用双引号包括的,其中一般带有%d,%c,%f,%s等各种对数据类型的要求.幸运在格式输入与输出中
格式控制是用双引号包括的,其第四章选择结构程序设计幸运第四章选择结构程序设计幸运
关系运算符和关系表达式1.关系运算符及其优先次序<(小于)<=(小于或等于)>(大于)>=(大于或等于)==(等于)!=(不等于)优先级相同(高)优先级相同(低)说明:关系运算符的优先级低于算术运算符关系运算符的优先级高于赋值运算符幸运关系运算符和关系表达式1.关系运算符及其优先次序优先级
关系运算符和关系表达式2.关系表达式用关系运算符将两个表达式(可以是算术表达式或关系表达式,逻辑表达式,赋值表达式,字符表达式)接起来的式子,称关系表达式例:a>b,a+b>b+c,(a=3)>(b=5),’a’<‘b’,(a>b)>(b<c)关系表达式的值是一个逻辑值,即“真”或“假”。例:关系表达式”a>b”的值为“真”,表达式的值为1。C语言中没有专用的逻辑值,1代表真,0代表假幸运关系运算符和关系表达式2.关系表达式C语言中没有专用的
逻辑运算符和逻辑表达式1.逻辑运算符及其优先次序(1)&&(逻辑与)(2)||(逻辑或)(3)!(逻辑非)
优先次序:逻辑非!算术运算符关系运算符逻辑与或
赋值运算符
或运算中有1,值为1,与运算中有0,值为0幸运逻辑运算符和逻辑表达式优先次序:幸运if语句2.If语句的嵌套在if语句中又包含一个或多个if语句称为if语句的嵌套。形式:if()
if()语句1 else语句2else
if()语句3 else语句4内嵌if幸运if语句2.If语句的嵌套内嵌if幸运if语句如inta=3,b=4,c=5;if(a<b)a=b;b=c;c=a;if(a>b)a=b;b=c;c=a;第1个,因为a<b,所以a=b;b=c;c=a;都执行,第2个,因为a不大于b,所以不执行a=b;只执行b=c;c=a;
那么a,b,c是4,5,4那么a,b,c是3,5,3幸运if语句那么a,b,c是4,5,4那么a,b,c条件运算符格式:表达式1?表达式2∶表达式3功能:判断表达式1的值,如果成立就执行表达式2,否则就执行表达式3max=(a>b)?a:b;min=(a<b)?a:b;幸运条件运算符幸运if语句例:输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。
#include<stdio.h>
voidmain()
{charch;
scanf(“%c”,&ch);
ch=(‘A’<=ch&&ch<=‘Z’)?(ch+32):ch;
printf(“%c\n”,ch);
}
//注意:不能用‘A’<=ch<=‘Z’,它永远为真如果字符变量ch的值为大写字母,则条件表达式的值为(ch+32),即相应的小写字母。如果ch的值不是大写字母,则条件表达式的值为ch,即不进行转换。
幸运if语句例:输入一个字符,判别它是否大写字母,如几个典型的判断:判断大写字母:if(‘A’<=c&&c<=‘Z’)判断小写字母:if(‘a’<=c&&c<=‘z’)判断数字:if(‘0’<=c&&c<=‘9’)判断闰年:if((year%4==0&&year%100!=0)||year%400==0)幸运几个典型的判断:幸运注意:例如在判断数字中:if(‘0’<=c&&c<=‘9’)不可以没有&&,也不能没有’’即不能用if(‘0’<=c<=‘9’)也不能用
if(0<=c&&c<=9)但可以用
if(48<=c&&c<=57)(想想为什么?)幸运注意:例如在判断数字中:幸运用switch语句实现(若a是整数)按照考试成绩输出等级百分制分数段
switch((a/10))
{case10: case9:grade='A';break; case8:grade='B';break; case7:grade='C';break; case6:grade='D';break;
default:grade='E'; }幸运用switch语句实现(若a是整数)幸运第五章循环结构程序设计幸运第五章循环结构程序设计幸运
用while语句实现循环while语句用来实现“当型”循环结构。一般形式:
while(表达式)语句当表达式为非0值时,执行while语句中的内嵌语句。其特点是:先判断表达式,后执行语句。幸运用while语句实现循环while语句用来实现“当型
求正整数m和n的最大公约数和最小公倍数:
#include<stdio.h>
voidmain()
{
intp,r,n,m;
printf("请输入两个正整数n,m:");
scanf("%d,%d,",&n,&m);
p=n*m;
while(m!=0)
{r=n%m;n=m;m=r;}
printf("它们的最大公约数为:%d\n",n);
printf("它们的最小公倍数为:%d\n",p/n);}幸运求正整数m和n的最大公约数和最小公倍数:
#include其中用下面的辗转相除法求出最大公约数nwhile(m!=0){r=n%m;n=m;m=r;}把它独立出来就是一个函数inthcf(intm,intn){intr;while(m!=0)
{r=n%m;n=m;m=r;}return(n);}用p/n得到最小公倍数
幸运其中用下面的辗转相除法求出最大公约数n幸运
用do-while语句实现循环
do-while语句的特点:先执行循环体,然后判断循环条件是否成立。一般形式:
do{循环体语句}while(表达式);执行过程:先执行一次指定的循环体语句,然后判别表达式,当表达式的值为非零(“真”)时,返回重新执行循环体语句,如此反复,直到表达式的值等于0为止,此时循环结束。幸运用do-while语句实现循环do-while语例如:为了保证输入成绩的正确,可以使用语句:printf("请输入学生成绩a(0-100):");scanf("%d",&a);while(a<0||a>100){printf("\n输入有误,请重输:");scanf("%d",&a);}
幸运例如:为了保证输入成绩的正确,可以使用语句:幸运
我们更简洁地用do-while语句do
{printf(“请输入成绩a(0-100):”);scanf(“%d”,&a);}while(a<0||a>100);
注意while(a<0||a>100);的含义和;号
幸运我们更简洁地用do-while语句幸运
用do-while语句计算10!i=1;s=1;do{s=s*i;i++;}while(i<=10);不是:i=1;s=0;do{s=s*i;i++;}while(i<=10);也不是:do{i=1;s=1;s=s*i;i++;}while(i<=10);do{i=1;s=0;s=s*i;i++;}while(i<=10);幸运用do-while语句计算10!幸运while语句和用do-while语句的比较:while是先判断条件,再决定是否执行,所以可能一次也不执行;do-while是先执行再判断条件,决定是否还执行,所以至少执行一次.幸运while语句和用do-while语句的比较:幸运
用for语句实现循环C语言中的for语句使用最为灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况,它完全可以代替while语句。一般形式:
for(表达式1;表达式2;表达式3)语句幸运用for语句实现循环幸运注意:for中用两个分号隔开,不能省略;for只对其后第一个语句有效,如果要求对多条语句有效,必须用花括号括之成为复合语;for()后通常没有分号,有分号将不执行任何语句,只执行自己的循环;
幸运注意:幸运下面是用for语句显示数组a中的最小值的程序#include<stdio.h>voidmain(){inta[5]={4,2,8,9,5},i,min;min=a[0];for(i=1;i<5;i++)if(min>a[i])min=a[i];printf("%d\n",min);}幸运下面是用for语句显示数组a中的最小值的程序break语句和continue语句
break语句
break语句可以用来从循环体内跳出循环体,即提前结束循环.
一般形式:
break;注意:break语句只能用于循环语句或switch语句中。
幸运break语句和continue语句break语句
continue语句作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次循环的判定.一般形式:
continue;幸运continue语句幸运例把100~200之间的不能被3整除的数输出。
#include<stdio.h>
voidmain()
{intn;
for(n=100;n<=200;n++)
{if(n%3==0)continue;
printf(″%d″,n);
}
}
注意是把能被3整除的跳过.不能用n%3!=0幸运例把100~200之间的不能被3整除的数输出。
#in
判断m是否素数。
#include<stdio.h>
#include<math.h>
voidmain()
{intm,i,k;
scanf(″%d″,&m);
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)break;
if(i>k)printf("%disaprimenumber\n″,m);
elseprintf("%disnotaprimenumber\n″,m);
}幸运判断m是否素数。
#include<stdio.h>
也可以是:
#include<stdio.h>
#include<math.h>
voidmain()
{intm,I,k,flag=1;
scanf(″%d″,&m);
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0){flag=0;break;}
if(flag)printf("%disaprimenumber\n″,m);
elseprintf("%disnotaprimenumber\n″,m);
}幸运也可以是:
#include<stdio.h>
#inc第六章数组幸运第六章数组幸运
一维数组
所谓数组就是一组具有相同数据类型的数据的有序集合。幸运一维数组所谓数组就是一组具有相同数据类型的数据的有序一维数组的定义格式为:例如:
inta[10];或者是:#defineN10;inta[N];(方括号中必须是常数)注意:1此数组有10个元素.分别是a[0]-a[9]
注意:从0开始编号,没有数组元素a[10]2元素个数必须是常量.所以不可以:intn=10,a[n];//这里n是变量不可以用圆括号:inta(n);也不可是:intn,a[n];scanf(“%d”,&n);
幸运一维数组的定义格式为:幸运
字符数组的定义例如:charc[10]={‘I’,'‘,’a’,’m’,’‘,’h’,’a’,’p’,’p’,’y’};c[0]=′I′;c[1]=′′;c[2]=′a′;c[3]=′m′;c[4]=′′;c[5]=′h′;c[6]=′a′;c[7]=′p′;c[8]=′p′;c[9]=′y′;幸运字符数组的定义例如:幸运对字符串初始化,最好的方法是:例如:Charc[]=“Iamaboy”;
字符串的初始化幸运对字符串初始化,最好的方法是:字符串的初始化幸运字符串和字符串结束标志
为了测定字符串的实际长度,C语言规定了一个“字符串结束标志”——‘\0’。幸运字符串和字符串结束标志为了测定字符串的实际长度,C语字符数组的输入输出
字符数组的输入输出可以有两种方法:逐个字符输入输出。用格式符“%c”输入或输出一个字符。将整个字符串一次输入或输出。用“%s”格式符,意思是对字符串的输入输出。
幸运字符数组的输入输出字符数组的输入输出可以有两种方法:幸运
如果利用一个scanf函数输入给多个字符串,则在输入时以空格分隔。例如:charstrl[5],str2[5],str3[5];scanf(″%s%s%s″,str1,str2,str3);输入数据:Howareyou?数组中未被赋值的元素的值自动置′\0′。幸运如果利用一个scanf函数输入给多个字符串,则在输入1.puts函数其一般形式为:puts(str);
字符串处理函数
2.gets函数其一般形式为:gets(str);幸运1.puts函数字符串处理函数2.gets函数幸运说明:
用scanf(“%s”,str);只能输入单词(不包含空格),
而gets(str);可以输入句子(即可以包含空格);
注意不是gets(“%s”,str);
也不是gets(&str);
幸运说明:幸运3.strcat函数其一般形式为:strcat(字符数组1,字符数组2)Strcat的作用是连接两个字符数组中的字符串,把字符串2接到字符串1的后面幸运3.strcat函数幸运4.strcpy函数其一般形式为:strcpy(字符数组1,字符串2)
strcpy是“字符串复制函数”。作用是将字符串2复制到字符数组1中去。例如:charstr1[10],str2[]={″China″};strcpy(str1,str2);
幸运4.strcpy函数幸运关于strcpy函数的几点说明(1)字符数组1必须定义得足够大,以便容纳被复制的字符串。字符数组1的长度不应小于字符串2的长度。(2)“字符数组1”必须写成数组名形式(如str1),“字符串2”可以是字符数组名,也可以是一个字符串常量。如strcpy(str1,″China″);幸运关于strcpy函数的几点说明(1)字符数组1必须定义得足够(3)复制时连同字符串后面的′\0′一起复制到字符数组1中。幸运(3)复制时连同字符串后面的′\0′一起复制到字符数组1中。(4)不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。如:
str1=″China″;不合法
str1=str2;不合法用strcpy函数只能将一个字符串复制到另一个字符数组中去。用赋值语句只能将一个字符赋给一个字符型变量幸运(4)不能用赋值语句将一个字符串常量或字符数组直接给一个字符5.strcmp函数其一般形式为:strcmp(字符串1,字符串2)例如:strcmp(str1,str2);strcmp(″China″,″Korea″);strcmp(str1,″Beijing″);幸运5.strcmp函数幸运比较的结果由函数值返回(1)
如果字符串1=字符串2,函数值为0。(2)
如果字符串1>字符串2,函数值为1。(3)
如果字符串1<字符串2,函数值为-1。注意:判断str1是否大于str2,不能用以下式:if(str1>str2)只能用if(strcmp(str1,str2)>0)幸运比较的结果由函数值返回幸运6.strlen函数其一般形式为:strlen(字符数组)strlen是测试字符串长度的函数。函数的值为字符串中的实际长度(不包括′\0′在内)。例如:charstr[10]={″China″};printf(″%d″,strlen(str));输出结果不是10,也不是6,而是5,即有效字符数.幸运6.strlen函数幸运strlwr(字符串)
strlwr函数7.strlwr函数其一般形式为:的作用是将字符串中大写字母换成小写字母。8.strupr函数其一般形式为:strupr(字符串)strupr函数的作用是将字符串中小写字母换成大写字母。
幸运strlwr(字符串)8.strupr函数幸运使用字符串函数时,必须包括字符串函数库:#include<string.h>幸运使用字符串函数时,必须包括字符串函数库:幸运我们可以不使用字符串函数编写程序:例如:不使用strcat连接两个字符串;不使用strcpy拷贝字符串;不使用strcmp比较字符串;幸运我们可以不使用字符串函数编写程序:幸运不使用strcpy拷贝字符串:1用数组:For(i=0;i<=strlen(s2);i++)S1[i]=s2[i];2用指针:p1=s1;p2=s2;while(*p1++=*p2++);寻找字符串尾:while(s1[i])i++;i就是字符串尾的下标,再拷贝就是连接。幸运不使用strcpy拷贝字符串:幸运第七章函数幸运第七章函数幸运
简单的C语言函数#include<stdio.h>/*文件包含*/voidmain()/*主函数*/{/*函数体开始*/printf(“ThisisaCprogram.\n”);/*函数体语句*/}/*函数体结束*/
幸运简单的C语言函数#include<stdio.h>说明:main是主函数名,void是函数类型每个C程序是由若干函数组成的,其中必有一个并且只能有一个主函数main()每个C程序从main函数开始执行,到main函数结束,即执行的是主函数的函数体,与主函数main在程序中的位置无关;幸运说明:幸运{}是函数开始和结束的标志,不可省略;每个C语句以分号结束;在主函数中直接或间接调用其他函数;使用标准输入出库函数时应写:#include<stdio.h>使用数学库函数和字符串函数时应写:#include<math.h>#include<string.h>幸运幸运
一个函数由两部分组成:
函数的首部:例1.3中的max函数首部
intmax(intx,inty)
函数体:花括号内的部分。若一个函数有多个花括号,则最外层的一对花括号为函数体的范围。幸运幸运
函数定义的一般形式
类型标识符函数名(形式参数表列){
声明部分
语句部分}其中类型标识符是函数返回值的数据类型,如:int,charfloat,double等,也可以是无返回值,写为void.也可以没有形式参数表列,称为无参函数.幸运函数定义的一般形式类型标识符函数名(形式参数表列)幸例如:intmax(intx,inty){intz;/*函数体中声明部分*/z=x>y?x∶y;/*函数体中语句部分*/
return(z);/*返回值*/
}
幸运例如:幸运
函数参数和函数的值形式参数和实际参数
形式参数:函数名后面括弧中的变量名称为“形式参数”(简称“形参”);实际参数:主调函数中调用一个函数时,函数名后面括弧中的参数(可以是一个表达式)称为“实际参数”(简称“实参”);函数返回值:return后面的括弧中的值作为函数带回的值(称函数返回值)。幸运函数参数和函数的值形式参数:函数名后面括弧中的变量名称为说明:
1.函数的返回值是通过函数中的return语句获得的。一个函数中可以有一个以上的return语句,执行到哪一个return语句,哪一个语句起作用。幸运说明:幸运
函数的调用
对被调用函数的声明和函数原型在一个函数中调用另一函数(即被调用函数)需要具备哪些条件呢?1.首先被调用的函数必须是已经存在的函数(是库函数或用户自己定义的函数)。幸运函数的调用在一个函数中调用另一函数(即被调用函数)需要3.如果使用用户自己定义的函数,而该函数的位置在调用它的函数(即主调函数)的后面,应该在主调函数中对被调用的函数作声明,即写上函数的原型。用函数首部加上;号表示函数声明.2.如果使用库函数,还应该在本文件开头用#include命令将调用有关库函数时所需用到的信息“包含”到本文件中来。如#include<stdio.h>#include<math.h>#include<string.h>幸运3.如果使用用户自己定义的函数,而该函数的位置在调用它的函数函数调用的实例(求两整数的最大公约数):#include<stdio.h>voidmain(){inthcf(intu,intv);//函数声明intu,v,h;scanf("%d,%d",&u,&v);h=hcf(u,v);printf("%d,%d的最大公约数是:%d\n",u,v,h);}//函数定义inthcf(intu,intv)//函数首部{intr;while(v!=0){r=u%v;u=v;v=r;}return(u);}幸运函数调用的实例(求两整数的最大公约数):幸运
局部变量和全局变量局部变量
在一个函数内部定义的变量是内部变量,它只在本函数范围内有效,也就是说只有在本函数内才能使用它们,在此函数以外是不能使用这些变量的。这称为“局部变量”。
幸运局部变量和全局变量在一个函数内部定义的变量是内部变量,它全局变量在函内定义的变量是局部变量,而在函数外定义的变量称为外部变量,也称全局变量.静态局部变量是函数中保持最近值不释放的变量在函数中用下面方式定义:staticintc=7;幸运全局变量在函内定义的变量是局部变量,而在函数外定义的变量称为
考察静态局部变量的值#include<stdio.h>voidmain(){intf(inta);
inta=2,i;for(i=0;i<3;i++)
printf(″%d″,f(a));}intf(inta){intb=0;staticint
c=3;b=b+3;c=c+2;return(a+b+c);}3次调用函数f后,c的值是9幸运考察静态局部变量的值幸运第八章指针幸运第八章指针幸运
地址和指针的概念内存区的每一个字节有一个编号,这就是“地址”。如果在程序中定义了一个变量,在对程序进行编译时,系统就会给这个变量分配内存单元。幸运地址和指针的概念内存区的每一个字节有一个编号,这就是“地址一个变量的地址称为该变量的“指针”。例如,地址2000是变量i的指针。如果有一个变量专门用来存放另一变量的地址(即指针),则它称为“指针变量”。指针和指针变量的定义:幸运一个变量的地址称为该变量的“指针”。指针和指针变量的定义:幸
指针变量的引用
注意:指针变量中只能存放地址(指针),不要将一个整数(或任何其他非地址类型的数据)赋给一个指针变量。
例通过指针变量访问整型变量#include<stdio.h>void
main(){inta;
int*p;a=100;
p=&a;/*把变量a的地址赋给p*/printf(“%d,%d\n”,a,*p);}幸运指针变量的引用注意:指针变量中只能存放地址(指针),例对“&”和“*”运算符说明:如果已执行了语句p=&a那么:那么a和*p是相同的值所以,如果a=3;Printf(“%d,%d”,a,*p);显示是3,3所以,如果*p=6;Printf(“%d,%d”,a,*p);显示是6,6幸运对“&”和“*”运算符说明:幸运
指针变量作为函数参数例10.3对输入的两个整数按大小顺序输出
#include<stdio.h>voidmain(){voidswap(int*p1,int*p2);
inta,b;
int*p1,*p2;
scanf(″%d,%d″,&a,&b);
p1=&a;p2=&b;
if(a<b)
swap(p1,p2);
printf(″\n%d,%d\n″,a,b);}幸运指针变量作为函数参数例10.3对输入的两个整数按大voidswap(int*p1,int*p2){inttemp;
temp=*p1;
*p1=*p2;
*p2=temp;}幸运voidswap(int*p1,int*p2)幸运下面的函数:voidswap(inta,intb){inttemp;
temp=a;
a=b;
b=temp;/*只在函数中交换了局部变量*/
}同样不可用函数:voidswap(int*p,intb)或voidswap(inta,int*p)只能用函数voidswap(int*p1,int*p2)处理主调用函数中的变量幸运下面的函数:幸运定义一个指向数组元素的指针变量的方法例如:inta[10],*p;
p=a;(a是数组的首地址,注意a前没有地址符)
或p=&a[0];虽然a和p都是地址,它们是不同的:a是数组的首地址,一旦由系统分配,就是一个固定的值;而p是指针变量,是可以改变的.所以a++是错误的,而p++是正确的.
指向数组元素的指针幸运定义一个指向数组元素的指针变量的方法指向数组元素的指针幸运10.3.2通过指针引用数组元素如果inta[6],*p=a;引用一个数组元素,可以用:(1)下标法,如a[i]形式;(2)地址或指针法,如*(a+i)或*(p+i)注意:a[0]-a[5]合法,a[6]非法;*(a)-*(a+5)合法,*(a+6)非法;*(p)-*(p+5)合法,*(p+6)非法;幸运10.3.2通过指针引用数组元素如果inta[6],*p
字符串与指针字符串的表示形式
例定义一个字符数组,对它初始化,然后输出该字符串
#include<stdio.h>voidmain(){char*s=″abcdefg″;
printf(″%s\n″,s);}输出abcdefg(1)用字符数组存放一个字符串,然后输出该字符串。幸运字符串与指针字符串的表示形式例定义一个字符数组,输出cdefg的语句是:printf(″%s\n″,s+2);s+2是指针输出efg的语句是:printf(″%s\n″,s+4);s+4是指针输出字符f的语句是:printf(″%c\n″,*(s+5));*(s+5)是字符注意:输出字符串用%s和指针;输出字符用%c和*(指针)幸运输出cdefg的语句是:幸运指针运算与数据:#include<stdio.h>voidmain(){inta[5]={2,4,6,8,10},*p;p=a;printf("%d,",*(p+2));printf("%d,",*++p);printf("%d,",*p++);printf("%d\n",*++p);}显示6,4,4,8注意1p+2没有改变p的值;注意2++p,和p++的区别.幸运指针运算与数据:幸运调用函数实现数组的相反顺序存放:#include<stdio.h>voidmain(){voidinv(intx[],intn);//函数声明
inti,a[10]={3,7,9,11,0,6,7,5,4,2};printf("Theoriginalarray:\n");for(i=0;i<10;i++)printf("%d",a[i]);printf("\n");inv(a,10);//调用函数
printf("Thearrayhasbeeninverted:\n");for(i=0;i<10;i++)printf("%d",a[i]);printf("\n");}幸运调用函数实现数组的相反顺序存放:幸运//用数组元素:voidinv(intx[],intn){inttemp,i,j,m=(n-1)/2;for(i=0;i<=m;i++){j=n-1-i;temp=x[i];x[i]=x[j];x[j]=temp;}}幸运//用数组元素:幸运//或用指针:voidinv(int*x,intn){int*p,temp,*i,*j,m=(n-1)/2;i=x;j=x+n-1;p=x+m;for(;i<=p;i++,j--){temp=*i;*i=*j;*j=temp;}}这时函数声明要改成:voidinv(int*x,intn);幸运//或用指针:幸运用选择法实现数组从大到小排序的函数:voidsort(intx[],intn){inti,j,k,t;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(x[j]>x[k])k=j;if(k!=i) {t=x[i];x[i]=x[k];x[k]=t;}}}幸运用选择法实现数组从大到小排序的函数:幸运第九章用户建立的数据类型--结构体幸运第九章用户建立的数据类型--结构体幸运问题定义:
有时需要将不同类型的数据组合成一个有机的整体,以便于引用。如:一个学生有学号/姓名/性别/年龄/地址等intnum;charname[20]; charsex;intage;charaddr[30];
幸运问题定义:幸运
声明一个结构体类型的一般形式为:
struct
结构体名{成员表列};如:struct
student{
int
num;char
name[20];char
sex;
int
age;float
score;char
addr[30];}
结构体名类型名成员名幸运声明一个结构体类型的一般形式为:结构体名类型名成员名幸运
定义结构体类型变量的方法可以采取以下3种方法定义结构体类型变量:先声明结构体类型再定义变量名例如:structstudent
student1,student2;|||
结构体类型名结构体变量名
定义了student1和student2为structstudent类型的变量,即它们具有structstudent类型的结构.
图9-2student1100101ZhangXinM1990.5Shanghai100102WangLiF2098Beijingstudent2幸运定义结构体类型变量的方法可以采取以下3种方法定义结构体引用结构体变量中成员的方式为结构体变量名.成员名例如,
student1.num表示student1变量中的num成员,即student1的num(学号)项。可以对变量的成员赋值和运算
student1.num=10010幸运引用结构体变量中成员的方式为幸运但不能用以下语句整体读入结构体变量,例如:
scanf(″%d,%s,%c,%d,%f,%s″,&student1);
结构体变量的地址主要用作函数参数,传递结构体变量的地址。
对结构体变量初始化.
#include<stdio.h>
voidmain()
{structstudent
{longintnum;
charname[20];
charsex;
charaddr[20];
}a={10101,″LiLin″,′M′,″123BeijingRoad″};/*对结构体变量a赋初值*/
printf(″No.:%ld\nname:%s\nsex:%c\naddress:%s\n″,a.num,,a.sex,a.addr);
}
幸运但不能用以下语句整体读入结构体变量,对结构体变量初始化.
结构体数组
一个结构体变量中可以存放一组数据(如一个学生的学号、姓名、成绩等数据)。如果有10个学生的数据需要参加运算,显然应该用数组,这就是结构体数组。结构体数组与以前介绍过的数值型数组不同之处在于每个数组元素都是一个结构体类型的数据,它们都分别包括各个成员项。幸运结构体数组一个结构体变量中可以存放一组数据(如一定义结构体数组
和定义结构体变量的方法相仿,只需说明其为数组即可。例如:structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];};structstudentstu[3];
以上定义了一个数组stu,数组有3个元素,均为structstudent类型数据。幸运定义结构体数组以上定义了一个数组stu,数组有3个元素,均结构体数组的初始化
与其他类型的数组一样,对结构体数组可以初始化。例如:structstudent{intnum;charname[20];charsex;
intage;floatscore;charaddr[30];};stu[2]={{10101,″LiLin″,′M′,18,87.5,″103BeijingRoad″},{10102,″ZhangFun″,′M′,19,99,″130ShanghaiRoad″}};
幸运结构体数组的初始化幸运例指向结构体变量的指针的应用
#include<string.h>
#include<stdio.h>
voidmain()
{structstudent{longnum;charname[20];
charsex;floatscore;};
structstudents;
structstudent*p;p=&s;
s.num=89101;strcpy(,”LiLin”);
s.sex=‘M’;s.score=89.5;
printf(″No.:%ld\nname:%s\nsex:%c\nscore:%f\n″,s.num,,s.sex,s.score);
printf(″No.:%ld\nname:%s\nsex:%c\nscore:%f\n″,(*p).num,(*p).name,(*p).sex,(*p).score);
}定义指针变量p,指向structstudent类型的数据p指向的结构体变量中的成员幸运例指向结构体变量的指针的应用
#include<str9.3.2指向结构体数组的指针
11.6.2指向结构体数组的指针例9.4指向结构体数组元素的指针的应用
#include<stdio.h>
structstudent
{intnum;charname[20];charsex;intage;};
structstudentstu[3]={{10101,″LiLin″,′M′,18},{10102,″ZhangFun″,′M′,19},{10104,″WangMing″,′F′,20}};
voidmain()
{structstudent*p;
printf(″No.Namesexage\n″);
for(p=str;p<str+3;p++)
printf(″%5d%-20s%2c%4d\n″,p->num,p->name,p->sex,p->age);
}运行结果:No.Namesexage10101LiLinM18
10102ZhangFun
M19
10104WangMing
F20
幸运9.3.2指向结构体数组的指针11.6.2指向结构体数所以s.num,(*p).num,p->num都表示学生s的学号,是正确的.而(*s).num,p.num,(*p)->num,p->.num都是错误的!
幸运所以s.num,(*p).num,p->num幸运常见错误举例幸运常见错误举例幸运1多写了分号voidmain();for(i=0;i<10;i++);while(m!=0);2把分号写成了逗号for(i=0,i<10,i++);3写错了&scanf(“%d”,a);//应该是&a,少了&gets(&str);//应该是str,多了&
幸运1多写了分号幸运4缺少函数体前后的花括号{}5printf,scanf中把双引号”写成单引号’
6语句后缺少分号c=a+b7数据声明中把逗号写成分号:把inta,b,c;写成:
inta;b;c;
幸运4缺少函数体前后的花括号{}幸运C语言期末复习大纲幸运C语言期末复习大纲幸运考试的主要题型和分数分布:1单项选择题(10小题,每题2分,共20分)2填空题(每空1分,共10分)3阅读程序(每题2分,共10分)4程序填空(每空2分,共40分)5编写程序(2小题,每题10分,共20分)幸运考试的主要题型和分数分布:幸运第一章C语言概述幸运第一章C语言概述幸运
第1章C语言概述本章包含4项目重点内容:1简单的C语言程序#include<stdio.h>voidmain(){printf("ThisisaCprogram.\n");}幸运
第1章C语言概述幸运
2VC++6.0环境:编辑C语言源程序后缀是.c或.cpp经过编译产生目标文件,后缀是.obj再经过连接成为可执行文件,后缀是.exe3C语言是结构化程序,有三种结构(1)顺序结构;(2)选择结构;(3)循环结构;幸运
2VC++6.0环境:幸运4C语言是由函数组成的,其中必须有一个并且只有一个主函数main,程序的执行从main函数开始,到main函数结束.幸运4C语言是由函数组成的,其中必须有一个并且只有一个主函数第二章数据类型、运算符与表达式幸运第二章数据类型、运算符与表达式幸运C的数据类型C语言提供了以下一些数据类型。
数据类型构造类型指针类型空类型(无值类型)void枚举类型enum数组类型结构类型struct联合类型
union基本类型整型int字符型char实型(浮点型)单精度实型
float双精度实型
double幸运C的数据类型C语言提供了以下一些数据类型。
常量与变量
常量和符号常量在程序运行过程中,其值不能被改变的量称为常量常量区分为不同的类型:整型100,125,-100,0实型3.14,0.125,-3.1e3字符型‘a’,’\057’,‘\x3c’字符串“a”,“ab”,”1232”定义字符常量:#definePI3.1415926#defineN20幸运常量与变量常量和符号常量整型100,125,-10
变量命名的规定:C语言规定标识符:1只能由字母、数字和下划线三种字符组成;(注意不要混淆下划线_和杠号(减号)-)2第一个字符必须为字母或下划线;3不能使用关键字.
例:sum,_123,m123,Student_name1
12a,Jo-hn,¥123,a#b,int
幸运变量命名的规定:幸运整型常量的表示方法整型常量即整常数。在C语言中,整常数可用以下三种形式表示:(1)十进制整数。
如:123,-456(2)八进制整数。以0开头的数是八进制数。
如:0123表示八进制数123,等于十进制数830129非法(每位0-7合法)(3)十六进制整数。以0x开头的数是16进制数。如:0x123,代表16进制数123,等于十进制数291而0x12g非法(每位0-f合法)幸运整型常量的表示方法幸运
字符型数据
字符常量(1)用单引号包含的单个字符(2)用单引号包含的由\开始的转义字符例‘a’,’A’,‘1’,’\037’,’\x2d’‘abc’,“a”,’\082’,’\x5g’
幸运字符型数据字符常量例‘a’,’A’,‘1’,’\0字符串常量字符串常量是一对双引号括起来的字符序列.合法的字符串常量:“Howdoyoudo.”,“CHINA”,“a”,“$123.45”可以输出一个字符串,如
printf(“Howdoyoudo.”);幸运字符串常量幸运C运算符简介C的运算符有以下几类:(1)算术运算符(+-*/%)(2)关系运算符(><==>=<=!=)(3)逻辑运算符(!&&||)(4)位运算符(<<>>~|∧&)(5)赋值运算符(=及其扩展赋值运算符)(6)条件运算符(?:)幸运C运算符简介幸运算术运算符和算术表达式基本的算术运算符:+(加法运算符或正值运算符如:3+5、+3)-(减法运算符或负值运算符,如:5-2、-3)*(乘法运算符。如:3*5)/(除法运算符,实数相除结果是双精度实数,整数相除结果是整数;两数同号结果是正数,两数异号结果是负数,且舍入得方向不固定,Vc++是“向0取整)%(求余运算符,%两侧必须为整型数据,结果与被除数一致。)幸运算术运算符和算术表达式幸运
自增、自减运算符作用是使变量的值增1或减1如:++i,--i(在使用i之前,使i+1或-1)
i++,i--(在使用i之后,使i+1或-1)
就是使用i的原值执行本条语句,
而在执行下条语句前将i+1或-1
intm=5,n=10;printf("%d,%d\n",m++,--n);
显示5,9若再有:printf(“%d\n”,m);显示6幸运幸运赋值运算符
赋值符号“=”就是赋值运算符,它的作用是将一个数据赋给一个变量,如a=5;(单等号)而a==5是判断a是否等于5;(双等号)如inta=3;if(a==2)为假,而if(a=5)为真。幸运赋值运算符幸运第三章最简单的c程序设计--顺序程序设计幸运第三章最简单的c程序设计--顺序程序设计幸运C语句概述C程序源程序文件1源程序文件2源程序文件n预处理命令函数n函数1数据声明函数首部函数体数据声明执行语句幸运C语句概述C程序源程序文件1源程序文件2源程序文件
C语句概述控制语句完成一定的控制功能 1if()~else条件语句6break间断语句 2for()~循环语句7switch()开关语句 3while()~循环语句8goto转向语句 4do~while();循环语句9return返回语句 5continue继续语句幸运C语句概述控制语句完成一定的控制
格式输入与输出(一).格式输出函数函数作用:向终端(或系统隐含指定的输出设备)输出若干个任意类型的数据。一般格式:printf(格式控制,输出表列)%d:以带符号的十进制形式输出整数%o:以八进制无符号形式输出整数%x:以十六进制无符号形式输出整数幸运格式输入与输出(一).格式输出函数%d:以带符号的
格式输入与输出%u:以无符号十进制形式输出整数%c:以字符形式输出,只输出一个字符%s:输出字符串%f:以小数形式输出单,双精度数,隐含输出六位小数%e:以指数形式输出实数%g:选用%f或%e格式中输出宽度较短的一种格式,不输出无意义的0幸运格式输入与输出%u:以无符号十进制形式输出整数幸
格式输入与输出用printf和scanf函数输出和输入数据。
#include<stdio.h>
intmain()
{
inta,b,c;
scanf(“%d,%d,%d”,&a,&b,&c);
printf(“%d,%d,%d\n”,a,b,c);
}
运行情况:
3,4,5(输入a,b,c的值)
3,4,5(输出a,b,c的值)表示a在内存中的地址其中,&是地址运算符幸运格式输入与输出用printf和scanf函数
在格式输入与输出中
格式控制是用双引号包括的,其中一般带有%d,%c,%f,%s等各种对数据类型的要求.幸运在格式输入与输出中
格式控制是用双引号包括的,其第四章选择结构程序设计幸运第四章选择结构程序设计幸运
关系运算符和关系表达式1.关系运算符及其优先次序<(小于)<=(小于或等于)>(大于)>=(大于或等于)==(等于)!=(不等于)优先级相同(高)优先
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 菜品加工合同范例
- 个人开店合伙合同范例
- 盖屋合同范例
- 合伙人退伙协议书范本详尽3篇
- 借款保证合同样本3篇
- 地质勘探用工合同样本2篇
- 合同验收的程序与实际操作3篇
- 便利店产品分类助理合同2篇
- 外墙广告制作合同范例
- 公司法人代持股份协议书3篇
- 班会课件 勿以恶小而为之勿以善小而不为
- 中医针灸治疗中风后语言障碍病例分析专题报告
- 医院消毒供应中心清洗、消毒、灭菌质控评分表
- 2022年学校寒假德育特色作业实践方案(详细版)
- 可爱卡通插画风读书分享通用PPT模板
- 小学数学西南师大四年级上册五相交与平行《相交》课堂设计
- 光伏发电项目试验计划
- 图书馆工作流程(新)
- 1:青岩古镇发展及规划
- 小学语文一年级上册看图写话练习(无答案)
- 村务监督委员会履职情况报告三篇
评论
0/150
提交评论