C语言的三种基本结构

C语言的三种基本结构

顺序结构

顾名思义 顺序结构就是顺序写的c语言程序 没有判断也没有循环
所有的语句都是用线性的顺序执行
如下代码为基础的顺序结构

#include <stdio.h>
int main()
{
    
    
	//声明了两个整形变量a和b
    int a=0,b=0; 
	//输入两个整数并赋值给整形变量a和b
	scanf("%d %d",&a,&b); 
	//计算a+b的值并输出
	printf("a+b=%d\n", a+b);  
    return 0;
}  

选择结构

顾名思义 选择结构就是 有if/else/else if/switch等分支结构c语言程序 程序根据不同的条件可以执行不一样的代码

1.简单的选择结构

如下代码为if-else的选择结构

//接收一个数 输出这个数的绝对值
#include<stdio.h>
int main(){
    
    
	//定义一个双精度的浮点数
    double a = 0.0;
	//输入双精度的浮点数
    scanf("%lf",&a);
	//如果该浮点数小于0则输出相反数
    if(a<0.0){
    
    
        printf("%lf",-a);
    }else{
    
    
        printf("%lf",a);
    }
}

如下代码为if else if-else的选择结构

//接收一个成绩 判断成绩的等级
#include<stdio.h>
int main(){
    
    
	//定义一个双精度的成绩
    double score = 0.0;
	//输入双精度的成绩
    scanf("%lf",&score);
	//低于60分不合格 高于90分为优秀
    if(score<60.0)
        printf ("不及格\n");
    else if(score<90.0)
        printf ("合格\n");
    else
        printf ("优秀\n");
	return 0;
}
2.关系运算符

根据关系运算符书写选择结构的程序

#include<stdio.h>
//从键盘输入三个数 按从小到大输出
void swap(double *px,double *py)
{
    
    
    double temp=0;
    temp=*px;
    *px=*py;
    *py=temp;
}

int main()
{
    
    
    double a,b,c;
	//定义并输入三个双精度浮点数
    scanf("%lf %lf %lf",&a,&b,&c);
	//如果a大于b 交换a与b
    if(a>b)
    {
    
    
        swap(&a,&b);
    }
	//如果a大于c 交换a与c
    if(a>c)
    {
    
    
        swap(&a,&c);
    }
	//如果b大于c 交换b与c
    if(b>c)
    {
    
    
        swap(&b,&c);
    }
    printf("%lf %lf %lf\n",a,b,c);
}

如果a等于b时 a == b为1 如果a不等于b时 a==b为不为1

#include<stdio.h>
//关系运算符==
//如果两个数相同输出TRUE 如果不同输出FALSE

int main()
{
    
    
    double a,b;
    scanf("%lf %lf",&a,&b);
    if((a==b)==1)
    {
    
    
        printf("TRUE");
    }
    else
    {
    
    
        printf("FALSE");
    }
}
3.六种常见的关系运算符
符号 含义 用例 意义
> 大于 a>b a大于b时为真,反之为假
>= 大于或等于 a>=b a大于等于b时为真,反之为假
== 等于 a==b a等于b时为真,反之为假
!= 不等于 a!=b a不等于b时为真,反之为假
< 小于 a<b a小于b时为真,反之为假
<= 小于或等于 a<=b a小于等于b时为真,反之为假

注:a==b是关系运算符 表示判断a是不是等于b的关系运算。而a=b为赋值运算符,返回值恒为真

4.三目表达式

三目表达式的基本格式为 表达式1?表达式2:表达式3
表达式1为则执行表达式2 反之则执行表达式3

#include<stdio.h>
//三目表达式 表达式1?表达式2:表达式3
//如果两个数都不为0输出TRUE 如果至少有一个为零则输出FALSE

int main()
{
    
    
    double a,b;
    scanf("%lf %lf",&a,&b);
	//三目表达式 可以很简单的书写程序 但是比之前if-else略难看懂
    (a&&b)==1?printf("TRUE\n"):printf("FALSE\n");
    /**
    if((a&&b)==1)
    {
        printf("TRUE\n");
    }
    else
    {
        printf("FALSE\n");
    }
    **/
	return 0;
}
5.逻辑表达式

&& 意为逻辑’’,如果两个数都不为0,则表达式为TRUE。如果至少有一个为零,则表达式为FALSE
|| 意为逻辑’’,如果两个数都不同时为0,则表达式为TRUE。如果都为零,则表达式为FALSE
! 意为逻辑’’,如果该数为0,则表达式为TRUE。如果a不为0,则表达式为FALSE

#include<stdio.h>
//逻辑运算符 && || !

int main()
{
    
    
    double a,b;
    scanf("%lf %lf",&a,&b);
    if((a&&b)==1)
    {
    
    
        //如果两个数都不为0输出TRUE 如果至少有一个为零则输出FALSE
        printf("TRUE\n");
    }
    else
    {
    
    
        printf("FALSE\n");
    }
    if((a||b)==1)
    {
    
    
        //如果两个数都不同时为0输出TRUE 如果都为零则输出FALSE
        printf("TRUE\n");
    }
    else
    {
    
    
        printf("FALSE\n");
    }
    if((!a)==1)
    {
    
    
        //如果a为0输出TRUE 如果a不为0则输出FALSE
        printf("TRUE\n");
    }
    else
    {
    
    
        printf("FALSE\n");
    }
	return 0;
}
6.选择结构的嵌套

在if-else结构的程序中 在if或者else模块中还嵌套了另外的选择结构

#include<stdio.h>
//Floor y(x) 向下取整阶梯函数
//Sgn z(x) 符号函数 正1 零 0 负-1
int main()
{
    
    
    double x;
    int y,z;
    scanf("%lf",&x);
    //Floor函数
    y=(int)x;
    printf("x=%lf Floor=%d\n",x,y);
    //选择结构嵌套的Sgn函数
    if(x>0){
    
    
        z=1;
    }else{
    
    
        if(x==0){
    
    
        z=0;
        }else{
    
    
        z=-1;
        }
    }
    printf("x=%lf Sgn=%d\n",x,z);
	return 0;
}
7.switch开关语句

switch开关在使用效果上是等价于if-else if-else的
基本的结构是
switch(要判断内容){
case 条件1:语句1(或多条);break;


case 条件n:语句n(或多条);break;
default:语句k(或多条);break;
}
每个case的末尾必须要加break 如果不加 会继续往下个条件执行 造成错误

#include<stdio.h>
//开关语句
//根据输入的成绩判定等级
int main()
{
    
    
    int x;
    scanf("%d",&x);
    if(x<0||x>100)
    {
    
    
        printf("out of range!!!");
    }
    else
    {
    
    
        switch(x/10)
        {
    
    
        case 10:
            printf("A+");
            break;
        case 9:
            printf("A");
            break;
        case 8:
            printf("B");
            break;
        case 7:
            printf("C");
            break;
        case 6:
            printf("D");
            break;
        default:
            printf("F");
            break;
        }
    }
}

循环结构

1.for循环

for循环的基本定义 for(循环控制变量声明和初始化; 循环控制变量的控制条件; 每次对循环后循环控制变量的操作)
示例如下:
for(int step=1; step<=100; step++){

循环体

}

当循环控制变量的控制条件为真时继续for循环,反之结束for循环

#include<stdio.h>
//for循环计算1+2+....+100等于多少
int main()
{
    
    
    int sum=0;
    for(int step=1; step<=100; step++)
    {
    
    
        sum = sum + step;
    }
    printf("sum=%d",sum);
	return 0;
}
2.while循环

while循环的基本定义 while(循环控制条件){ 循环体 }
示例如下:
while(step<=100)
{

循环体

}
当循环控制条件为真时继续while循环,反之结束while循环

#include<stdio.h>
//while循环计算1+2+....+100等于多少
int main()
{
    
    
    int sum=0;
    int step=1;
    while(step<=100)
    {
    
    
        sum = sum+step;
        step++;
    }
    printf("sum=%d",sum);
	return 0;
}
3.do-while循环

do-while循环的基本定义 do{ 循环体 }while(循环控制条件)
示例如下:
do{

循环体

}while(循环控制条件);
当循环控条件为真时继续do-while循环,反之结束do-while循环
但是不论循环控制条件的真假 do中的循环体至少先会执行一次 因为do-while是先循环再判断的

#include<stdio.h>
//do-while循环计算1+2+....+100等于多少
int main()
{
    
    
    int sum=0;
    int step=1;
    do
    {
    
    
        sum = sum+step;
        step++;
    }while(step<=100);
    printf("sum=%d",sum);
	return 0;
}
4.多重循环

循环里面嵌套多重循环 注意使用不同的循环控制变量

#include<stdio.h>
//双重循环计算1!+2!+....+10!等于多少
int main()
{
    
    
    int sum = 0;
    int temp =  1;
    for(int step=1; step<=10; step++)
    {
    
    
        for(int now = step; now>0; now--)
        {
    
    
            temp = temp * now;
        }
        sum = sum + temp;
    }
    printf("sum=%d",sum);
	return 0;
}
5.continue语句

continue语句执行一次只能跳过一次定义在continue之后的循环体

#include<stdio.h>
//for循环计算2+....+100等于多少
//用continue语句跳过1
int main()
{
    
    
    int sum=0;
    for(int step=1; step<=100; step++)
    {
    
    
        if(step==1){
    
    
            continue;
        }
        sum = sum+step;
    }
    printf("sum=%d",sum);
	return 0;
}
6.break语句

brake语句执行可以提前结束该层循环
如果两层for循环嵌套 且break语句在内层 则会提前结束内层循环 继续执行外层的循环

#include<stdio.h>
//for循环计算1+2+....+100等于多少
//用brake语句提前结束循环
int main()
{
    
    
    int sum=0;
    for(int step=1; step<=200; step++)
    {
    
    
        if(step>100){
    
    
            break;
        }
        sum = sum+step;
    }
    printf("sum=%d",sum);
	return 0;
}

小结

  • 三种基本结构分为顺序结构 选择结构和循环结构
  • 三种基本结构构成了c语言的可能的程序结构
  • 三种基本结构都有各自擅长处理的领域,应该根据问题的定义来选择合适的基本结构

猜你喜欢

转载自blog.csdn.net/a695415974/article/details/122459229