011-博学谷-年度钻石C++/C-C基础(3)

142 阅读3分钟

前置知识点复习

一、运算符和表达式

011-博学谷-年度钻石C++/C-C基础(3) 提娶码:xb2k

1、相除得到小数问题

1)两个整数相除,只是取整数,不会带小数

int a = 1 / 2; //a = 0

2)要想得到小数的结果,分子分母至少有一个是小数

double a

a = 1.0 / 2; //a = 0.5

a = 1 / (double)2;

2、前置++、后置++区别

int b, c;

b = 1;

c = 0;

c = b++; //后置++,先用后加

printf("c = %d, b = %d\n", c, b); //c = 1, b = 2

b = 1;

c = 0;

c = ++b;//前置++,先加后用

printf("c1 = %d, b1 = %d\n", c, b);//c = 2, b = 2

3、条件真假问题

1)0就是假

2)非0就是真,通常以1表示

4、逻辑与、或的短路规则

&&,左边为假,右边不执行

||,左边为真,右边不执行

5、 运算符优先级

int c = 0;

//&&优先级比 = 高

//1、0 && c 结果为假,0

//2、0 = 1(常量不能修改)

0 && c = 1; //err

二、类型转换

1、 隐式转换

double a;

int b = 1;

//编译器自动转换,把b转换为double类型后,再给a赋值(隐式转换)

a = b;

printf("%lf\n", b);

2、强制类型转换: (类型)变量名

int a = 10;

//a只有在此语句执行时,才强制转换为double类型,其它地址还是为int类型

printf("%lf\n", (double)a);

3、转换原则

占用内存字节数少(值域小)的类型,向占用内存字节数多(值域大)的类型转换,以保证精度不降低。

三、选择结构

1、if语句

1)if

//if是选择语句的关键字

//()为条件,如果条件为真,执行{},()后面是没有分号的

//if语句下面最好写{}

//if(-1) //条件为真

if (0) //条件为假

{

printf("test\n");

} //大括号后面没有分号

//if后面没有写{},只有第一个语句是属于if的

if (0) //条件为假,不执行if语句

printf("test1\n");

printf("test2\n");

//条件为假

if (0); //后面无条件执行

{

printf("22222222222222\n");

}

int a = 1;

//条件为赋值语句,先赋值,然后判断a是0,还是非0,结果为非0,条件为真

//建议if(3 == a),常量放左边

if (a = 3)

{

printf("22222222222222\n");

}
  1. if else
int a = 1;

int b = 2;

if (a < b)

{

printf("最大值为: %d\n", b);

}

else //else后面不要接条件,else不是必须

{

printf("最大值为: %d\n", a);

}
  1. ifelse ifelse
int a = 10;

if (a == 10)

{printf("a == 10\n");

}

else if (a > 10)

{

printf("a > 10\n");

}

else if (a < 10)

{printf("a < 10\n");

}else{printf("这是不可能的\n");}

2、三目运算符?:

//三目运算符?: ,就是简洁版的if else

int a = 10;

int b = 20;

int c = 0;

//1、判断a > b结果

//2、如果为真,执行?后面

//3、如果为假,执行:后面

c = a > b ? a : b;

printf("最大值为:%d\n", c);

3、switch语句

int a;

printf("请输入楼层:");

scanf("%d", &a);

switch (a) //后面没有分号,条件只能是整型或字符型

{

case 1:

printf("按下的是1楼\n");

break; //break的作用,跳出switch语句,最好加上

case 2:

printf("按下的是2楼\n");

break;

case 3:

printf("按下的是3楼\n");

break;

default:

printf("其它\n");

break;

}
  1. 循环结构

1、 while语句

int i = 0;

int sum = 0;

//1、判断i <= 100是否成立,如果为真,执行{}语句,如果为假,跳出循环

//2、{}语句执行完一次后,再重复1的操作

while (i <= 100)//没有分号

{

sum += i;

i++;

}//没有分号

printf("sum = %d\n", sum);

2、do while语句

int i = 0;

int sum = 0;

//while() 先判断再执行

//do while(), 第一次无条件执行,以后和while()一样

do

{

sum += i;

i++;

} while (i <= 100); //有分号

printf("sum = %d\n", sum);

3、 for语句

int i = 0;

int sum = 0;

//for()内部必须有2个分号";"

//1、i = 0

//2、判断 i <= 100

//如果条件为真,执行{}语句,如果条件为假,跳出for循环

//3、执行完{}内容,再执行i++

//4、重复2、3步骤

for (i = 0; i <= 100; ++i) //后面没有分号

{

sum += i;

}

printf("sum = %d\n", sum);

4、 死循环

while (1)

{

}
do

{

} while (1);
for (;;)

{

}

5、循环嵌套

任意循环都可以相互嵌套:

while ()

{

do

{

for ()

{

}

} while ();

}

四、跳转语句

break:

1)跳出当前的switch语句

2)跳出当前的内循环语句,跳出整个循环

continue: 只能用于循环语句,跳出本次循环,下一次继续执行

goto: 不是循环语句的专属,无条件跳转,不建议滥用

总结

一、思维导图

二、思考任务(课后练习)

猜字游戏(在Linux平台下编写):

1)随机函数(产生四个0-9之间的数字,不是产生一个四位数)

A.srand( (unsigned)time(NULL) ); 以当前时间为准,设置随机种子

注意:此函数,在每次开始游戏后调用一次即可

B.rand();

注意:rand()函数,每调用一次,产生一个随机数字

以上所需头文件:

#include <stdlib.h> //srand(), rand()

#include <time.h> //time()

2)比较算法