黑马程序员——06C语言基本语法

来源:互联网 发布:sql语句相同数据合并 编辑:程序博客网 时间:2024/05/29 11:27

   ------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

一、 基本运算:

1、算术运算

a、加法运算 +(可以表示正号)

b、减法运算 -(可以表示负号)

c、乘法运算 *

d、除法运算 / (整数/整数=整数  例 1/2=0)

e、取余运算% (也叫模运算,%两侧只能是整数,正负性取决于%左侧的数值)

注意:

(1)、自动类型转换 (double —> int) int a =10.5+1.7;

(2)、强制类型转换 (double —> int) int a = (int)10.6;

        将大类型转换成小类型会丢失精度

(3)、自动类型提升 将小类型提升为大类型 double a = 5.2 + 3;

         double b= 1.0 / 2;    解决除法的精度问题。

2、赋值运算

a、简单赋值 int a = 1;

b、复合赋值 复加减乘除余 例如:a += 4 + 5; 

3、自增自减运算符

a、a++, ++a, a--, --a (a只能是变量)

b、a++ 是表示先使用a的值然后再使a的值递增1,而++a是先使a递增1再使用a的值

4、sizeof

a、作用:用来计算一个变量或者一个常量、一种数据类型所占的内存字节数。

b、形式:(1) 、sizeof(变量\常量)

                (2)、sizeof 变量\常量

                (3)、sizeof(数据类型) (括号不能去除)

5、关系运算(比较运算)

a、条件判断:成立执行代码,不成立不执行

b、真假:条件成立为’真’,不成立为’假’,任何非0的值都为“真”,只有0才为“假”。

c、关系比较:==、!=、>、>=、<、<=;条件成立返回1,不成立返回0;

(1)、优先级:(==,!=)相等< (>,>=,<,<=)相等,且前者小于后者;关系运算符的优先级小于算术运算符。

(2)、关系运算符的结合方向是“从左到右”:4 >3>2

6、逻辑运算

a、逻辑与:条件A && 条件B 两个条件只要有一个不成立,结果都为0,也就是’假’;

(1)、判断的时候,先判断第一个条件是否成立,不成立则不再判断第二个条件是否成立,直接返回假;成立则继续判断第二个条件是否成立,成立返回真,不成立返回假。

(2)、判断a的值在(3,5)的正确方法是(a>3) && (a<5) 

(3)、结合方向:“从左至右”

b、逻辑或: || 两个条件只要有一个成立,结果就为1,也就是’真’;

(1)、判断的时候,先判断第一个条件是否成立,成立则不再判断第二个条件是否成立,直接返回真;不成立则继续判断第二个条件是否成立,成立返回真,不成立返回假。

(2)、判断a的值在(-∞,3)或者(5,+∞)的正确方法是(a<3)|| (a>5)

(3)、结合方向:“从左至右”

c、逻辑非:对条件取反,若条件成立,返回假;若条件不成立,返回真。

(1)、结合方向:“从右至左”

7、三目运算符

a、条件 ? 数值1 : 数值2; 条件成立返回数值1,条件不成立返回数值2;

b、例:取a、b、c最大值

#include <stdio.h>

Int main()

{

int a = 100 , b = 90 , c = 500 ;

int abMax = a > b ? a : b;

int max = abMax > c ? abMax : c;

printf(“最大值为%d\n”,max);

return 0;

}

二、流程控制

(一)、选择结构

1、if

a、语句结构

(1)、if的第1种结构

 if(条件)

 {

    语句1;

    语句2;

    ......

 }

(2)、if的第2种结构

 if(条件1)

 {

     语句1;

     语句2;

     ......

 } 

 else

 {

      语句;

 }

 

 (3)、if的第3种结构

 if(条件1)

 {

     语句1;

     语句2;

     ......

 }

 else if(条件2)

 {

      语句;

 }

 else if(条件3)

 {

      语句;

 }

 else if(条件4)

 {

      语句;

 }

 else 

 {

      语句;

 }

(4)、if的第4种结构

 if (条件)

   语句1;

b、使用注意:

(1)、If (条件)语句1;语句2;语句2与if无关;if只控制是否执行语句1;

(2)、同一时刻,只有一个大括号里的代码会被执行

(3)、比较大小时,常量值放左边,变量放右边;例:if (0 == a)

(4)、赋值运算符,不要写成两个=;

(5)、如果要在if后面的语句中定义新的变量,必须用大括号{};

        例:if(1) int a = 1; 这个是错误的,因为作用域不明确;应改为if(1) { int a = 1;}

2、switch

a、语句结构

switch(数值)

{

case 数值1:

执行语句;

 break;

case 数值2:

执行语句;

 break;

default: 

执行语句;

break;

}

b、特点:

(1)、默认情况下,只有一个case后面的代码会被执行break作用是退出整个switch语句

(2)、如果一个case后面没有break,而且这个case成立,就会按顺序执行后面所有case中的语句,直到遇到break为止。

(3)、如果要在case后面定义一个新的变量,必须要用大括号{}包住;

c、if和switch

(1)、if语句能完成的功能,switch并不一定能完成;int a = 10; if (a>100){};

(2)、有些情况下,两种语句可以互换;

(3)、switch能完成的功能,if语句都能完成

(二)、循环结构

1、while

a、语句结构

While (条件)

{

循环体

}

b、运行原理

A、如果一开始条件就不成立,永远不会执行循环体

B、如果条件成立,就会执行一次循环体,执行完毕,再次判断条件是否成立,往复循环。

#include <stdio.h>

int main()

{

int n = 0;

while ( n <= 0 )

{

printf(“请输入一个正整数:\n”);

scanf(“%d”,&n);

}

printf(“此正整数为%d\n”,n); 

return 0 ;

}

(3)、最简单的死循环: while(1);

2、do while

a、语句结构

do

{

循环体

}

While(条件);

b、特点:不管一开始的条件是否成立,至少会执行一次循环体;while(条件)后面有“;”。很多情况下,while和do while可以互换

3、for

a、语句结构

for (语句1; 条件; 语句2)

{

循环体

}

语句1:初始化语句;

语句2 :增量语句(执行完循环体后再执行的语句);

b、运行原理

(1)、for一开始就会执行一次语句1(整个for循环只会执行一次语句1);

(2)、判断条件是否成立,如果成立,就会执行一次循环体,然后就会执行语句2,再次判断条件是否成立,往复循环;

(3)、语句1,语句2,语句3;逗号表达式(逗号运算符);

(4)、for循环的变量定义在内部,循环完毕变量回收;while循环只能使用外部变量,变量一直存在。

c、循环嵌套实例:

#include <stdio.h>

int main()

{

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

{

for ( int j=1 ; j<10 ; j++ )

{

Int sum = i * j;

printf(“%d*%d=%d  ”,i,j,sum);

}

printf(“\n”);

}

return 0 ;

}

d、使用注意

(1)、for()后不要写分号;

(2)、错误写法:  for ( int i=0 ; i<3 ;i++) int a=10; 作用域不明确;

(3)、for ( int i=0 ; i<3 ;i++) { int i=10;}这个是正确的,因为for()内的i的作用域比代码块中的i的作用域要大。

(4)、最简单的死循环: for(;;);

4、如何选择循环

a、一般优先选择for循环

b、然后再考虑while (比如验证用户输入的数是否为正整数)

c、最后在考虑do while

5、break和continue

a、break

(1)、使用场合:switch语句:退出整个switch语句;循环结构:退出整个循环结构。

(2)、注意点:只对最近的循环结构有效

b、continue

(1)、使用场合:循环结构:结束当前这次的循环体,进入下一次循环体。

(2)、注意点:只对最近的循环结构有效


0 0