C语言的三种程序结构

C语言的三种程序结构,第1张

1.顺序结构

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

#include
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
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
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
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
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
int main()
{
	int i = 1;
	while (i<=10)
	{
		printf("%d\n", i);
		i++;
	}
	return 0;
}

运行结果:

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

 ②do

{

        循环体

} while(条件);

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

	return 0;
}

运行结果:

 

 

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

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

 ③for()循环

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

{

        循环体

}

打印0到9:

#include
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
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

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/727591.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存