c语言总复习2.docx

上传人:b****6 文档编号:7528876 上传时间:2023-01-24 格式:DOCX 页数:19 大小:29.54KB
下载 相关 举报
c语言总复习2.docx_第1页
第1页 / 共19页
c语言总复习2.docx_第2页
第2页 / 共19页
c语言总复习2.docx_第3页
第3页 / 共19页
c语言总复习2.docx_第4页
第4页 / 共19页
c语言总复习2.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

c语言总复习2.docx

《c语言总复习2.docx》由会员分享,可在线阅读,更多相关《c语言总复习2.docx(19页珍藏版)》请在冰豆网上搜索。

c语言总复习2.docx

c语言总复习2

C语言总复习

第二部分程序设计

程序运行步骤:

编译F9运行Ctrl+F9查看结果Alt+F5

结构化程序设计的三种基本结构:

顺序结构选择结构循环结构

一、选择结构

条件语句

1、if(表达式)语句;

2、if(表达式)

语句1;

else

语句2;

*条件语句可以嵌套

*if语句内嵌的语句为赋值语句时,可用条件运算符处理,使问题简单:

if(a>b)max=a;

elsemax=b;

max=(a>b)?

a:

b;

3.阶梯式if-else-if结构。

阶梯式结构的一般形式为:

if(表达式1)

语句1;

elseif(表达式2)

语句2;

elseif(表达式3)

语句3;

.

.

.

else

语句n;

这种结构是从上到下逐个对条件进行判断,一旦发现条件满点足就执行与它

有关的语句,并跳过其它剩余阶梯;若没有一个条件满足,则执行最后一个else

语句n。

最后这个else常起着"缺省条件"的作用。

5.多分支语句swtich

switch(变量)

         {

              case常量1:

                   语句1或空;

              case常量2:

                   语句2或空;

                   .

              case常量n;

                   语句n或空;

              default:

                   语句n+1或空;

         }

   执行switch开关语句时,将变量逐个与case后的常量进行比较,若与其中一个相等,则执行该常量下的语句,若不与任何一个常量相等,则执行default后面的语句。

   注意:

   1.switch中变量可以是数值,也可以是字符。

   2.可以省略一些case和default。

   3.每个case或default后的语句可以是语句体,但不需要使用"{"和"}"括起来。

   下例的switch中变量为整数型。

    main()

    {

         inttest;

         for(test=0;test<=10;test++)

         {

              switch(test)  /*变量为整型数的开关语句*/

              {

                   case1:

                        printf("%d\n",test);

                        break;   /*退出开关语句*/

                   case2:

                        printf("%d\n",test);

                        break;

                   case3:

                        printf("%d\n",test);

                        break;

                   default:

                        puts("Error");

                        break;

              }

         }

    }

   下例的switch中变量为字符型。

    #include

    main()

    {

         charc;

         while(c!

=27)                 /*循环直到按Esc键结束*/

         {

              c=getch();              /*从键盘不回显接收一个字符*/

              switch(c)

              {

                   case'A':

          /*接收的字符为'A'*/

                        putchar(c);

                        break;        /*退出开关语句*/

                   case'B':

                        putchar(c);

                        break;

                   default:

           /*接收的字符非'A'和'B'*/

                        puts("Error");

                        break;

              }

         }

    }

注:

要理清分支,最好用框图

2、循环结构

三种基本的循环语句:

for语句、while语句和do-while语句。

重点:

for循环

✓for循环是开界的。

它的一般形式为:

for(循环变量赋初值;循环条件;循环变量增值)

语句;

for(i=1;i<=10;i++)

语句;

1.for循环中循环体可以为语句体,但要用"{"和"}"将参加循环的语句括起来。

2.for循环中的"初始化"、"条件表达式"和"增量"都是选择项,即可以缺省,但";"不能缺省。

3.for循环可以有多层嵌套。

main()

{inti,j,k;

printf("ijk\n");

for(i=0;i<2;i++)

for(j=0;j<2;j++)

for(k=0;k<2;k++)

printf(%d%d%d\n",i,j,k);}

输出结果为:

ijk

000

001

010

011

100

101

110

111

✓while循环的一般形式为:

while(条件)

语句;

while循环表示当条件为真时,便执行语句。

直到条件为假才结束循环。

并继续执行循环程序外的后续语句。

例:

#include

main()

{

charc;

c='\0';/*初始化c*/

while(c!

='\X0D')/*回车结束循环*/

c=getche();/*带回显的从键盘接收字符*/

}

上例中,while循环是以检查c是否为回车符开始,因其事先被初始化为空,所以条件为真,进入循环等待键盘输入字符;一旦输入回车,则c='\X0D',条件为假,循环便告结束。

与for循环一样,while循环总是在循环的头部检验条件,这就意味着循环可能什么也不执行就退出。

✓do-while循环的一般格式为:

do

语句;

while(条件);

这个循环与while循环的不同在于:

它先执行循环中的语句,然后再判断条

件是否为真,如果为真则继续循环;如果为假,则终止循环。

因此,do-while循

环至少要执行一次循环语句。

✓break、continue和goto语句

break语句通常用在循环语句和开关语句中。

当break语句用于do-while、for、while循环语句中时,可使程序终止循环而执行循环后面的语句,通常break语句总是与if语句联在一起。

即满足条件时便跳出循环。

main()

{

inti=0;

charc;

while

(1)/*设置循环*/

{

c='\0';/*变量赋初值*/

while(c!

=13&&c!

=27)/*键盘接收字符直到按回车或Esc键*/

{

c=getch();

printf("%c\n",c);

}

if(c==27)

break;/*判断若按Esc键则退出循环*/

i++;

printf("TheNo.is%d\n",i);

}

printf("Theend");}

注:

在多层循环中,一个break语句只向外跳一层。

continue语句的作用是跳过循环本中剩余的语句而强行执行下一次循环。

continue语句只用在for、while、do-while等循环体中,常与if条件语句一起使用,用来加速循环。

例:

main()

{

charc;

while(c!

=0X0D)/*不是回车符则循环*/

{

c=getch();

if(c==0X1B)

continue;/*若按Esc键不输出便进行下次循环*/

printf("%c\n",c);

}

}

✓goto语句是一种无条件转移语句.

格式为:

goto 标号;

   其中标号是TurboC中一个有效的标识符,这个标识符加上一个":

"一起出现在函数内某处,执行goto语句后,程序将跳转到该标号处并执行其后的语句。

另外标号必须与goto语句同处于一个函数中, 但可以不在一个循环层中。

通常goto语句与if条件语句连用,当满足某一条件时,程序跳到标号处运行。

   goto语句通常不用,主要因为它将使程序层次不清,且不易读,但在多层嵌套退出时,用goto语句则比较合理。

三、数组

数组:

数组是一组有序数据的集合,数组中每一个元素的类型相同

一维数组的定义

定义方式:

类型说明符数组名[下标常量表达式]

例、inta[10]

定义一个数组,数组名a,有10个元素,每个元素的类型均为int。

这10个元素分别是:

a[0]、a[1]、a[2]、a[3]、a[4]、....、a[8]、a[9]。

注:

(1)C语言中,数组下标从0开始.

(2)C语言不允许对数组的大小做动态定义,如:

intn;

scanf("%d",&n);

inta[n];

二、数组元素的引用

C语言规定,不能引用整个数组,只能逐个引用元素如;

a[0]=a[5]+a[7]-a[2*3]

三、一维数组的初始化

初始化:

在定义时指定初始值,编译器把初值赋给数组变量。

赋值:

使用赋值语句,在程序运行时把值赋给数组变量,如a[0]=2。

1、一般初始化,例、

inta[10]={0,1,2,3,4,5,6,7,8,9};

intarray[10]={1,2,3,4,5,6,7,8,9,10};

2、部分元素初始化,例、

inta[10]={0,1,2,3,4};

仅前5个元素赋初值,后5个元素赋0

二维数组

一、二维数组的定义

floata[3][4];

a为3×4(3行4列)的数组

floatb[5][10];

b为5×10(5行10列)的数组

二维数组的理解:

二维数组a[3][4]理解为:

有三个元素a[0]、a[1]、a[2],每一个元素是一个包含4个元素的数组。

二、二维数组中元素的引用

用数组名和下标引用元素。

例、

floata[2][3];有6个元素,按如下方式引用各元素:

a[0][0]、a[0][1]、a[0][2]、a[1][0]、a[1][1]、a[1][2]

注意:

数组floata[2][3]中无元素a[2][3]。

(下标从0始)

三、二维数组的初始化

1、分行赋值(常用)如、

inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

2、全部数据写在一个大括号内,如、

inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

3、部分元素赋值,如、

inta[3][4]={{1},{5},{9}};

仅对a[0][0]、a[1][0]、a[2][0]赋值,其余元素编译器自动指定初值0;

4、应用

例、main()

{inta[5][3];

inti,j;

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

for(j=0;j<3;;j++)

a[i][j]=i+j;

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

for(j=0;j<3;;j++)

printf(“%5d”,a[i][j]);

printf(“\n”);

}

字符数组

字符数组:

存放字符数据的数组,每一个元素存放一个字符。

一、程序中定义字符数组

例、

charc[10];/*定义c为字符数组,包含10个元素*/

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[10];/*在内存中占10字节*/

intc[10];/*在内存中占20字节*/

二、字符数组的初始化

1、逐个元素初始化

charc[10]={'I','','a','m','','h','a','p','p','y'};

2、初始化数据少于数组长度,多余元素自动为“空”('\0',二进制0)。

三、字符数组的引用

引用一个元素,得到一个字符。

四、字符串

字符串例子:

"Iamaboy"

1、C语言中,字符串作为字符数组处理。

字符数组可以用字符串来初始化,例、

staticcharc[]={"Iamhappy"};或staticcharc[]="Iamhappy";(常用)

2、字符串在存储时,系统自动在其后加上结束标志'\0'

五、字符数组的输入输出

2种方法:

1、用“%c”格式符逐个输入输出。

2、用“%s”格式符将字符串一次输入输出。

例、

staticcharc[6];

scanf("%s",c);

printf("%s",c);

(1)输出时,遇'\0'结束,且输出字符中不包含'\0'。

(2)“%s”格式输出字符串时,printf()函数的输出项是字符数组名,而不是元素名。

charc[6]="China";

printf("%s",c);printf("%c",c[0]);

printf("%s",c[0]);

(3)“%s”格式输出时,即使数组长度大于字符串长度,遇'\0'也结束。

例、

charc[10]={"China"};

printf("%s",c);/*只输出5个字符*/

(4)“%s”格式输出时,若数组中包含一个以上'\0',遇第一个'\0'时结束。

(5)输入时,遇回车键空格TAB键结束,在字符串末尾添'\0'。

因此,定义的字符数组必须有足够的长度,以容纳所输入的字符。

(如,输入5个字符,定义的字符数组至少应有6个元素)。

(6)一个scanf函数输入多个字符串,输入时以“空格”键作为字符串间的分隔。

charstr[13];

scanf("%s",str);

输入:

Howareyou?

结果:

仅“How”被输入数组str

如要想str获得全部输入(包含空格及其以后的字符),要用gets函数

(7)C语言中,数组名代表该数组的起始地址,因此,scanf()函数中不需要地址运算符&。

charstr[13];

scanf("%s",str);

scanf("%s",&str);

六、字符串处理函数

在C的函数库中,提供了一些字符串处理函数。

(重点见书P146—150)

函数均是库函数,使用时必须用#include语句包含头文件。

1、定义:

数据类型数组名[][]

intb[3],a[3][3];

注:

数组元素下标取值都从0开始。

数组元素按其下标顺序连续存放,数组名表示该数组的首地址。

四、函数

*基本概念:

C语言程序的基本单位是函数。

C程序中函数的数目实际上是不限的

一个C程序中必须至少有一个函数,而且其中必须有一个并且仅有一个以main为名,这个函数称为主函数,整个程序从这个主函数开始执行。

函数分类:

系统提供的库函数、用户自定义函数

*掌握:

函数定义、函数返回值、、函数说明、函数调用、实参和形参传递

1、函数定义

函数定义就是确定该函数完成什么功能以及怎么运行,相当于其它语言的一个

子程序。

函数类型函数名(数据类型形式参数;数据类型形式参数...)

{

函数体;

}

说明:

其中函数类型和形式参数的数据类型为TurboC的基本数据类型。

当函数无返回值时,说明是void类型

函数体为TurboC提供的库函数和语句以及其它用户自定义函数调用语句的组合,并包括在一对花括号"{"和"}"中。

需要指出的是一个程序必须有一个主函数,其它用户定义的子函数可以是任意多个,这些函数的位置也没有什么限制,可以在main()函数前,也可以在其后。

如:

intmaxmum(intx,inty,intz)

voidsubfun(int*m,int*n)

2、函数声明

[存储类型][数据类型]函数名();

函数的数据类型必须与函数定义时一致,形参可不同名。

intputlll(intx,inty,intz,intcolor,char*p);/*声明一个整型函数*/

voidstudent(intn,char*str);/*声明明一个不返回值的函数*/

注:

如函数在main()前,可不声明。

3函数的调用

1)函数的简单调用

   TurboC调用函数时直接使用函数名和实参的方法,将要赋给被调用函数的参量,按该函数说明的参数形式传递过去,然后进入子函数运行,运行结束后再按子函数规定的数据类型返回一个值给调用函数。

使用TurboC的库函数就是函数简单调用的方法。

举例说明如下:

   例1:

    #include

    intmaxmum(intx,inty,intz);  /*说明一个用户自定义函数*/

    intmain()

    {

         inti,j,k;

         printf("i,j,k=?

\n");

         scanf("%4d%4d%4d",&i,&j,&k);

         maxmum(i,j,k);

         getch();

         return0;

    }

 

    maxmum(intx,inty,intz)

    {

         intmax;

         max=x>y?

x:

y;

         max=max>z?

max:

z;

         printf("Themaxmumvalueofthe3datais%d\n",max);

    }

2)函数参数传递

   一、调用函数向被调用函数:

(1)

值传递实参形参

(2)地址传递当数组作为形参,向被调用函数传递时,传递数组的,;指针变量作为形参,传递一地址。

共享内存单元。

用下述方法传递数组形参。

例:

    #include

    voiddisp(int*n);

    intmain()

    {

         intm[10],i;

         for(i=0;i<10;i++)

           m[i]=i;

         disp(m);      /*数组为实参,传递首地址给形参指针变量n*/

         getch();

        

    }

    voiddisp(int*n)

    {

         intj;

         for(j=0;j<10;j++)

           printf("%3d",*(n++));

         printf("\n");

    }

   另外,当传递数组的某个元素时,数组元素作为实参,此时按使用简单变量的方法使用数组元素,值传递。

上例按传递数组元素的方法传递时变为:

    #include

    voiddisp(intn);

    intmain()

    {

         intm[10],i;

         for(i=0;i<10;i++){

           m[i]=i;

           disp(m[i]); /*逐个传递数组元素*/

         }

         getch();

         

    }

    voiddisp(intn)

    {

         printf("%3d\t",n);

    }

这时一次只传递了数组的一个元素。

   二、被调用函数向调用函数返回值

用return语句由被调用函数向调用函数返回值,该语句有下列用途:

   1.它能立即从所在的函数中退出,返回到调用它的程序中去。

   2.返回一个值给调用它的函数。

   有两种方法可以终止子函数运行并返回到调用它的函数中:

一是执行到函数的最后一条语句后返回;一是执行到语句return时返回。

#include

    intmaxmum(intx,inty,intz);  /*说明一个用户自定义函数*/

    intmain()

    {

         inti,j,k,max;

        

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 视频讲堂

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1