C语言之 分支语句与循环语句

语句:

用分号(;)隔开的就是一条语句

如:

int a = 0;

int b =0;

if语句:

语法结构:

if(表达式)

语句1;

esle

语句2;

如:输出1-100内的所有奇数

#include<stdio.h>
int main()
{
    int i = 0;
    while(i<100)
    {
    
        if(i%2==1)
        printf("%d  ",i);
        i++;
}
    return 0;
}

if括号内的内容用于判断;

如果判断条件不止一个,可以使用else if 语句:

如:

include<stdio.h>
int main()
{
int i =0;
scanf("%d\n",&i);
if(i%2==0)
printf("%d是偶数\n",i);
elseif(i%2==1)
printf("%d是奇数\n",i);
else
printf("%d既不是奇数也不是偶数\n",i);
return 0;
}

if和else如果要控制多个语句,则应该用{}

else与离它最近的尚未匹配的if相匹配;

switch语句

语法结构:

switch(整形表达式)

{

语句;

}

switch语句中,常常和case与break一起使用

如:

#include<stdio.h>
int main()
{
    int day = 0;
    scanf("%d",&day);
    switch(day)
    {
    case 1:
        printf("星期一");
        break;
    case 2:
        printf("星期二");
        break;
    case 3:
        printf("星期三");
        break;
    case 4:
        printf("星期四");
        break;
    case 5:
        printf("星期五");
        break;
    case 6:
        printf("星期六");
        break;
    case 7:
        printf("星期七");
        break;
default:
      printf("输入错误");
break;
     }
    return 0;
}

其中,case为入口,break为出口,如果没有break,从case1入口进入的话,则输出为:

星期一星期二星期三星期四星期五星期六星期七

default为输出错误代码,如果scanf函数中输入day的值为8的时候,则执行结果为:输入错误

case后必须为整形常量(数字)

编程好习惯:在每个switch语句后都放入一个default,甚至可以再放一个break;

循环语句:

三大循环语句:

while

for

do    while

while循环:

语法结构:

while(表达式)

{

循环语句;

}

如:用while循环打印1-10

#include<stdio.h>
int main()
{
    int i=1;
    while(i<=10)
    {
        printf("%d\n",i);
    i++;
    }
    return 0;
}

while循环中,常常伴有break和continue的使用

break:终止语句,停止break语句后的所有循环

continue:终止本次循环后跳到while语句的开头

如:

#include<stdio.h>
int main()
{
    int i=0;
    while(i<=10)
    {
            
            if(i==5)
        break;
        printf("%d\n",i);
    
    i++;
    }
    return 0;

打印结果为:0 1 2 3 4 

因为i==5时出现break,则此后的循环不再进行。

又如:

#include<stdio.h>
int main()
{
    int i=0;
    while(i<=10)
    {
            
            if(i==5)
            continue;
        printf("%d\n",i);
    
    i++;
    }
    return 0;
}

此代码的输出结果为 0 1 2 3 4  

因为此时进入了死循环,

    while(i<=10)

    {

            if(i==5)

            continue;

i一直等于5,此循环一直进行

又如:

#include<stdio.h>
int main()
{
    int i=0;
    while(i<=10)
    {
		i++;
            
            if(i==5)
            continue;
        printf("%d\n",i);
    
    }
    return 0;
}

此代码的运行结果为 0 1 2 3 4 6 7 8 9 10 

当i=5时候,i++的值为6,此时不满足if语句的条件,所以直接跳过if语句,继续执行while语句

while((ch = getchar())!=EOF)

此代码的getchar为读取字符,相当于scanf;而putchar为输出字符,相当于printf;

当一段代码需要输入时,会先储存到输入缓存区,而后等待读取。注意,字符串的结束标识是'\0',这里不做过多解释。

for循环:(while循环的升级版)

语法结构:

for(exp1;exp2;exp3)

循环语句;

需要注意的是,exp1表示初始化,exp2表示判断,exp3表示调整

如计算10的阶乘

#include<stdio.h>
int main()
{
    int i=0;
    int n=0;
    int ret =1;
    int sum = 0;
    for(n=1;n<=10;n++)
    {
         ret=1;
        for(i=1;i<=n;i++)
{
           ret = ret * i;
}
}
            printf("%d\n",ret);
return 0;
}

此代码执行结果为3628800,即10的阶乘

break:跳出循环

continue:跳出次次循环后跳到for语句中

continue在while语句和在for语句中的作用大同小异(关键看调整的部分在continue之前还是之后)

注意:不可在for循环体内改变循环变量

如:

int main()

{

int i=0;

for(i=0;i<=10;i++)

if(i=5)

printf("%d",i);

return 0;

}

此代码中的if(i=5)中的=是赋值而不是判断,所以此代码的执行结果为死循环

1、建议for循环彩印前闭后开区间的写法;

2、for循环的初始化,调整,判断都可省略;

3、如果判断部分被省略,则判断条件就是:恒为真

4、因此,不要随便省略!

do.........while()循环:

语法:

do

循环语句;

while(表达式)

break和continue与在while语句中的作用相同

如:

#include<stdio.h>
int main()
{
int i = 0;
do 
{
   i++;
    printf("%d\n",i);
}
 while(i<=10);

    return 0;
}

注意,此时while需要加分号(;)

当循环中不止一条语句时,需要用{}(所有循环都应如此)

此代码输出结果为:1 2 3 4 5 6 7 8 9 10 11

小练习:

用循环语句查找数组中的元素

#include<stdio.h>
int main()
{
int arr[]={1,2,3,4,5,6,7,8,9,10};
int i=0;
int k=9;
int sz=(sizeof(arr)/sizeof(arr[1])) ;
for(i=0;i<sz;i++)
{
if(k==arr[i])
{

printf("已找到,下标是%d",i);
break;
}
if(i==sz)
printf("找不到了哦");
}
    return 0;
}

其中,int sz=(sizeof(arr)/sizeof(arr[1])) 为判断数组中元素的个数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值