4 程序流程结构

2022/1/28 17:35:08

本文主要是介绍4 程序流程结构,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

4 程序流程结构

4.1 概述

C语言支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构。

  • 顺序结构:程序按顺序执行,不发生跳转。

  • 选择结构:依据是否满足条件,有选择的执行相应功能。

  • 循环结构:依据条件是否满足,循环多次执行某段代码。

4.2 选择结构

4.2.1 if语句

image-20220110162100766

#include <stdio.h>
​
int main()
{
    int a = 1;
    int b = 2;
​
    if (a > b)
    {
        printf("%d\n", a);
    }
​
    return 0;
}

4.2.2 if…else语句

image-20220110162116346

#include <stdio.h>
int main()
{
    int a = 1;
    int b = 2;
​
    if (a > b)
    {
        printf("%d\n", a);
    }
    else
    {
        printf("%d\n", b);
    }
    return 0;
}

4.2.3 if…else if…else语句

image-20220110162133019

#include <stdio.h>
​
int main()
{
    unsigned int a;
    scanf("%u", &a);
​
    if (a < 10)
    {
        printf("个位\n");
    }
    else if (a < 100)
    {
        printf("十位\n");
    }
    else if (a < 1000)
    {
        printf("百位\n");
    }
    else
    {
        printf("很大\n");
    }
​
    return 0;
}

案例:

// 三只猪比较那个最重
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main09(void)
{
    int a, b, c;
    printf("请输入三只小猪体重:\n");
    scanf("%d%d%d", &a, &b, &c);
    
    if (a > b)
    {
        if (a > c)
        {
            printf("小猪A最重\n");
        }
        else
        {
            printf("小猪B最重\n");
        }
    }
    else
    {
        if (b > c)
        {
            printf("小猪B最重\n");
        }
        else
        {
            printf("小猪C最重\n");
        }
    }
​
    return 0;
​
}

4.2.4 三目运算符

#include <stdio.h>
​
int main()
{
    int a = 10;
    int b = 20;
    int c;
​
    if (a > b)
    {
        c = a;
    }
    else
    {
        c = b;
    }
    printf("c1 = %d\n", c);
​
    a = 1;
    b = 2;
    c = ( a > b ? a : b );
    printf("c2 = %d\n", c);
​
    return 0;
}

4.2.5 switch语句

#include <stdio.h>
​
int main()
{
    char c;
    c = getchar();
​
    switch (c) //参数只能是整型变量
    {
    case '1':
        printf("OK\n");
        break;//switch遇到break就中断了
    case '2':
        printf("not OK\n");
        break;
    default://如果上面的条件都不满足,那么执行default
        printf("are u ok?\n");
    }
    return 0;
}

案例:

// 根据输入的数字来判断成绩所处的范围
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
​
int main(void)
{
    int score;
    scanf("%d", &score);
    switch (score / 10)
    {
    case 10:
        printf("优秀\n");
        break;
    case 9:     
        printf("优秀\n");
        break;
    case 8:
        printf("良好\n");
        break;
    case 7:
        printf("及格\n");
        break;
    case 6:
        printf("及格\n");
        break;
    default:
        printf("不及格\n");
        break;
    }
}

4.3 循环结构

4.3.1 while语句

image-20220110162337488

#include <stdio.h>
​
int main()
{
    int a = 20;
    while (a > 10)
    {
        scanf("%d", &a);
        printf("a = %d\n", a);
    }
​
    return 0;
}

案例:

// 敲桌子游戏,凡是带7或者7的倍数的需要敲桌子,否则正常输出
int main(void)
{
	int i = 1;
	while (i <= 100)
	{
		i++;
		// 7的倍数 || 个位带7 || 十位带7
		if (i % 7 == 0 || i % 10 == 7 || i / 10 == 7)	
		{
			printf("敲桌子\n");
		}
		else
		{
			printf("%d\n", i);
		}
	}
}

4.3.2 do…while语句

image-20220110162325071

#include <stdio.h>

int main()
{
	int a = 1;
	do
	{
		a++;
		printf("a = %d\n", a);
	} while (a < 10);

	return 0;
}

案例:

// 从100-999 求出各个 位数 的立方和相加等于这个数本身的数
#include<stdio.h>
int main(void)
{
	int i = 100;
	do
	{
		// 取出个位数
		int a = i % 10;

		// 取出十位数
		int b = i / 10 % 10;
        
		// 取出百位数
		int c = i / 100;
		if (a*a*a + b*b*b + c*c*c == i)
		{
			printf("%d\n", i);
		}
		i++;
	} while (i <= 999);
	return 0;
}
// 函数初次使用-从100-999 求出各个 位数 的立方和相加等于这个数本身的数
#include<stdio.h>
#include<math.h>
int main(void)
{
	int i = 100;
	do
	{
		//个位数
		int a = i % 10;

		// 十位数
		int b = i / 10 % 10;
        
		// 百位数
		int c = i / 100;
        
		if (pow(a,3) + pow(b,3) + pow(c,3) == i)
		{
			printf("%d\n", i);

		}
		i++;
	} while (i <= 999);
	return 0;
}

4.3.3 for语句

#include <stdio.h>

int main()
{
	int i;
	int sum = 0;
	for (i = 0; i <= 100; i++)
	{
		sum += i;

	}

	printf("sum = %d\n", sum);

	return 0;
}
// 猜数字游戏
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<time.h>
#include<stdlib.h >
int main(void)
{
	// 产生随机数
	// 1.导入头文件 time.h stdlib.h 
	// 2.添加随机数种子
	// 3.获取随机数
	srand((unsigned int)time(NULL));

	int value=rand()%100;
	int num;
	for (;;)
	{
		printf("请输入数字: \n");
		scanf("%d",&num);
		if (value > num)
		{
			printf("您输入的数太小了\n");
		}
		else if (value < num)
		{
			printf("您输入的数太大了\n");
		}
		else
		{
			printf("恭喜你猜对了\n");
			break;
		}
	}
	return 0;
}

4.3.4 嵌套循环

循环语句之间可以相互嵌套:

#include <stdio.h>

int main()
{
	int num = 0;
	int i, j, k;
	for (i = 0; i < 10; i++)
	{
		for (j = 0; j < 10; j++)
		{
			for (k = 0; k < 10; k++)
			{
				printf("hello world\n");
				num++;
			}
		}
	}

	printf("num = %d\n", num);

	return 0;
}
// 编写时钟
#include<stdio.h>
#include<Windows.h>
int main(void)
{
	for (int i = 0; i < 24; i++)
	{
		for (int j = 0; j < 60; j++)
		{
			for (int k = 0; k < 60; k++)
			{
				system("cls");
				printf("%02d:%02d:%02d\n", i, j, k);
				Sleep(950);
			}
		}
	}
}
// 九九乘法表(顺序)
#include<stdio.h>
int main(void)
{
	int i;
	int j;
	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;
}
// 九九乘法表(到序)
#include<stdio.h>
int main(void)
{
	int i;
	int j;
	for (int i = 9; i >= 1 ; i--)
	{
		for (int j = 9; j >= i; j--)
		{
			printf("%d * %d = %d\t", i, j, i * j);
		}
		printf("\n");
	}
	return 0;
}

4.4 跳转语句break、continue、goto

4.4.1 break语句

在switch条件语句和循环语句中都可以使用break语句:

  • 当它出现在switch条件语句中时,作用是终止某个case并跳出switch结构。

  • 当它出现在循环语句中,作用是跳出当前内循环语句,执行后面的代码。

  • 当它出现在嵌套循环语句中,跳出最近的内循环语句,执行后面的代码。

#include <stdio.h>

int main(void)
{
	for (int i = 0; i < 10; i++)
	{
		for (int j = 0; j < 10; j++)
		{
			if (j == 5 )
			{
				break;		//跳出for (j = 0; j < 5; n++)
			}
			printf("%d %d\n", i, j);
		}
		if (i == 6)
		{
			break;  		//跳出for (i = 0; i < 6; n++)
		}
	}
	return 0;
}

4.4.2 continue语句

在循环语句中,如果希望立即终止本次循环,并执行下一次循环,此时就需要使用continue语句。

#include<stdio.h>

int main(void)
{
	for (int i = 0; i < 100; i++)
	{
		if (i % 2 == 1) 	//如果i是一个偶数,执行if语句中的代码
		{
			continue; 		//结束本次循环
		}
		printf("%d\n", i);
	}
}

4.4.3 goto语句(无条件跳转,尽量少用)

#include <stdio.h>

int main(void)
{
	printf("hello world1\n");
	printf("hello world2\n");
	goto FLAG;		//无条件跳转到flag的标识
	printf("hello world3\n");
	printf("hello world4\n");
    FLAG:
	printf("hello world5\n");
	printf("hello world6\n");
	return 0;
}
int main(void)
{
	int i = 0, j = 0, k = 0;
	for (i = 0; i < 10; i++)
	{
		if (i == 5 )
		{
			goto END;
		}
		printf("i=%d\n", i);
	}
	for (j = 0; j < 10; j++)
	{
		printf("j=%d\n", j);
	}
	for (k = 0; k < 10; k++)
	{
	END:
		printf("k=%d\n", k);
	}
	return 0;
}

 



这篇关于4 程序流程结构的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程