C语言程序设计第1至8章复习知识点总结_第1页
C语言程序设计第1至8章复习知识点总结_第2页
C语言程序设计第1至8章复习知识点总结_第3页
C语言程序设计第1至8章复习知识点总结_第4页
C语言程序设计第1至8章复习知识点总结_第5页
已阅读5页,还剩105页未读 继续免费阅读

下载本文档

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

文档简介

《第一章c语言概述》总结1简单的C语言程序介绍例1.1输出一行信息/*example1.1ThefirstCProgram*/#include<stdio.h>voidmain(){printf(“ShantouPolytechnic.\n”);}注释编译预处理主函数语句例:下面程序执行后,变量b的值为

,变量c的值为

main() { inta,b,c=1; a=21; b=a%8; /*c=++a;*/ }51例1.3求两个数中的较大者/*example1.3*/#include<stdio.h> /*包含头文件*/voidmain() /*主函数*/{ intmax(intx,inty);/*对调用函数max的声明,x,y为形参、整型*/ inta,b,c; /*定义变量a、b、c*/ scanf("%d,%d,",&a,&b); /*输入变量a,b的值*/ c=max(a,b); /*调用max函数,将得到的值赋给c,x、y为实参*/ printf("max=%d\n",c); /*输出c的值*/}intmax(intx,inty) /*定义max函数,函数值为整型,x、y为形参,整型*/{ intz; /*定义内部变量z*/ if(x>y)z=x; /*比较x,y的大小,如果x大于y,则执行z=x*/ elsez=y; /*否则执行z=y*/ return(z); /*将z的值返回,通过max带回调用处*/}10,7max=102.C语言的结构特点1、函数是组成C程序的基本构件;2、一个函数由两部分组成;

函数的说明部分

函数体 函数体:{

说明语句; 执行语句;

}3、一个C程序总是从main函数开始;4、语句以分号“;”结束;5、书写格式自由。/*example1.4*/#include<stdio.h>/*themainprogram*/main(){inta,b,sum;a=10;b=24;sum=add(a,b);printf(”sum=%d\n",sum);}/*Thisfunction*/intadd(intx,inty){intz;z=x+y;return(z);}

有错?结果正确?

束有源程序

file.c目标程序file.obj库函数和其它目标程序可执行目标程序file.exe无正确不正确1编辑3链接2编译4执行1、程序代码的录入,生成源程序*.c(*.cpp)2、语法分析查错,翻译生成目标程序*.obj3、与其它目标程序或库链接装配,生成可执行程序*.exe4、执行程序,得到结果3.C程序的上机步骤《第二章数据类型、运算符与表达式》总结1二进制和补码求法anan-1…a1a0=an*2n+an-1*2n-1+…+a1*21+a0*20如:1010=1*23+0*22+1*21+0*20=10如:-5的补码求法(-5的二进制:1000000000000101

1、取绝对值:00000000000001012、取反:11111111111110103、加“1”

:1111111111111011◆补码的求法:1、正数的补码与原码相同。2、负数的补码:取绝对值,取反,加“1”。◆二进制:常量的表示方法:十进制:0~9,还有正、负号;八进制:0~7,以0开头;十六进制:0~9,A~F/a~f,以0x或0X

开头。例、整数-35在机内的补码表示为

。如:-35的补码求法(-35的二进制:1000000000100011)

1、取绝对值:0000000000100011

2、取反:11111111110111003、加“1”

:11111111110111012基本数据类型1、整型2、实型3、字符型实型小数形式:3.14指数形式:3.14*103

=3.14e003字符对应ASCII表标准化指数形式:3.14*103

只有一个大于0的整数例:以下选项中,不能作为合法常量的是(

A)1.234e04 B)1.234e0.4 C)1.234e+4 D)1.234e0B2常量与变量符号常量:#define

N

3

//没有“;”,运行中N不可变

//N按原样3代入程序中例:下列程序执行后的输出结果是( )#define

YC(x)

x*(x-1)main(){inta=1,b=2;printf("%d\n",YC(1+a+b));}A)6

B)8 C)10 D)12

B变量:int

a=510;标识符的构成规则:★以字母和下划线开头;★随后可跟数个或零个字母、数字和下划线;★标识符的长度由系统决定,最好不要超过8个字符。例如:y,Y,year,year3,_day,a_to_B,这些都合法6x,int,re-write,theroom,#hour,这些不合法注意区分大小写:sum和Sum是两个不同的标识符。a510变量值为变量分配的存储单元变量名◆变量必须“先定义后使用”变量的定义、赋初值和引用1、整型2、实型3、字符型int

a;long

a;unsigned

u;%d;%ld;%ufloat

f=3.14;double

f=1.1e003;%f;double输入%lfchar

c=‘a’;%c字符串用%s1、整型:

int:16bit=2Byte;long:4Byte

2、实型:float:4Byte;double:8Byte

3、字符型:char:8bit◆实型数有效位数:

float:7位有效数字

double:15—16位有效数字转义字符常量反斜杆\与可视字符组合,例如(P24表2.3)\0字符串结束标志\n换行\t跳到下一个输出位置\"双引号字符\dddddd为1到3位八进制数所代表的字符\xhhhh为1到2位十六进制数所代表的字符#include<stdio.h>voidmain(){charc1,c2;c1='a';c2='b';

printf("%d,%d\n",c1,c2);printf("%c,%c\n",c1,c2);

c1=c1-32;

c2=c2-32;

printf("%c,%c\n",c1,c2);}例2.7大小写字母的转换。结果:97,98a,bA,B字符型能与整型一起运算用双引号括起的一个字符序列例如:"ABC"、"123"、"a"、"\n\t""\nGoodmorning"字符串常量的长度:所包含的字符个数

字符串常量的存储方式:

\nGoodmorning\0a\0所占存储单元数:串长度+1例如:字符串结束标记

字符串常量9、以下程序的输出结果是(

)。

charstr[15]=”hello!”;printf(“%d\n”,strlen(str));

A.15

B.14

C.7

D.6str[1]=?数组str有多少个元素?15个,str[6]开始都是‘\0’str[1]=‘e’D4运算符和表达式表达式运算符优先级结合性表达式:y+=i++;a=3;a&&41、表达式的值是多少?2、运算对象的值是多少?运算符:按运算对象分:单目、双目、三目按功能分:算术、赋值、关系、逻辑条件、逗号、位、其他C运算符的“优先级口决”(必须认识所有的C的运算符)。优先级:括号成员第一;//括号运算符[](),成员运算符.->全体单目第二;//所有的单目运算符比如++--+(正)-(负)//指针运算*&乘除余三,加减四;//这个"余"是指取余运算即%移位五,关系六;//移位运算符:<<>>关系:><>=<=等等于(与)不等排第七;//即==!=位与异或和位或;//这几个都是位运算:位与(&)异或(^)位或(|)"三分天下"八九十;逻辑或跟与;//逻辑运算符:||和&&十二和十一;//注意顺序:优先级(||)底于优先级(&&)条件高于赋值,//三目运算符优先级排到13位只比赋值运

//算符和“,”高

//需要注意的是赋值运算符很多!逗号运算级最低!//逗号运算符优先级最低c运算符的结合性:

1.单目、三目(条件),赋值:自右至左;

2.其他都是左至右。求下面的表达式的值:inta=3,b=2,i=5;(1)-i++;(2)c=a>b?i++:--i;(3)a+=a-=a*a;(4)a&&b;(&&和||有屏蔽功能)(5)b%a和b/a;(%要求int%int;int/int=int直接去掉小数部分)(6)m<n<k如何表示?#在C语言中,要求运算数必须是整型的运算符是(

)A)% B)/ C)< D)!#以下程序输出结果:

#include<stdio.h>voidmain(){ inta=1,b=2,c=3,d=4,m=2,n=2; printf("%d,%d",(m=a>b)&&(n=c>d),n);}#判断char型变量ch是否为大写字母的正确表达式是

。A)‘A’<=ch<=‘Z’ B)(ch>=‘A’)&(ch<=‘Z’)C)(ch>=‘A’)&&(ch<=‘Z’) D)(‘A’<=ch)AND(‘Z’>=ch)

0,2c#以下程序的运行结果是

。#include<stdio.h>voidmain(){ inta,b,d=241;a=d/100%9;b=(-1)&&(-1);printf("%d,%d",a,b);}#、inta=3;

a+=(a<1)?a:1;

printf(“%d”,a);

结果是

。2,14(6)以下程序运行后的输出结果是

main(){inta,b,c;a=10;b=20;c=(a%b<1)||(a/b>1);printf("%d\n",c);}0各种类型数据的混合运算:要求自动转换类型doublefloatlongintchar,shortunsigned高低

整型、实型、字符型数据可以混合运算,不同类型的数据要先转换成同一类型。从左向右扫描,根据优先级决定运算顺序。注意:每一步运算都要先转换为同一类型例:inta=3,b=4;floatc=3.0/4,d=b/a;printf("%f,%f",c,d);数据类型的强制转换

例2.8强制类型转换#include<stdio.h>voidmain(){doublex;inti;x=3.6;i=(int)x;printf("x=%6.2f;i=%d",x,i);}x=

3.60;i=3◆逗号运算符和逗号表达式逗号表达式的一般形式表达式1,表达式2,……,表达式n

逗号表达式的值从左向右,依次对表达式求值,最后得到表达式n

的值就是逗号表达式的值例如:⑴a=5,

a++,

a*3

表达式值为18,且a=6⑵t=1,t+5,t++表达式值为1,且t=2⑶x=(a=3*5,

a*4

)

赋值表达式的值为60,且x=60,a=15《第三章顺序程序设计》总结一、算法1966年提出三种基本结构:顺序、选择和循环。(1)顺序结构ABAB(2)选择结构……a=3;b=a;……YNABP成立?PTFAB……if(a!=0)b=sin(a)/a;elseb=1;……★结构化程序的三种基本结构(3)循环结构:根据条件P决定是否执行循环体中的操作NYP成立?A当P成立时

AA当P成立时YNAP成立?……while(i<10){s=s+3;i++;}…………do{s=s+3;i++;}while(i<10);……当型循环直到型循环★c语句分为两大类:C程序由函数组成。函数的格式:函数名(参数表){

说明部分;执行部分;}数据类型说明语句可执行语句1、说明性语句;2、可执行语句。二、C语句语句格式执行步骤(流程图)可执行语句分为5类:(1)控制语句:9种(P54-55)(2)函数调用语句(3)表达式语句(4)空语句“;”(5)复合语句{…..}(1)控制语句:9种9种控制语句:

if()~else~for()~while()~do~while();continue//结束本次循环

break//终止循环或switch语句

switchgotoreturn★赋值表达式将表达式的值存入变量对应的内存单元中

m=12b=(++a)-2m%=3+n等价于m=m%(3+n)

x*=(x=5)a+=a-=a*a

等价于a+=(a-=(a*a))赋值表达式和赋值语句如果a=3,a+=a-=a*a结果是-12★赋值号左边必须是变量,右边可以是C语言任意合法的表达式例如:n=t+2<s;(a=3*5)=4*3;合法

a+b=15;a=3*5=4*3

;不合法★赋值号与数学中的等号含义不同例如:数学中a=b等价于b=aC语言中a=b不等价于

b=a★int=float或int=double,对实数取整,舍去小数部分三、数据输入/出#include<stdio.h>1、字符数据的输入输出putchar(c);//字符输出函数,如:输出到显示器getchar();//字符输入函数,如:在键盘输入#include<stdio.h>voidmain(){ charc; c=getchar(); putchar(c); putchar('c'); putchar(99);}结果:aacc注意:#只是输出/入一个字符#getchar()没有参数可以直接赋给字符变量#putchar()有参数可以是字符和整型常量和变量2、格式输入输出scanf(“格式控制”,地址列表);printf(“格式控制”,参数列表);★格式控制包括:1.格式说明由%开头和格式字符组成。它的作用是将输入/出的数据转换为指定的格式输入/出。2.普通字符即需要原样输出的字符。整数位数+小数位数+小数点自动对n位后小数四舍五入

例如:%ld——输出十进制长整型数%m.nf——右对齐,m位域宽,n位小数或n个字符%-m.ne——e为指数形式,-为左对齐%m.ns——截取字符串左边n个字符%+d——输出带符号整型数

%*3d表示读入3位整数但不赋给任何变量3.以下的输出结果是_____。main(){intx=1,y=2;printf(“x=%dy=%d*sum*=%d\n”,x,y,x+y);printf(“10Squaredis:%d\n”,10*10);}例:输入2345678,结果是______#include<stdio.h>voidmain(){ intx,y; scanf("%2d%*2s%1d",&x,&y); printf("%d",x/y);}3x=1y=2*sum*=310Squaredis:100《第四章选择结构程序设计》总结1、关系和逻辑表达式结果是一个逻辑值:“真”和“假”;即“0”或“1”关系运算符(左结合)>>=<<=

==!=

较高

较低逻辑运算符

&&||!(与、或、非)◆逻辑运算的短路性质:按照从左至右的顺序进行运算,一旦能够确定逻辑表达式的值,就立即结束运算◆a>b>c等价于a>b&&b>c◆!为单目运算符!非算术运算符关系运算符&&与||或赋值运算符高低2、if语句语句格式执行步骤(流程图)◆if语句的三种格式:1.if(表达式)语句2.if(表达式)语句1

else语句23.

if(表达式1)语句1elseif(表达式2)语句2…elseif(表达式m)语句melse语句n注:1、其中内嵌语句要是多条要用符合语句{…};2、表达式是c合法的表达式;3、else不能单独使用。1.if(表达式)语句2.if(表达式)语句1

else语句23.

if(表达式1)语句1elseif(表达式2)语句2elseif(表达式3)语句3elseif(表达式4)语句4else语句53、嵌套的if语句

在if语句中又包含一个或多个if语句称为if语句的嵌套。一般形式如下:if()

if()

语句1

else

语句2………内嵌一个if语句else

if()

语句3

else

语句4………内嵌一个if语句★注意:if与else的配对关系。else总是与它上面最近的未配对的if配对。if()

if()语句1else

if()语句2else语句3内嵌if语句例如:以下if与else的配对关系(P101)可以加{}来确定配对关系if(){if()语句1}else

if()语句2else语句31.

三个整数a、b、c,由键盘输入,输出其中最大的一个数。解法1、#include<stdio.h>voidmain(){inta,b,c,max;scanf("%d%d%d",&a,&b,&c);if(a>max) max=a;if(b>max) max=b;if(c>max) max=c;printf("max=%d\n",max);}解法2、#include<stdio.h>voidmain(){inta,b,c,max;scanf("%d%d%d",&a,&b,&c);if(a>b&&a>c) max=a;elseif(b>a&&b>c) max=b;elsemax=c;printf("max=%d\n",max);}4.3多分支选择结构

由选择结构派生出来的一种结构,它也是一种基本结构(满足3个特征)kA1A2An……k=k1k=k2k=knswitch(k)//K为任何表达式{ casek1:A1;break; casek2:A2;break; …

casekn:An;break;

default;}//k1—kn为常量表达式Switch语句说明:(1)switch后面括弧内的“表达式”允许为任何类型。(2)当表达式的值与某一个case后面的常量表达式的值相等时,就执行此case后面的语句,若所有的case中的常量表达式的值都没有与表达式的值匹配的,就执行default后面的语句。(3)每一个case的常量表达式的值必须互不相同,(4)各个case和default的出现次序不影响执行结果。例如,可以先出现“default:…”,再出现“case‘D’:…”,然后是“case‘a’:…”。(5)执行完一个case后面的语句后,流程控制转移到下一个case继续执行,直到switch结束。(6)多个case可以共用一组执行语句。例:从键盘上输入一个成绩等级grade,按下列原则输出其对应的分数:grade为A,分数为85-100;grade为B,分数为70-84;grade为C,分数为60-69;

grade为D,分数为<60。grade为其他情况时,提示用户:输入有错。

#include<stdio.h>void

main(){ chargrade; printf("Inputagrade(A-D):"); scanf("%c",&grade); switch(grade) {case'A':printf("85-100\n");break; case'B':printf("70-84\n");break; case'C':printf("60-69\n");break; case'D':printf("<60\n");break; default:printf("error\n");break; }

}《第五章循环结构程序设计》总结1、while()、do…while();、for(1;2;3)三种语句当表达式为真语句N-S结构图NY流程图表达式非0?语句循环控制条件循环体◆while语句格式:While(表达式)语句◆do---while语句do---while语句是先执行循环体,然后判断循环条件是否成立。一般形式为:

do{循环体语句

}

while(表达式);NY循环体表达式非0?流程图注意:do---while是一条语句,所以最后要加一个分号。功能:计算表达式1的值,再判断表达式2,如果其值为非0(逻辑真),则执行内嵌语句(循环体),并计算表达式3;之后再去判断表达式2,一直到其值为0时结束循环,执行后续语句。◆for语句的一般格式:for(表达式1;表达式2;表达式3)

语句;循环初始条件循环体循环控制条件N-S结构图for(表达式1;表达式2;表达式3)

语句NY流程图计算表达式1

语句计算表达式3表达式2为真?表达式可以部分或全部省略,但“;”不可省略for语句的算法描述:break语句的一般形式为:break;注意:break语句不能用于循环语句和Switch语句之外的任何其他语句中。后续语句…break;…YN表达式?后续语句…break;…表达式?YNwhile语句do-while语句后续语句计算表达式3计算表达式1…break;…表达式2?YNfor语句后续语句…continue;

…YN表达式?后续语句…continue;…表达式?YNwhile语句do-while语句后续语句计算表达式3计算表达式1…continue;…表达式2?YNfor语句continue语句的一般形式为:continue;3.break语句只是结束本次循环体的执行,

不会结束整个循环语句。

)4、for(a=1,b=1;a<=100;a++){if(b>=20)

break;if(b%3==1){b+=3;

continue;}b-=5;

}printf(“%d”,b);

程序的输出结果b的值为

。22循环的嵌套

一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。

三种循环(while循环、dowhile循环和for循环)可以互相嵌套。for(inti;i<n;i++)for(intj;j<m;j++)

语句;1、从键盘上输入10个数,求其平均值。main(){inti;floatf,sum;for(i=1,sum=0.0;i<11;i++){

;

;

}printf(“average=%f\n”,sum/10);

}1、scanf(“%d”,&f);2、sum+=f;(7)下面程序的功能是:计算“1+2+3+……+100”之和,请填空:#include <stdio.h>main(){inti=1,sum;

1 ;while( 2 ){sum+=i++;}printf("1~100之和=%d\n",sum);}1、sum=0;2、i<=100;五、编程求出“1/5+1/10+1/15+……+1/90”的值并输出到屏幕上。#include<stdio.h>voidmain(){ doublesum=0; for(inti=5;i<=90;i=i+5)

sum+=1.0/i; printf("sum=%f\n",sum);}《第六章数组》总结1变量2数组3指针变量的定义、赋初值、引用和作为函数参数数组的定义、初始化、引用和作为函数参数指针的定义、初始化、引用和作为函数参数考虑1、定义和引用一维数组一维数组的定义:数据类型数组名[常量表达式];注意:1格式2元素个数例如:

inta[10];

floatscore[5];

“数据类型”:是数组元素的数据类型。“数组名”:遵循C语言标识符规则。“常量表达式”:表示数组中有多少个元素,即数组的长度。它可以是整型常量、整型常量表达式或符号常量,不可以包含变量。

引用一维数组的元素数组名[下标]数组元素的形式:例如:输入学生成绩

floatscore[5],a,b;

for(inti=0;i<5;i++)

scanf("%f",&score[i]); a=score[4];

b=score[4/3];注意:1下标可以是整型常量或整型表达式,从0开始。2只能逐个引用数组元素而不能一次引用整个数组3数组名代表数组的首地址,即score的值与score[0]的地址值相同。★区别:数组定义和引用时”[]”中内容定义时:[常量表达式];引用时:[下标];

floatscore[5];

5代表scroe数组有5个元素。

下标可以是整型常量或整型表达式;

下标从0开始。

floata=score[4];

//score[4]为第5个元素

a=score[5]

;//错误,只能0到4一维数组初始化初始化:在定义数组时给数组元素赋初值。

(也可以用一个赋值语句来实现)1.在定义数组时,对全部数组元素赋初值例如:inta[5]={0,1,2,3,4};

此时可以省略数组长度,例如:inta[]={0,1,2,3,4};

2.在定义数组时,对部分数组元素赋初值例如:inta[5]={1,2,3};系统为其余元素赋0

。3.当初值的个数多于数组元素的个数时,编译出错例如:inta[5]={0,1,2,3,4,5};//出错2二维数组的定义和引用数据类型数组名[常量表达式1][常量表达式2];

例如:floatx[2][3];

//各个元素为float型★c中,二维数组中元素的排列的顺序是按行存放的例如:floatx[2][3];

X[0][0]X[0][1]X[0][2]X[1][0]X[1][1]X[1][2]元素x[0][0]x[0][1]x[0][2]x[1][0]x[1][1]x[1][2]2000H2004H2008H200cH2010H2014H地址

数组元素x[0]是数组名,是元素x[0][0]的地址x[1]是数组名,

是元素x[1][0]的地址二维数组可看作是一种特殊的一维数组x[0]----x[0][0],x[0][1],x[0][2]x[1]----x[1][0],x[1][1],x[1][2]例如,可以把x数组看作是包含二个元素的一维数组,每个元素又是一个含有三个元素一维数组。引用二维数组的元素注意:1下标表达式可以是整型常量或整型表达式2下标的值必须在已经定义的数组大小范围内。a[3][4]=3;/*下标越界*/a[1,2]=1;/*应写成a[1][2]=1;*/例:inta[3][4];a[0][0]=3;a[0][1]=a[0][0]+10;数组名[行下标表达式][列下标表达式]

数组元素的表示形式:例:inta[2][3]={1,2,3,4,5,6};

1.按行赋初值例:inta[2][3]={{1,2,3},{4,5,6}};初始化后结果:1234562.按数组元素在内存中排列的顺序对各元素赋初值3.给部分元素赋初值例:inta[2][3]={{1},{4}};初始化后结果:100400二维数组的初始化a

结果:a[0]:123a[1]:456a[2]:700b

结果:b[0]:1000b[1]:4500初始化结果:例如:inta[][3]={1,2,3,4,5,6,7};

intb[][4]={{1},{4,5}};4.数组初始化时,行长度可省,列长度不能省★下面对二维数组的定义都是错误的:

floatx[3][]={1.0,2.0,3.0,4.0,5.0,6.0};inta[][],b[][2],c[3][];intm[2][4]={1,2,3,4,5,6,7,8,9};//编译出错,初值个数多于数组元素的个数3字符数组字符数组:可以存放若干个字符,也可以存放字符串。例如:chars[10];s数组是一维字符数组,它可以存放10个字符或一个长度不大于9的字符串。China\0字符串:字符串的末尾必须有’\0’字符,它的ASCII码值为0。China不是字符串是字符串再例如:chara[3][5];a数组是一个二维的字符数组,可以存放15个字符或3个长度不大于4的字符串。注意:字符串只能存放在字符数组中。再例如:

chara[3][10]={"basic","pascal","c"};astring\0\0用字符串常量赋初值例如:

charstr[10]={"astring"};或charstr[10]="astring";basic\0\0\0\0\0pascal\0\0\0\0c\0\0\0\0\0\0\0\0\0是字符串吗?⑴输出字符串例如:charc[]="China";

printf("%s",c);输出结果为:ChinaC是数组首地址输出时遇'\0'为止

再例如:char

c[]="pascal\0basic";

printf("%s",c);输出结果为:pascal字符数组的输入/输出(1)逐个字符输入输出,用格式符:%c

;(2)整个字符串一次输入输出,用格式符:%s

。⑵输入字符串例如:charc[10];scanf("%s",c);输入:beijing

beijing\0\0\0三个字符串用空格隔开,分别赋给str1、str2、str3三个数组。再例如:charstr1[10],str2[10],str3[10];scanf("%s%s%s",str1,str2,str3);输入:pascalbasicc

注意:不可以为数组整体赋值,例如:

charc[10];c="beijing"

;因为c是数组首地址,是常量

1、puts(str)功能:输出一个字符串,输出后自动换行。说明:str可以是字符数组名或字符串常量。2、gets(str)功能:从键盘读入一个字符串存入str数组中,并且得到一个函数值,该函数值是str数组的首地址。说明:str是数组名。3、strcat(str1,str2)功能:把str2中的字符串连接到str1字符串的后面,结果放在str1数组中,函数值是str1的值。4、strcpy(str1,str2)功能:将str2中的字符串复制到str1数组中。5、strlen(str)功能:测试字符串长度。函数值就是str中字符的个数。不包括’\0’字符串处理函数(表6.1)6、strlwr(str)功能:将str字符串中的大写字母转换成小写字母7、strupr(str)功能:将str字符串中的小写字母转换成大写

字母。

8、strcmp(str1,str2)功能:字符串比较★介绍的8个字符串处理函数,在程序的开始应该写:

#include"stdio.h"或

#include"string.h"82调用格式:strcmp(str1,str2)abcde\0str1abcde\0str2abc\0

abcde\0abcd\0

Abcde\0str1str2str1str2strcmp(str1,str2)==0strcmp(str1,str2)>0strcmp(str1,str2)<0自左向右逐个比较ASCII码值,直到出现不同字符或\0为止12、下列程序的输出结果是(

D

)。char

*p1="abcd",

*p2="ABCD",

str[50]="xyz";strcpy(str+2,strcat(p1+2,p2+1));

printf("%s",str);A.xyabcAB

B.abcABz

C.ABabcz

D.xycdBCD《第七章函数》总结1、c程序必须有一个,且只有一个main函数2、函数名要遵守标识符的命名规则,函数名是函数的入口地址。3、函数的声明和定义的区别是:

定义时有函数的功能,声明没有4、定义和声明时叫形参,调用时叫实参

形参与实参的个数相等,对应,类型相匹配5、函数调用调用

传递参数(单向值传递)

返回主调函数

释放形参(10)若程序中定义了以下函数double

myadd(double

a,double

b) {

return

(a+b);}并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是(

)A)double

myadd(double

a,b);

B)double

myadd(double,double);C)double

myadd(double

b,double

a);

D)double

myadd(double

x,double

y);2、有一个一维数组,内放10个学生成绩,写一个函数(主函数调用该函数),求出平

均分。#include<stdio.h>floataverage(floatarray[],intn){ inti; floataver,sum=array[0];

for(i=1;i<n;i++) sum=sum+array[i]; aver=sum/n; return(aver);}voidmain(){floatave,score[10];inti;for(i=0;i<10;i++) scanf("%f",&score[i]);ave=average(score,10);printf("%f\n",ave);}6、函数的嵌套和递归嵌套调用:就是在定义一个函数时,其函数体内又包含另一个函数。递归调用:在调用一个函数的过程中又出现直接或间接地

调用该函数本身。1、递归结束条件2、一般用到if语句结构

if(结束条件)语句

else语句(该语句调用本函数,规模越来越小)3、递归可以分为函数调用过程和返回过程3.用递归的方法求n!(修改程序)#include<stdio.h>floatfac(n){floatf;

if(n<0)printf(“n<0,dataerror!”);elseif(n=0||n=1)f=1;elsef=(n-1)*n;return(f);}

void

main(){intn;floaty;scanf(“%d”,&n);y=fac(n);printf(“%d!=%15.0f\n”,n,y);}改正1:floatfac(intn)改正2:elseif(n==0||n==1)f=1;改正3:elsef=fac(n-1)*n;

错误1:错误2:错误3:

7、变量的作用域和生存期变量的作用域--局部变量和全局变量按作用域局部变量全局变量自动(auto):离开函数,值就消失静态(static)局部:离开函数,值仍保留寄存器(register):离开函数,值消失外部变量:允许其他文件引用静态(static)外部:只限本文件引用(形参可以定义为auto或register)按变量存在的时间动态存储静态存储自动(auto):本函数内有效静态(static)局部:本函数内有效寄存器(register):本函数内有效外部变量:用extern声明后,允许其他文件引用静态(static)外部:本文件有效形参(可以定义为auto或register)本函数内有效按变量值存放的位置内存动态存储内存静态存储自动(auto):本函数内有效静态(static)局部:本函数内有效寄存器(register):本函数内有效外部变量:用extern声明后,允许其他文件引用静态(static)外部:本文件有效形参(可以定义为auto或register)本函数内有效CPU寄存器(8)以下程序输出的最后一个值是

。#include<stdio.h>intfun(intn){

staticintf=1;f*=n;returnf;}voidmain() {inti;for(i=1;i<=3;i++)printf("%d\n",fun(i));}《第8章指针》总结1、认识一下指针的相关内容:int*p;//定义一个指针变量p//“*”是指向(单目运算符)//*p是一个变量//p叫做指针变量。它存放的是地址指针=地址*p存放的值指向一个地址中存放的值inti=3;int*i_pointer=&i;inti=3;int*i_pointer;i_pointer=&i;定义的同时初始化1、*和&都是单目运算符2、*i_pointer的值就是i的值3、指针变量i_pointer的类型和变量i的类型要相同4、指针变量只存放地址2、通过指针引用数组元素引用一个数组元素,可以用:(1)下标法,如a[i]形式;(2)指针法,如*(a+i)或*(p+i)。其中a是数组名,p是指向数组元素的指针变量,其初值p=a。注意:这里的i代表i个地址单元3、用数组名和指针变量作函数参数如:voidmain()

{if(intarr[],intn);intarray[10];┇f(array,10);┇}

voidf(intarr[],intn){┇}//编译时,形参arr按指针变量处理,相当于void

f(int*arr,int

温馨提示

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

评论

0/150

提交评论