2.1 分支与循环

语句语句

C中语句分以下五类:

  1. 表达式语句
  2. 函数调用语句
  3. 控制语句
  4. 复合语句
  5. 空语句

控制语句

控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语言由九种控制语句。可以分为三类:

  1. 条件判断语句,也叫分支语句:if语句,switch语句;
  2. 循环执行语句:dowhile语句、while语句、for语句;
  3. 转向语句:break语句、goto语句、continue语句、return语句。

C语言是一种结构化的程序设计语言,生活中万事万物都可以分成三种结构:顺序、选择、循环

分支语句(选择结构)

  • if
  • switch

if语法结构

if(表达式)//括号中为真执行
   语句;

if(表达式)
   语句1;
else
  语句2;

多分支
if(表达式)
   语句1;
else if
  语句2;
else
  语句3

相关实例if

3==5为假

int main()
{
if(3==5) //条件为假,不执行 
   printf("hehe\n");
return 0;
}

输出多条语句需{ }

int age =20
int main()
{
if(age<18) 
{
   printf("未成年\n");//若要输出多条语句,多条语句应该使用{ }括住
   printf("禁止观看\n");
}
else
   printf("已经成年");
return 0;
}

年龄

int age = 10;
if(age<18)
{
   printf("未成年\n");//若要输出多条语句,多条语句应该使用{ }括住
   printf("禁止观看\n");

//else if(18<= age <28)//此处有错误,age=10进入,先执行判断18<=age,结果为假-0,再判断0<28,结果为真,结果错误打印了下方内容
else if(age>=18 && age<28);
     printf("青年请入\n");
else if(age>=28 && age<58);
     printf("中年请入\n");
else
     printf("老年\n")
return 0;
}

if悬空

int a = 0;
int b =2;
{
if (a==1)
   if(b==2)
      printf("hh\n");
   else 
      printf("jj\n");       
return 0;
}
\\一个if对应一个else,上例首个if悬空,未有else对应,代码输出无结果
\\else与离它最近的if对应 

良好书写习惯

int main()
{  int num = 3;
   if(5 == num)//if( num ==5)容易漏写等号
   printf("hhe\n");
   return 0;
}

判断一个代码是否为奇数

int main()
{
 int num=0;
 scanf("%d\n",&num) ;
if ( (num%2) ==1)
printf("是奇数\n");
else
printf("是偶数\n");
 return 0;
}

输出零到一百内的奇数

int main()
{
	int i = 1;
	while (i <= 100)
	{   if (i % 2 == 1)
		printf("%d\n", i);
	i++;
	}
return 0;
}

swtich语法结构

switch(整型表达式)
{
    语句项目;
}

    语句项目:
case 整型常量表达式
        语句;

相关实例switch

星期几

int day = 0;
scanf("%d",&day);
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;
}

工作日or休息

int day = 0;
scanf("%d",&day);
switch(day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
           printf("weekday\n");
           break;
case 6:
case 7:
           printf("weekend\n");
           break;
default://若有人输入一到七以为的值
           printf("请输入一到七以内的数字\n");
           break;
}

小计算

int main()
{
     int n = 1;
     int m = 2;
switch (n)
{          
   case 1: m++;
   case 2: n++;
   case 3: 
           switch (n)
           {
            case 1: n++;
            case 2: m++;n++;
            break;
           }
   case 4:
      m++;
      break;
   default:
      break;
}
printf("m=%d,n=%d\n",m,m);
return 0;
}

循环语句

  • while
  • for
  • do while

while语法结构

while(若为真执行)
{
循环语句;
}

相关实例while

括号中为1永远真,永循环

int main()
{
   while(1)
   printf("hehe\n");
return 0;
}
结果是不停打印hehe,以为括号中一直为真

遇break跳出循环

int main()
{
   int i = 1;
   while ( i<=10 )
   {   
       if(5 == i)
            break;
       printf("%d\n",i);
       i++;
   }
   return 0;
}
//结果打印1 2 3 4 ,第五次循环时候遇到break 跳出循环
//while循环中,break用于永久地终止循环

遇continue跳本循环(没跳出)

int main()
{
   int i = 1;
   while ( i<=10 )
   {   
       if(5 == i)
           continue;
       printf("%d\n",i);
       i++;
   }
   return 0;
}
//结果打印1 2 3 4 _ 下划线表示程序一直在运行,跳不出循环
//while循环中,continue的作用是直接跳过本次循环Continue后面的部分,直接去判断要不要进行下一次循环
//本程序中i=5时候,进入continue,后i等于5又进入if判断,再进行continue

遇continue跳本循环(跳出)

int main()
{
   int i = 1;
   while ( i<=10 )
   {   
       i++;
       if(5 == i)
           continue;
       printf("%d\n",i);

   }
   return 0;
}
输出2 3 4 6 7 8 9 10 11

for语法结构

for循环的语法是:
for (初始化; 循环条件; 更新) 
{
  代码块;
}

相关实例for

for循环中break跳出循环

int main()
{ 
  int i = 0;
  for(i=1;i<=10;i++)
  {
	if(i==5)
	{
	  break;
	}
	printf("%d ",i);
  }
 return 0;
}
//结果为1 2 3 4

do...while...循环语法结构

do
  循环语句;
 while(表达式);
//循环体至少要执行一次

相关实例do while

int main()
{
  int i=1;
  do 
  {
	i++;
	if(i==5)
	  continue;
	printf("%d\n",i);
  }
  while(i<=10);
  
return 0;
}
有关循环的一些项目跳转,从n!到猜数字小游戏,我觉得很有参考价值欸

go to 语句

C语言中提供了可以随意滥用的goto语句和标记跳转的标号。

从理论上说goto语句是没有必要的,实践中没有goto语句也可以写出代码。

但是某时候也是有用的,如常见程序在某些深度嵌套结构的处理过程。

例如:一次跳出多层循环。

多层循环这种情况使用break无法达成目标,break只可以从最内层循环退出到上一层循环。

int main()
{
  
again:
  printf("haha\n");
  printf("hehe\n");
  goto again;
  return 0;
}
//可以跳转,但是不可以跨函数跳转

真正适用场景:

for(...)
{
  for(...)
  {
	for(...)
	{
	if(disaster)
	  goto error;
	}
  }
}
error:
if (disaster)
//1.电脑运行一分钟后关机
//2.若输入:我是猪,取消关机
#include <string.h>
#include <stdio.h>
int main()
{
  
  char input[20]={0};
  system("shutdown -s -t 60");
again:
  printf("请注意你的电脑,将会在六十秒内关机,输入:我是猪,取消关机\n");
  scanf("%s",&input);
  if (strcmp(input,"我是猪") == 0)
  {
     system("shutdown -a");
  }
  else
  {
    goto again;
  }
  
  return 0;

}
//上方选择Release版本而非debug版本,在文件Release目录下寻找exe文件即可,可当作恶作剧文件发送
//1.电脑运行一分钟后关机
//2.若输入:我是猪,取消关机
#include <string.h>
#include <stdio.h>
int main()
{
  
  char input[20]={0};
  system("shutdown -s -t 60");
while(1)
{
  printf("请注意你的电脑,将会在六十秒内关机,输入:我是猪,取消关机\n");
  scanf("%s",&input);
  if (strcmp(input,"我是猪") == 0)
  {
     system("shutdown -a");
     break;
  }

  
  return 0;

}
//上方选择Release版本而非debug版本,在文件Release目录下寻找exe文件即可,可当作恶作剧文件发送

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务