一丶什么是语句
二丶分支结构(循环语句)
1.选择语句的基本结构图
2.if语句
(1).
if(表达式)
语句1:
(2)
if(表达式)
语句1;
else
语句2;
(3)多分支型
if(表达式)
语句1;
else if(表达式2)
语句2;
else
语句3;
#include <stdio.h>
//代码1
int main()
{
int age = 0;
scanf("%d", &age);
if (age < 18)
{
printf("未成年\n");
}
}
//代码2
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if (age < 18)
{
printf("未成年\n");
}
else //else与最近的上面那个if相匹配
{
printf("成年\n");
}
}
//代码3
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if (age < 18)
{
printf("少年\n");
}
else if (age >= 18 && age < 30)
{
printf("青年\n");
}
else if (age >= 30 && age < 50)
{
printf("中年\n");
}
else if (age >= 50 && age < 80)
{
printf("老年\n");
}
else
{
printf("老寿星\n");
}
}
在上面的代码中,if括号里的语句如果是成立的话即可执行代码,否者不执行或者进入下个语句。表达式的结果为0的话就表示假,非0的话就表示真。同时如果要实现多个语句的执行的话,就需要在if语句后跟代码段。即如下情况
if(表达式1)
{
多条语句;
}
else
{
多条语句;
}
return 0;
注:用{}隔开即可
在书写if语句时,我们需要注意的是注意书写格式和规范性,规范的书写习惯能让我们更好的阅读语句,在发生bug时也能更好的检查错误。
3.练习
(1)判断一个数是否为奇数
(2)输出1-100之间的奇数
参考答案如下:
#include<stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if (num % 2 == 0)
printf("该数不是奇数");
else
printf("该数是奇数");
return 0;
}
int main()
{
int n = 0;
while (n < 101)
{
if (n % 2 == 1)
printf("%d ", n);
n++;
}
return 0;
}
4.switch语句
(1)switch常用于多分支情形下,在分支太多的情况下,if语句就显得冗杂多余了。switch语句语句结构如下
switch语句在特定情况下方便很多,例如下面这个:
int main()
{
int day = 0;
switch(day)
{
case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期天\n");
break;
}
return 0; }
(1)while语句的语句结构如下:
具体写做 {while(语句)
循环语句;}
(2)在switch语句中有停止语句,在while语句中同样也是如此。
break在循环语句中,遇到break的话,就会停止后面的所有循环,直至终止循环。
并且是永久终止循环,即直接跳出这个循环,结束进程或者进入下个语句。
continue语句则是为了结束当前语句的循环,即continue语句后面的语句不再执行,而是跳到while语句处,进行下一次的循环判断。
示例如下:
int main()
{
int i = 1;
while(i<=10)
{
if(i == 5)
break;
printf("%d",i);
i++;
}
return 0;
}
上诉代码输出的结果为1234,即在i==5的时候整个循环就结束,不再执行。
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
if(i == 5)
continue;
printf("%d ", i);
i = i+1;
}
return 0; }
上诉代码的输出结果也为1234,但是与上面那个不同的是,上面的代码是因为跳出了循环,而这个是因为i++语句在continue语句后面,因此在i==5被continue语句中断那次循环后,i的值一直是5,输出不了后面的值了。
3.for循环
(1)for循环的结构
for(语句1:语句2:语句3)
循环语句;
for后面的三个语句功能如下:
示例如下:
#include <stdio.h>
int main()
{
int i = 0;
//for(i=1/*初始化*/; i<=10/*判断部分*/; i++/*调整部分*/)
for(i=1; i<=10; i++)
{
printf("%d ", i);
}
return 0; }
(2)break和continue语句在for语句中与while语句中大同小异,具体用法和作用参考上面的while部分。
//代码1
#include <stdio.h>
int main()
{
int i = 0;
for(i=1; i<=10; i++)
{
if(i == 5)
break;
printf("%d ",i);
}
return 0; }
//代码2
#include <stdio.h>
int main()
{
int i = 0;
for(i=1; i<=10; i++)
{
if(i == 5)
continue;
printf("%d ",i);
}
return 0; }
4.do..while语句
(1)do...while的语法
do
循环语句;
while(表达式);
(2)do..while的限制条件是至少得循环一次,因此没有上面2种的使用范围广,我们不是经常使用
示例:
int main()
{
int i = 10;
do
{
printf("%d\n", i);
}while(i<10);
return 0; }
(3)do..while语句中的break和continue与while中基本一样,参照上诉就可了
5.如果想快速熟悉分支语句和循环语句的话,可以多做做以下的题目,能加深印象和提高熟练度.
折半查找算法
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};
int left = 0;
int right = sizeof(arr)/sizeof(arr[0])-1;
int key = 7;
int mid = 0;
while(left<=right)
{
mid = (left+right)/2;
if(arr[mid]>key)
{
right = mid-1;
}
else if(arr[mid] < key)
{
left = mid+1;
}
else
break;
}
if(left <= right)
printf("找到了,下标是%d\n", mid);
else
printf("找不到\n");
}
四丶后语
分支结构和循环结构是我们平时不可避免的2种方式,因此必须得熟练熟练再熟练,只有熟练掌握了这2种结构才能在后面的学习中不断进步。
最后,谢谢大家的观看!!