目录
前言
三种结构基本结构是我们学习c语言必不可少的知识,基本所有问题都可以通过这三种结构解决;以下是博主个人对三种结构的经验总结,如果能帮到大家,小红心点一点;如有纰漏请大家指出。
我们首先来看一个简单的思维导图(简单的概况了这些结构里的一些知识点)
一、顺序结构
顺序结构是三种结构中最简单的,我们可以通过字面来理解它,循序结构,顾名思义就是计算机一步一步按你写代码的顺序来执行程序。
代码图示及讲解
#include<stdio.h>
int main()//程序先从进入main函数开始
{
//在这里代码就会依次进行
printf("hehe\n");//先打印hehe
printf("hello world\n");//在打印hello world
return 0;//最后到这里程序结束
}
二、选择结构(又叫分支结构)
选择结构就是对条件进行判断,然后根据判断的结果执行想要处理的代码。
(一)简单if语句
(1)if语句的一般形式为
注意:1.在if语句的括号后面一定不能加英文“ ; ”,不然编辑器会报错;
2.如果需要执行多条语句,将这些语句都放入大括号{}内,会使表达的更加规范与整洁,使if语句一目了然。
(2)执行流程图
(3)代码图示及讲解
#include<stdio.h>
int main()
{
int a;//定义一个变量a
printf("请输入一个数字\n");
scanf("%d",&a);//输入一个数字
if(a<=5)//这里if语句表判断,如果a<=5,则输出hehe。
{
printf("hehe\n");
}
return 0;
}
(二)if...else语句
由于简单的if语句只能给出条件为真的时候要执行的操作,并没有给出条件为假的时候要干什么。我为了想条件为真或为假的时候执行不同的语句,我们就需要使用if...else语句。
(1)if...else语句的一般形式为
注意:1.与if里注意的一样
2.else语句必须跟在一个if语句后面,不能单独使用
(2)执行流程图
首先先判断if后面表达式的值,如果表达式的只为真,就执行语句块,当为假的时候执行else后面的语句块2.
(3)代码图示及讲解
#include<stdio.h>
int main()
{
int a = 0;
scanf("%d",&a);
if (a%5 == 0)//当你输入的值为5的倍数时,if语句表达式为真就执行if语句,打印YSE
printf("YES");
else//当if语句为假时,就执行else语句,打印ON
printf("ON");
return 0;
}
(三)else if语句
可以用来解决较为复杂的判断和选择问题。
(1)else if语句的一般形式为
(2)执行流程图
首先对if语句中的表达式1进行判断,如果结果为真,则执行语句1;为假,则判断else if语句中的表达式2······以此类推,当前面所有的判断全部不成立,也是都为假值时,执行else后的语句m。
(3)代码图示及讲解(学生成绩等级划分为例)
#include<stdio.h>
int main()
{
int score;//定义变量score,表示成绩
printf("请输入成绩:\n");
scanf("%d", &score);//输入成绩
if (score >= 90)//如果score大于90,则输出优秀
{
printf("优秀\n");
}
else if (score >= 80 && score < 90)//如果80<=score<90,则输出良好
{
printf("良好\n");
}
else if (score >= 60 && score < 80)//如果60<=score<80,则输出及格
{
printf("及格\n");
}
else //否则,输出不及格
{
printf("不及格\n");
}
return 0;
(四)switch语句
如果处理多分支选择的情况,若要使用if...else语句的话,一般需要相互嵌套,就会显得比较复杂,可读就会比较差;而switch语句就能直接处理多分支选择的情况。
(1)switch语句的一般形式为
注意:1.任意两个case语句都不能使用相同的常量值(而不是变量值); 2.每个case语句后面都要有一个英文冒号“ : ”; 3.一个switch语句只能有一个default语句,而且default可以省略; 4.每个case或者default后面都要有一个break语句,用来跳出switch结构,不在执行;不然会一直执行,直到全部执行完,就达不到判断的目的了。
(2)执行流程图
(3)代码图示及讲解(判断一年四季)
#define _CRT_SECURE_NO_WARNINGS 1
//已知3·4·5是春季,6·7·8是夏季,9·10·11是秋季,12·1·2是冬季
#include<stdio.h>
int main()
{
int month;//定义变量month表示月份
scanf("%d", &month);
switch (month)//根据月份来判断季节
{
case 3:
case 4:
case 5:
printf("%d是春季\n", month);//3·4·5是春季
break;
case 6:
case 7:
case 8:
printf("%d是夏季\n", month);//6·7·8是夏季
break;
case 9:
case 10:
case 11:
printf("%d是秋季\n", month);//9·10·11是秋季
break;
case 12:
case 1:
case 2:
printf("%d是冬季\n", month);//12·1·2是冬季
break;
default:
printf("无此月份");
return 0;
}
(五)if...else语句与switch语句的比较
(1)语法上;
1.分别需要的关键字不同;
2.if语句是对条件先判断,而switch反之。
(2)效率上;
1.if...else语句对少量的检验,判断比较快;但是随着检验深度的增长,会逐渐变慢,并且不容易进行后续条件的增加和扩充;
2.switch语句中,对其他每一项的检验速度是一样的,而default默认情况比其他情况更快。
(3)推荐
1.如果判断情况比较少的时候(3至4个分支以下),推荐使用if...else语句;否则使用switch语句。
三、循环结构
生活中经常有许多简单和重复的工作,为了快速解决这些工作,就出现了循环。
(一)while语句
使用while语句可以解决当某个条件满足时,需要反复执行的循环体的问题。
(1)while语句的一般形式为
(2)执行流程
while语句首先检验一个 条件,也就是括号中的表达式。当条件为真时,就执行紧跟其后的循环语句块。每执行-遍循环,程序都将回到while语句处,重新检验条件是否满足。如果-开 始条件就不满足 ,则跳过循环体中的语句,直接执行后面的程序代码。如果第一次检验时条件满足,那么在第一次或其后的循环过程中,必须得有使条件为假的操作,否则循环将无法终止。 注意:1.无法终止的循环常被称为死循环或者无限循环; 2.while判断表达式后面是没有分号的。
(三)代码图示和讲解(n~100的累加(while版))
//计算n~100相加
#include<stdio.h>
int main()
{
int n,sum=0;
scanf("%d", &n);//输入自然数n
while (n <= 100)//使用while循环,当你<=100时
{
sum = sum + n;//不断累加,并保存在sum中
n++;//n=n+1
}
printf("结果为:%d", sum);//输出结果
return 0;
}
(二) do....whlie语句
有时候,不论条件是否满足,循环都要至少执行一次,那么我就可以使用do....while语句。
(1)do....while语句的一般形式为
(2)执行流程 do...while语句是这样执行的,首先执行一次循环体语句中的内容,然后判断表达式,当表达式的值为真时,返回重新执行循环体语句,然后再次判断表达式,直到表达式的值为假,此时循环结束。 注意:在使用do..while语句时,条件表达式要放在while关键宇后面的括号中,最后必须加上一个分号(:),这里和while语句不同,初学者一定要格外注意。
(3)代码图示和讲解(n~100的累加(do....while版))
#define _CRT_SECURE_NO_WARNINGS 1
//计算n~100相加
#include<stdio.h>
int main()
{
int n, sum = 0;
scanf("%d", &n);//输入自然数n
do
{
sum = sum + n;//不断累加,并保存在sum中
n++;//n=n+1
} while (n <= 100);//使用do...while循环
printf("结果为:%d", sum);//输出结果
return 0;
}
(三)for循环语句
for语句是比较好用的一个语句,主打的就是灵活、易控制并且简洁。
(1)for语句的一般形式为
1. 每条for语句包含3个用分号隔开的表达式,这3个表达式用一对圆括号括起来,其后紧跟着循环语句或语句块。for语句中,程序首先执行第1个表达式为一个循环变量赋初值;接着检验第2个表达式是否为真,如果为真,就执行循环体中的内容,并计算第3个表达式;然后继续检验第2个表达式是否为真, 为真则继续执行循环;如此反复,直到第2个表达式的值为假,退出循环。
2.为了便于理解 for语句的形式也可以为
(2)执行流程
其执行过程如下。 (1)求解表达式1。
(2)求解表达式2,若其值为真,则执行for语句中的循环 语句;然后执行步骤(3);若为假,则结束循环,转到步 骤(5)。 (3)求解表达式3。 (4)回到步骤(2),继续执行。 (5)循环结束,执行for语句下面的一个语句。
(3)代码图示和讲解(n~100的累加(for版))
#include<stdio.h>
int main()
{
int n, i = 1, sum = 0;
scanf("%d",&n);//输入自然数n
for ( i = n;i <= 100;i++)//使用for循环
{
sum = sum + i;
}
printf("结果为:%d", sum);//输出结果
return 0;
}
以上便是个人总结,如果能帮到大家小红心点一点;如有纰漏请大家指出。