目录
if语句
语法结构 //1.单分支 if(表达式) 语句; //2.双分支 if (表达式) 语句1; else 语句2; //3.多分支 if(表达式1) 语句1; else if(表达式2) 语句2; else 语句3; //如果条件成立,要执行多条语句,需要使用花括号,使这些语句成为一个代码块 #include <stdio.h> int main() { if(表达式1) { 语句列表1; } else { 语句列表2; } return 0; } //这里的一对{}就是一个代码块
//例如成绩这个多分支结构
int main()
{
float score ;
scanf("%f", &score);
if (score < 60)
printf("不及格\n");
else if (score < 70)
printf("及格\n");
else if (score < 80)
printf("良好");
else if (score < 90)
printf("优秀");
else
printf("天才");
return 0;
}
悬空else
注:else与它最近的if匹配,和与哪个if对齐无关
int main()
{
int a = 0;
int b = 2;
if (a == 1)
if (b == 2)//else和这个if匹配,所以,不打印任何值
printf("hehe\n");
else //不对齐容易出错
printf("haha\n");
return 0;
}
代码风格--推荐书籍《高质量C/C++》
代码书写形式对比
//代码1 if (condition){ return x; } return y; //代码2 if(condition) { return x; } else { return y; } //代码3 int num=1; if(num==5) printf("hehe\n"); //代码4 int num=1; if(5==num) printf("hehe\n"); //最好使用代码2和代码4
//1.判断一个数是否为奇数
int a;
scanf("%d" , &a);
if (a % 2 ==1 )
{
printf("是奇数\n");
}
else
{
printf("不是奇数");
}
return 0;
}
//2.输出1-100之间的奇数
int main()
{
for(int i=1;i<=100;i++)//或者:for(int i=1;i<=100;i+=2)
if (i % 2 == 1) // printf("%d",i);
{
printf("%d,", i);
}
return 0;
}
switch 语句
switch语句也是一种分支语句,常常用于多分支的情况
//语法结构 switch(整形表达式)//字符型也可以,存储的是ASCII值 { case 整形常量表达式: 语句; }//不使用break无法实现真正的分支,会顺序执行
int main()
{
int day = 0;
scanf("%d", &day);
switch (day) //day决定入口
{
case 1:
printf("星期一\n", day);
case 2:
printf("星期二\n", day);
case 3:
printf("星期三\n", day);
case 4:
printf("星期四\n", day);
case 5:
printf("星期五\n", day);
case 6:
printf("星期六\n", day);
}
return 0;
}
//使用break语句
int main()
{
int day = 0;
scanf("%d", &day);
switch (day) //day决定入口
{
case 1:
printf("星期一\n", day);
break; //break决定出口
case 2:
printf("星期二\n", day);
break;
case 3:
printf("星期三\n", day);
break;
case 4:
printf("星期四\n", day);
break;
case 5:
printf("星期五\n", day);
break;
case 6:
printf("星期六\n", day);
break; //最后一个break可以不加,最好加上,编程好习惯
}
return 0;
}
//break不是非要加,根据实际情况,并不是语法上的错误
//例如:1-5输出工作日,6-7输出休息日
int main()
{
int day = 0;
scanf("%d", &day);
switch (day) //day决定入口
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日\n", day);
break;
case 6:
case 7:
printf("休息日\n", day);
break;
}
return 0;
}
default子句
当switch表达式的值并不匹配所有case标签的值时,这个default子句后的语句就会被执行,所以每个switch语句只能出现一条default语句,但是它可以出现在语句列表的任何位置。在每个switch语句中都放一条default子句时个好习惯,可以加break,也可以不加。
//例如
int main()
{
int day = 0;
scanf("%d", &day);
switch (day) //day决定入口
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日\n", day);
break;
case 6:
case 7:
printf("休息日\n", day);
break;
default:
printf("输入错误\n");
break;
}
return 0;
}
//练习:求m,n的值
int main()
{
int n = 1;
int m = 2;
switch (n)
{
case 1:
m++; //m=3
case 2:
n++; //n=2
case 3:
switch (n)
{
//switch 允许嵌套使用
case 1:
n++;
case 2:
m++; //m=4
n++; //n=3
break; //break跳出的是自己的switch语句
}
case 4:
m++; //m=5
break;
default:
break;
}
return 0;
}
注:break跳出的是自己所在的switch语句
循环语句
-
while
-
do while
-
for
while 循环
//while 语法结构 while(表达式)//表达式为真,执行代码块 { 代码块; }
//例如:在屏幕上打印1-10的数字。
int main()
{
int i = 1;
while (i <= 10)
{
printf("%d ", i);
i++;
}
return 0;
}
while循环中的continue和break
-
只要遇到break,就停止后期所有的循环
int main()
{
int i = 1;
//while循环中break用于永久的终止循环
while (i <= 10)
{
if (i == 5)
break;
printf("%d ", i);
i++;
}
return 0;
}
-
continue用于终止本次循环
//while循环中,continue的作用是跳过本次循环continue后的代码,直接去判断部分,看是否进行下一次循环
while (i <= 10)
{
if (i == 5)
continue;
printf("%d ", i);
i++;
}
return 0;
getchar()
//不断的从键盘输出一个字符 //ctrl+Z--getchar 读取结束 //getchar读取任何字符,包括\n
int main()
{
int ch=0;//getchar()从键盘获取一个字符
//printf("%c\n", ch);//输出这个字符
//putchar(ch);putchar()输出这个字符
//printf("%d", ch);//输出这个字符的ASCII码值
while ((ch = getchar()) != EOF)
{
putchar(ch);
}
return 0;
}
int main()
{
char passward[20] = { 0 };
printf("请输入密码:>");
scanf("%s", passward);
printf("请确认密码:(Y/N)>");
int ch = getchar();
if (ch == 'Y')
{
printf("确认成功");
}
else
{
printf("确认失败");
}
return 0;
}
for 循环
初始化过程只被执行一次
//语法结构 for(初始化;判断条件;调整) { 循环语句; }
for循环中break,continue语句
//break:终止整个循环
int main()
{
int i;
for (i = 1; i <= 10; i++)
{
if (i == 5)
break;
printf("%d ", i);
}
return 0;
}
//continue:结束本次循环,直接跳到调整部分
int main()
{
int i;
for (i = 1; i <= 10; i++)
{
if (i == 5)
continue;
printf("%d ", i);
}
return 0;
}
for语句的循环控制变量
不可在for循环体内修改循环变量,防止for循环失去控制
建议for语句的循环控制变量的取值采用“前闭后开区间”写法
int main()
{
int arry[10] = { 0 };
int i = 0;
for (i = 0; i < 10; i++)//前闭后开区间,循环10次
{
printf("%d ", arry[i]);
}
return 0;
}
-
for循环中,初始条件,判断部分,和调整部分都可以省略,当省略判断部分时,会进入死循环(最好不要省略):
//例如:
int main()
{
int i = 0;
int j = 0;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{
printf("hehe\n");
}
}
return 0;
}
int main()
{
int i = 0;
int j = 0;
for (; i < 3; i++)//省略初始条件部分
{
for (; j < 3; j++)//省略初始条件部分 i=0循环结束后,j始终为3,所以只执行3次。
{
printf("hehe\n");
}
}
return 0;
}
//判断循环了几次
int main()
{
int i = 0;
int k = 0;
for (i = 0, k = 0; k = 0; k++, i++)//k=0为赋值为0,所以为假,循环0次
{
k++;
}
return 0;
}
do while 循环
//语法结构 do 循环语句; while(表达式);
//例如:
int main()
{
int i = 1;
do
{
printf("%d ", i);
i++;
} while (i <=10);
return 0;
}
do while 循环break,continue语句
//break终止循环
int main()
{
int i = 1;
do
{
if (i == 5)
break;
printf("%d ", i);
i++;
} while (i <=10);
return 0;
}
//continue 跳出本次循环到判断条件(同while)
int main()
{
int i = 1;
do
{
if (i == 5)
continue;
printf("%d ", i);
i++;
} while (i <=10);
return 0;
}//输出结果为循环
do 语句的特点
循环至少执行一次