首页 > 代码库 > 黑 马 程 序 员_视频学习总结<c语言>----02 printf和scanf函数、基本语句和运算、流程控制、函数、数组、字符串

黑 马 程 序 员_视频学习总结<c语言>----02 printf和scanf函数、基本语句和运算、流程控制、函数、数组、字符串

 ---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------

 

一、printf函数

1.在使用peintf函数前必须加入#include <stdio.h>,使用它可以向标准输出设备(比如屏幕)输出数据,其中使用格式是 printf(“字符串”) ;或者 printf(“字符串”, 格式符参数);

2.常用的格式符及其含义如图所示

3.格式符还可以添加输出宽度

 

二、scanf函数

1.在使用scanf函数前必须加入#include <stdio.h>。调用scanf函数时,需要传入变量的地址作为参数,scanf函数会等待标准输入设备(比如键盘)输入数据,并且将输入的数据赋值给地址对应的变量。

2.使用格式:scanf("<格式化字符串>",<地址表>);

 

三、基本语句

C语言的基本语句有循环语句(do while、while、for),条件语句(if 、if-else、switch),goto语句。

 

四、基本运算

1.算术运算符

  • +  加法运算符
  • -  减法运算符,或负值运算符
  • *  乘法运算符
  • /  除法运算符
  • %  模运算符,或称取余运算符,要求%两侧均为整型

2.关系运算符

  • <   小于运算符
  • <=  小于等于运算符
  • >   大于运算符
  • >=  大于等于运算符
  • ==  等于运算符
  • !=  不等于运算符

逻辑运算的结果只有两个:成立就为"真",返回1;不成立就为"假",返回0

注意:C语言中没有boolean类型

3.逻辑运算符有:

  • &&  逻辑与运算符
  • ||  逻辑或运算符
  • !   逻辑非运算符

逻辑运算的结果也只有两个:成立就为"真",返回1;不成立就为"假",返回0

4.赋值运算符有简单的赋值运算符 = ;以及复合赋值运算符

  • +=  加赋值运算符。如a += 3+1,等价于 a = a +(3+1)
  • -=  减赋值运算符。如a -= 3+1,等价于 a = a -(3+1)
  • *=  乘赋值运算符。如a *= 3+1,等价于 a = a *(3+1)
  • /=  除赋值运算符。如a /= 3+1,等价于 a = a /(3+1)
  • %=  取余赋值运算符。如a %= 3+1,等价于 a = a %(3+1)

5.自增运算符和自减运算符

  • ++  自增运算符。如a++,++a,都等价于a = a+1
  • --  自减运算符。如a--,--a,都等价于a = a-1

6.逗号运算符和逗号表达式一般形式为:表达式1, 表达式2, … …, 表达式n

7.条件运算符和条件表达式,其实就是三目运算符,一般形式为:表达式1 ? 表达式2 : 表达式3

8.sizeof可以用来计算一个变量或者一个常量、一种数据类型所占的内存字节数。

 

五、流程结构

C语言提供3种流程结构,不同的流程结构可以实现不同的运行流程。这3种流程结构分别是:

  • 顺序结构:默认的流程结构。按照书写顺序执行每一条语句。
  • 选择结构:对给定的条件进行判断,再根据判断结果来决定执行哪一段代码。
  • 循环结构:在给定条件成立的情况下,反复执行某一段代码。

 

六、顺序结构

顺序结构是3种结构中最简单的,也是默认的流程结构:程序中的语句是按照书写顺序执行的。

 

七、选择结构-if语句

1.结构形式1

1 if ( 条件 )2 {3     语句1;4     语句2;5     ....6 }

如果if右边小括号()中的条件成立,也就是为“真”时,就会执行第2~6行大括号{}中的语句;如果条件为假,就不执行大括号{}中的语句。这里的if是关键字。

2.结构形式2

if还可以跟关键字else一起使用

1 if ( 条件 )2 {3     语句1;4 }5 else6 {7     语句2;8 }

如果条件成立,就会执行if后面大括号{}中的语句;如果条件不成立,就会执行else后面大括号{}中的语句。

3.结构形式3

if和else还有一种比较复杂的用法

 1 if ( 条件1 ) 2 { 3     语句1; 4 } 5 else if ( 条件2 ) 6 { 7     语句2; 8 } 9 else if ( 条件3 )10 {11     语句3;12 }13 ...14 else15 {16     其他语句;17 }
  • 如果条件1成立,就执行条件1后面大括号{}中的内容:第2~4行
  • 如果条件1不成立,条件2成立,就执行条件2后面大括号{}中的内容:第6~8行
  • 如果条件1、条件2都不成立,条件3成立,就执行条件3后面大括号{}中的内容:第10~12行
  • 第13行的...表示可以有无限个else if
  • 如果所有的条件都不成立,就会执行else后面大括号{}中的内容:第15~17行

 

八、选择结构-switch语句

1.结构形式

 1 switch(整型表达式) 2 { 3     case 数值1: 4         语句1; 5         break; 6     case 数值2: 7         语句2; 8         break; 9     ... ...10     case 数值n:11         语句n;12         break;13     default :14         语句n+1;15         break;16 }
  • 当整型表达式的值等于“数值1”时,就会执行“语句1”,后面的break表示退出整个switch语句,也就是直接跳到第16行代码;
  • 当整形表达式的值等于“数值2”时,就会执行“语句2”;后面的以此类推。如果在数值1~数值n中,没有一个值等于整型表达式的值,那么就会执行default中的语句n+1。
  • 由于所有的case后面都有个break,因此执行完任意一个case中的语句后,都会直接退出switch语句

2.break关键字的作用是退出整个switch语句。默认的格式中,每个case后面都有个break,因此执行完case中的语句后,就会退出switch语句。

 

九、循环结构-while循环

1.结构形式

1 while ( 条件 )2 {3     语句1;4     语句2;5     ....6 }
  • 如果条件成立,就会执行循环体中的语句(“循环体”就是while后面大括号{}中的内容)。然后再次判断条件,重复上述过程,直到条件不成立就结束while循环
  • while循环的特点:如果while中的条件一开始就不成立,那么循环体中的语句永远不会被执行

3.注意如果写成下面这样,也会让程序进入“死循环”

1 int count = 0;2 3 while ( count < 10 );4 {5     printf("Hello World\n");6     7     count++;8 }
  • 注意第3行,while后面不小心加了个分号; ,一个分号表示一条空语句。
  • 可以看出:while循环只会影响到第3行的空语句,而第4~8行的代码块是不受while循环影响的
  • 由于count是0,那么count<10一直都是成立的,程序将会一直重复执行第3行的空语句,陷入死循环。

 

十、循环结构-do while循环

结构形式如下:

1 do {2     语句1;3     语句2;4     ...5 } while (条件);
  • 注意第5行,后面是加上一个分号;的
  • 当执行到do-while循环时,首先会执行一遍循环体中的语句(“循环体”就是do后面大括号{}中的内容)。接着判断while中的条件,如果条件成立,就执行循环体中的语句。然后再次判断条件,重复上述过程,直到条件不成立就结束while循环
  • do-while循环的特点:不管while中的条件是否成立,循环体中的语句至少会被执行一遍
  • 其实do while循环的用法跟while循环是差不多的,这里就不举例子了。

 

十一、循环结构-for循环

结构形式

1 for (语句1; 条件; 语句2) {2     语句3;3     语句4;4     ...5 }
  • for循环开始时,会先执行语句1,而且在整个循环过程中只执行一次语句1
  • 接着判断条件,如果条件成立,就会执行循环体中的语句(“循环体”就是for后面大括号{}中的内容)
  • 循环体执行完毕后,接下来会执行语句2,然后再次判断条件,重复上述过程,直到条件不成立就结束for循环

 

十二、break和continue

1.break,它的作用是跳出switch语句。它也可以用在循环结构中,这时候它的作用是跳出整个循环语句。

2.continue,它的作用是跳过这一次循环,直接进入下一次循环。

 

十三、函数基本概念

1.任何一个C语言程序都是由一个或者多个程序段(小程序)构成的,每个程序段都有自己的功能,我们一般称这些程序段为“函数”。能。

2.为了方便调用和区分这些函数,我们需要为每一个函数都起一个唯一的名称,函数的命名必须按照标识符命名规则。利用函数名就可以调用到对应的函数。

 

十四、函数的定义

1.任何一个函数在使用之前都必须进行定义

2.函数的定义格式如下:

1 返回值类型  函数名(形式参数列表)2 {3     函数体4 }

 

十五、形式参数和实际参数

1.基本概念

1> 形式参数:在定义函数时,函数名后面的小括号()中定义的变量称为形式参数,简称形参

2> 实际参数:在调用函数时传入的值称为实际参数,简称实参

2.调用函数时传递的实参个数 必须和 函数的形参个数必须保持一致

3.当使用基本数据类型(char、int、float等)作为实参时,实参和形参之间只是值传递,修改形参的值并不影响到实参

4.函数可以没有形参

 

十六、返回值类型

1.返回值就是函数调用完后,返回给函数调用者的结果,用return关键字进行返回。定义函数时,要指明函数的返回值类型

2.一个函数可以没有返回值,如果没有返回值,应该用void表示返回值类型

3.如果一个函数没有返回值,最后面的return语句可以省略

4.如果一个函数没有明确写出返回值类型,那么代表这个函数的返回值类型是int

 

十七、return

1.return语句可以在函数内部返回一个值给函数调用者

2.一个函数内部可以多次使用return语句,使用了return语句后,函数就会马上停止执行,return语句后面的代码就不再被执行

 

十八、函数定义的注意

1.函数名不能重复

2.每一个函数都应该独立定义,不能嵌套定义

 

十九、一维数组

1.一维数组的定义的形式为:类型  数组名[元素个数];

2.一维数组的初始化形式是:类型  数组名[元素个数] = {元素1, 元素2, ...};

 

十九、二维数组

1.二维数组的定义形式:类型  数组名[行数][列数];

2.二维数组的初始化:数据类型 数组名[行数][列数]= {{一维元素}, {一维元素}, {...}};

 

二十、字符串简介

字符串可以看做是一个特殊的字符数组,为了跟普通的字符数组区分开来,应该在字符串的尾部添加了一个结束标志‘\0‘。‘\0‘是一个ASCII码值为0的字符,是一个空操作符,表示什么也不干。所以采用字符数组存放字符串,赋值时应包含结束标志‘\0‘,如图所示。

 

二十三、字符串的输出

我们可以使用stdio.h中两个函数来输出字符串,分别是printfputs函数

 

二十四、字符串的输入

在stdio.h中有2个函数可以用来接收用户输入的字符串,分别是scanfgets函数

 

二十五、字符串数组

1.字符串数组简介用来存放字符量的数组称为字符数组。其定义的一般形式是:char 数组名[数据长度];

2.可以把字符串数组看作是一维数组,它的元素是字符串。

 

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------

详细请查看:www.itheima.com