C语言的三种程序结构

1.顺序结构

顺序结构顾名思义,就是程序自上而下依次执行,例如下面求两个数的和。

#include<stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);//输入两个数,中间用空格隔开
	int sum = a + b;
	printf("%d\n", sum);
	return 0;
}

2.分支结构

也叫选择结构,它不像顺序结构不管怎么样都是从上往下依次执行,它要先判断是否满足所需的条件才会执行该代码块里面的代码。

①if(条件)

{

       分支体

}

#include<stdio>
int main()
{
	int a = 0;
	scanf("%d", &a);//输入一个数赋值给a
	if (a > 0)//判断这个数是否大于0
	{
		printf("%d\n", a);
	}
    printf("你输入的数小于或等于0");
	return 0;
}

分析:

若if{ }里面的分支体只有一条语句,这个“{ }”符号可写可不写;但是有两条语句或两条以上必须得写上“{ }”。

②if(条件) 

{

        分支体

}

else

{

        分支体      
}san

#include<stdio.h>
int main()
{
	int a = 0;
	scanf("%d", &a);
	if (a % 2 == 0)//“ % ”求余字符
		printf("偶数\n");
	else
		printf("奇数\n");
	return 0;
}

③嵌套型的

if(t条件)

{

        分支体

}

else if(条件)

{
        分支体

}

else if(条件)

{
        分支体

}

.........

else

{

分支体

}

#include<stdio.h>
int main()
{
	int age = 0;
	scanf("%d", &age);
    if (age < 18)
		printf("少年\n");
	else if (age >= 18 && age < 40)
		printf("青年\n");
	else if (age >= 40 && age < 60)
		printf("壮年\n");
	else if (age >= 18 && age < 40)
		printf("老年\n");
	else
		printf("老寿星\n");
    return 0;
}
// 逻辑上是不满足要求的
	//if (18 <= age < 40)//会报错

注意:最后一个else不能写上条件,否则编译器会报错。

④多重选择switch()语句

 switch (表达式)
{
    case 常量表达式1:    语句1
    case 常量表达式2:    语句2
       ┇
    case 常量表达式n:    语句n
    default:        语句n+1
}

#include<stdio.h>
int main()
{
	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;
	default:
		printf("输入错误,请输入1-7的数字\n");
		break;
	}
	return 0;
}

注意:case 1语句执行完它后面的语句后,若不想执行下面的代码,需要在最后加上break语句,不然会继续往下执行,直到遇到break或遇到最后的default,执行完它里面的代码也会结束该switch。

          switch语句也是允许嵌套的。

3.循环结构

可以重复的执行多个语句,循环次数有条件语句限制。常见的循环语句有三种:while(),do{ }while()和for()循环。

①while()循环

while(条件)

{

        循环体

}

在屏幕上打印一到十。

 

#include<stdio.h>
int main()
{
	int i = 1;
	while (i<=10)
	{
		printf("%d\n", i);
		i++;
	}
	return 0;
}

运行结果:

注意:如果条件为真,执行循环体一次,然后再次判断条件。在条件为假之前,循环的判断和执行一直重复进行。每次循环都被称为一次迭代。

 ②do

{

        循环体

} while(条件);

#include<stdio.h>
int main()
{
	int i = 1;
	do
	{
		printf("%d\n", i);
		i++;
	} while (i <= 10);

	return 0;
}

运行结果:

 

 

 注意:不管条件是否成立,循环体里面的语句至少都会执行一次。因为代码是从上往下依次执行的,先进do里面执行循环体的语句再来判断条件是否满足。

while(条件);  括号后面的分号一定要写上。

 ③for()循环

for(初始化;判断;更新) 

{

        循环体

}

打印0到9:

#include<stdio.h>
int main()
{
	int i = 0;
	for (i = 0; i < 10; i++) //建议使用前闭后开区间
	{
		printf("%d\n",i);
	}

	return 0;
}

运行结果:

注意:for语句使用3个表达式控制循环过程,分别由分号隔开。初始化表达式在执行for语句之前只执行一次;然后对判断表达式求值,如果表达式为真,执行循环一次;接着对更新表达式求值,再次检查测试表达式。

 for的初始化、判断和更新都可以省略。for(;;)

中间的判断部分如果省略,就意味着判断恒为真,就构成死循环。

如果条件允许,个人不建议省略for循环的3个表达式。

最后

        用选择和循环模块来模拟修改密码系统:

#include<stdio.h>
int main()
{
	char input[20] = { 0 };
	printf("请输入密码:>");
	scanf("%s", input); //读取字符串的时候,遇到空格就结束了
	//getchar();//拿走\n

	//清理缓冲区
	int tmp = 0;
	while ((tmp = getchar()) != '\n')
	{
		;//空语句
	}
	printf("请确认密码(Y/N):>");
	int ch = getchar();
	if (ch == 'Y')
	{
		printf("确认成功!\n");
	}
	else
	{
		printf("确认失败!\n");
	}

	return 0;
}

运行结果:

getchar() - 获取(输入)一个字符
getchar读取失败的时候返回EOF

 

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言中的选择结构包括if语句和switch语句。这两种语句可以根据条件来执行不同的代码块。 1. if语句 if语句用于在满足指定条件时执行一段代码块,否则执行另一段代码块。if语句的语法如下: ``` if (condition) { // 如果 condition 为真,则执行此代码块 } else { // 如果 condition 为假,则执行此代码块 } ``` 其中,condition是一个表达式,如果它的结果为真,则执行if语句后面的代码块,否则执行else语句后面的代码块。 2. switch语句 switch语句用于根据不同的条件执行不同的代码块。switch语句的语法如下: ``` switch (expression) { case value1: // 如果 expression 的值与 value1 相等,则执行此代码块 break; case value2: // 如果 expression 的值与 value2 相等,则执行此代码块 break; ... default: // 如果 expression 的值与所有 case 中的值都不相等,则执行此代码块 break; } ``` 其中,expression是一个表达式,它的值会与每个case中的值进行比较。如果expression的值与某个case中的值相等,则执行对应的代码块。如果没有任何一个case的值与expression的值相等,则执行default后面的代码块。注意,每个case后面必须跟一个break语句,否则程序将会继续执行下一个case中的代码块。 这就是C语言中的选择结构,通过if语句和switch语句,我们可以根据不同的条件来执行不同的代码块,使程序具有更大的灵活性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值