二c语言初阶之分支和循环
Posted I am Supreme
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二c语言初阶之分支和循环相关的知识,希望对你有一定的参考价值。
1 分支语句
1.1 if
if分支语句常用于选择结构
1.1.1if语句的语法结构
语法结构:
if(表达式)
语句;
if(表达式)
语句1;
else
语句2;
//多分支
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
演示代码:
#include <stdio.h>
//代码1
int main()
{
int age = 0;
scanf("%d", &age);
if(age<18)
{
printf("未成年\\n");
}
return 0;
}
代码2
//代码2
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if(age<18)
{
printf("未成年\\n");
}
else
{
printf("成年\\n");
}
return 0;
}
1.2 switch
switch语句也是一种分支语句。 常常用于多分支的情况。
比如:
输入1,输出星期一
输入2,输出星期二
输入3,输出星期三
输入4,输出星期四
输入5,输出星期五
输入6,输出星期六
输入7,输出星期天
用if else的形式则太复杂
1.2.1 switch语句
switch(整型表达式)
{
case 整形常量表达式:
语句;
}
在switch语句中,我们没法直接实现分支,搭配break使用才能实现真正的分支。
比如:
#include <stdio.h>
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. 输入1-5输出的是“weekday”;
2. 输入6-7输出“weekend”
所以我们的代码就应该这样实现了:
#include <stdio.h>
//switch代码演示
int main()
{
int day = 0;
switch(day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("weekday\\n");
break;
case 6:
case 7:
printf("weekend\\n");
break;
}
return 0;
}
break语句的实际效果是把语句列表划分为不同的部分。
default子句:
当 switch表达式的值并不匹配所有case标签的值时,这个default子句后面的语句就会被执行。
所以,每个switch语句中只能出现一条default子句。
2、循环语句
- while
//while 语法结构
while(表达式)
循环语句;
while语句中的break:break在while循环中的作用:其实在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。 所以:while中的break是用于永久终止循环的。
continue在while循环中的作用就是:continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。
- for
for(表达式1;表达式2;表达式3)
循环语句;
表达式1 表达式1为初始化部分,用于初始化循环变量的。 表达式2 表达式2为条件判断部分,用于判断循环时候终止。 表达式3 表达式3为调整部分,用于循环条件的调整。
for循环和while的区别:可以发现在while循环中依然存在循环的三个必须条件,但是由于风格的问题使得三个部分很可能偏离较远,这样查找修改就不够集中和方便。所以,for循环的风格更胜一筹。 for循环使用的频率也最高。
- do while
do
循环语句;
while(表达式);
do语句的特点:循环至少执行一次,使用的场景有限,所以不是经常使用
练习题一:编写代码,演示多个字符从两端移动,向中间汇聚。
#include <stdio.h>
int main()
{
char arr1[] = "welcome to here"
char arr2[] = "###################"
int left = 0;
int right = strlen(arr1)-1;
printf("%s\\n",arr2);
//while循环实现
while(left<=right)
{
Sleep(1000)
arr2[left]
arr2[right]
left++;
right--;
printf("%s\\n",arr2);
}
//for循环实现
for (left=0, right=strlen(src)-1);left<=right;left<=right;left++,right)
{
Sleep(1000)
arr2[left]
arr2[right]
printf( "%s\\n",target);
}
return 0;
}
练习二:编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则提示登录成,如果三次均输入错误,则退出程序。
int main()
{
char psw[10] = "" ;
int i = 0;
int j = 0;
for (i = 0; i < 3 ; ++i)
{
printf( "please input:");
scanf("%s", psw);
if (strcmp(psw, "password" ) == 0)
break;
}
if (i == 3)
printf("exit\\n");
else
printf( "log in\\n");
return 0;
}
练习三:实现一个二分查找函数
int bin_search(int arr[],int left,int right,int key)
{
int mid = 0;
while(left<=right)
{
mid=(left+right)>>1;
if(arr[mid]>key)
{
right=mid-1;
}
else if(arr[mid]<key)
{
left=mid+1;
}
else
return mid;//返回下标
}
return -1;
}
以上是关于二c语言初阶之分支和循环的主要内容,如果未能解决你的问题,请参考以下文章
SAP WM初阶之LX04 Capacity Load Utilization