目录
1.if语句
1.1if
if(表达式)
语句
表达式结果为0(假),语句不执行,表达式结果不为0(即为真),语句执行。
1.2分支中包含多条语句
if和else语句都默认只控制一条语句,若要控制多条语句要打{}。(个人建议:可以都打{})
1.3嵌套if
if(条件)
{ } //也可以写成
else if(条件) //if(条件)
{ } //{ }
else if(条件) //if(条件)
{ } //{ } 但效率会低一点
else
{ }
1.4悬空else问题
注意:else总是与它上面最近的且未配对的if配对
结果为
因为else和if(b == 2)配对,如果{if(b == 2) printf("hehe\n")}就会打印出haha
所以建议带上适当的{}
2.关系操作符
>,<,>=,<=,==(等于,=为赋值),!=(不等于)
关系表达式通常返回0或1,表示真假。C语言中0为假,非0为真。
一注意:如:if(a == 3)有些人会这样写if(3 == a),这样如果写成if(3 = a)时会报错,方便找错。(比较推荐)
二注意:多个关系运算符不宜连用,如:a<b<c 这样写错误,应写成a<b&&b<c
3.逻辑操作符(&&,||,!)中的短路
if(表达式1&&表达式2),当表达式1为假时,不会执行表达式2
if(表达式1||表达式2||表达式3),当表达式1为真,不会执行表达式2和3,当表达式1为假,若表达式2为真,不会执行表达式3
4.switch语句
注意:case 和后面的数字之间必须有空格;
每一个case语句最后要加break(若没有break,会执行下一个case语句,直到遇到break跳出循环),default后面也要加break。(当default在switch语句最后时可以不加)
5.for循环,do while循环
5.1for循环
for(表达式1;表达式2;表达式3)
表达式1 用于循环变量初始化
表达式2 用于循环结果条件判断
表达式3 用于循环变量的调整
注意:for循环中的continue时跳过本次循环后面的代码是回到表达式3,再到表达式2,再进行循环
5.2do while循环
注意:do { }while();,while()后有个;
6.猜数字游戏
#include <stdio.h>
#include <time.h> //引用了time函数
#include <stdlib.h>//引用了rand函数rand()产生随机数
void menu()
{
printf("***** *****\n");
printf("***** 1.play *****\n");
printf("***** 0.exit *****\n");
printf("***** *****\n");
}
void game()
{
int a = 0;
int b = rand()%100+1;//想要产生1到100的数字
int count = 5;
while (1)
{
if (count == 0)
{
break;
}
printf("你还有%d次机会\n", count--);
printf("请输入值:>");
scanf("%d", &a);
if (a < b)
{
printf("猜小了\n");
}
else if (a > b)
{
printf("猜大了\n");
}
else
{
printf("恭喜你!猜对了!答案是%d\n", b);
break;
}
}
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));//使产生的随机数发生变化
do
{
menu();
printf("please choose :>");
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("退出游戏");
break;
default:
printf("输入错误请重新输入\n");
break;
}
} while (input);
return 0;
}