C语言流程控制☀️

  • 版权声明:本文为博主原创文章,未经博主允许不得转载。

一、流程控制结构

(1)顺序结构:按书写顺序执行每一条语句。

(2)选择结构:对给定的条件进行判断,根据判断结果决定执行哪一段代码。

(3)循环结构:在给定条件成立的情况下,反复执行某一段代码。

二、选择结构-if

(一)if简单使用

  • (1) 第一种结构:
a) 如果条件为真,就执行后面的语句,否则不执行。

if(条件)

{

语句1;

语句2;

····

}```

- (2) 第二种结构:

a) 如果条件成立就执行语句1,否则执行语句2。

if(条件)

{

语句1;

}

else

{

语句2;

}```

  • (3) 第三种结构:
a) 先判断条件1,若成立则执行语句1,其它不执行;若条件1不成立,则检查条件2···,【注意】如果条件3成立,则说明前面的都不成立。所有的语句块只有一个会被执行。

if(条件1)

{

语句1;

}

else if(条件2)

{

语句2;

}

else (条件3)

{

语句3;

}```

- (4) 第四种结构:

a) 在这种情况下,当条件成立,只执行语句1,语句2不属于次条件结构,但不推荐此种写法。

If(条件)

语句1;

语句2;```

(二)if使用注意

①. 比较大小时,可以把常量值放在左边,变量值放在右边以避免错误。因为if(a==0)也容易被写成if(a=0),而这种情况,编译器并不会报错,推荐使用if(0==a)这种写法。

②. 注意赋值运算符,不要把=写成是==。

③. If(条件)后面不要加分号,这代表是一个空语句,后面的代码块将成为一个独立的代码块。如if(条件);{.....}//需要多加注意

④. 注意作用域的问题,如果要在if后面定义新的变量,则一定要使用大括号。

if(10>6)

{

Int a;//a的作用域在代码块结束后失效

}

Printf(“a=%d”,a);//编译器报错,找不到标识符

 

if(10>6)

Int a; //这种情况下报错,a的作用域不明确

Printf(“a=%d”,a); //编译器报错,找不到标识符

 

⑤. If(0){...}随便挑一个数值也可以做条件```

>(三)if结构练习

>问题:输入一个整数seore代表分数,根据分数输出等级(A-E)。

>A 90-100  B80-89 C70-79 D60-69 E0-60

代码:

include<stdio.h>

int main()
{

//定义变量存储分数值

int score;

//提示输入

printf("请输入分值:\n");

//接受输入

scanf("%d",&score);

//判断等级

if(score>=90&&score<=100)
{
printf("A\n");
}
else if(score>=80)
{
printf("B\n");
}
else if(score>=70)
{
printf("C\n");
}
else if(score>=60)
{
printf("D\n");
}
else
{
printf("E\n");
}
return 0;
}```

三、选择结构-switch

  • (一)switch结构
switch(值) //通常是变量
{

  case 数值1:

  语句1;

  break;

  case 数值2:

  语句2;

  break;

  case 数值3:

  语句3;

  break;

  default :

  语句4;

  break;

}```

>######解说:该结构把数值与数值1进行比较,若相等,则执行后面的所有语句,直到遇见break语句跳出整个循环,若前面的条件都不满足,则最终会执行default后面的语句。如果不写break语句,则后面的语句会接连执行,直到遇到break语句或者是全部语句执行完毕,只要前面的条件成立,则后面的判断就直接被忽略。


####(二)Switch使用注意

char c=‘A’;

switch(c)
{
case ‘A’:

语句1;

break;

case 65://不能这样写,因为‘A’的ASCII值就是65,会报错

语句2;

break;

case 数值3:

int a=10;

//a的作用域不明确报错,c语言检查变量的作用域根据{}决定,这里可以加{}

break;

default :

语句4;

break;

}```

注意:如果要在case后面的语句中定义变量,则必须使用大括号包住。

(三)switch结构练习

问题:输入一个整数seore代表分数,根据分数输出等级(A-E)。

A 90-100 B80-89 C70-79 D60-69 E0-60

代码:
#include<stdio.h>

int main()
{

  //定义变量存储分数值

  int score;

  //提示输入

  printf("请输入分值:\n");

  //接受输入

  scanf("%d",&score);

  //判断等级

  switch(score/10)
  {

    case 10:

    case 9:

    printf("A\n");

    case 8:

    printf("B\n");

    break;

    case 7:

    printf("C\n");

    break;

    case 6:

    printf("D\n");

    break;

    default:

    printf("E\n");

    break;

  }

return 0;
}```

######【对比】if与switch:

>1. If语句能够完成的功能,switch有时并不能够完成,如判断if(a>100)

>2. 在有些情况下,if语句和switch语句可以互换

>3. Switch语句能完成的功能,if语句都可以完成


####四、循环结构-while

- (一)简单使用

while(条件)
{
语句;
}```

解说:先判断条件是否成立,成立则执行,执行完代码后再次判断条件是否成立(判断条件-》执行代码块-》判断条件-》执行代码块···)1.首先确定循环执行的操作,2.在确定约束条件,即需要循环多少次,3.定义一个变量来记录循环的次数。

  • 提示:在while循环体内使用if...break(跳出整个循环)或if...continue语句(跳出本次循环,继续下一次循环判断)。

  • while结构的运行原理:

①. 如果一开始条件不成立,则永远不会执行循环体。

②. 如果条件成立,则执行一次循环体,执行完毕后再次判断条件是否成立。

③. break:直接退出整个循环。

④. continue:结束当前循环体,进行下一轮循环判断。

  • (二)使用注意
  1. while(1){.....}是一个死循环
  1. while(a<10);{...}在条件后面加逗号表示循环体是一个空语句,而非{}部分
  1. while条件语句后推荐使用{},否则只有第一条语句时循环体
  1. 最简单的死循环 while(1);//永远执行空语句,让程序崩溃
  • (三)while练习

问题:编程实现,提示输入一个正整数n,计算1+2+3+...n的值。

代码:

#include<stdio.h>

int main()
{

  //定义变量保存用户输入的整数

  int n;

  while(n<=0)
  {

    //提示输入

    printf("请输入一个正整数:\n");

    //接受输入

    scanf("%d",&n);

  }

  int sum=0;

  int number=0;//默认被加的数值

  while(number<n)
  {

    number++;

    sum=sum+number;
  }

  printf("计算结果为:%d\n",sum);

  return 0;

}```


####五、循环结构-do while

do
{
语句
}while(条件)```

特点:do while循环至少会执行一次循环体

六、循环结构-for

  • (一)基本使用
for(语句1,条件,语句2)
{

  //循环体
}```

>语句1:一般为初始化语句

>语句2:一般为增量语句(执行完循环体后再执行的语句)

- for循环原理:

  1. for循环一开始就会执行语句1(整个for循环只会执行一次)

  2. 判断条件是否成立,若成立,则执行一次循环体,然后执行语句2,再次判断条件是否成立,若条件不成立则结束循环

  3. 顺序为:(语句1-》判断条件-》循环体—》语句2-》判断条件-》循环体···)```

【对比】for和while:

在性能上,for循环稍胜一筹,因为while循环只能使用外部的变量,而for循环可以对变量进行及时回收。

  • (二)for使用注意

①. 不要随便在for语句后面写上分号,如for();{....}

②. 定义变量的作用域不明确错误
for(int i=0;i<5;i++)
int a=10; //编译器报错,变量作用域不明确

③. For语句中最简单的死循环for(;;);

④. 需要注意变量定义的作用域

int a=10;

for(int i=0,int a=9;i<5;i++)
{

  int a=10;

  printf(“a=%d\n”,a);//这里打印的a的值是多少?
}```

 

- (三)for循环嵌套

>用以输出特定格式的内容,如QQ好友列表等,提升可扩展性。

for(in i=0;i<5;i++)
{

//外面的循环控制行数

printf(“好友列表%d\n”,i);

//内部的循环控制列数

for(int j=1;j<=6;j++)
{

printf(“好友%d\n”,j);

}

}```

  • (四)for练习

使用for循环输出九九乘法表。//先控制行数,在控制列数

代码:

#include<stdio.h>

int main()
{
  for(int i=1;i<=9;i++)
  {
    for(int j=1;j<=i;j++)
    {
      printf("%d*%d=%d\t",i,j,i*j);
    }
    printf("\n");
  }
  return 0;
}```
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容