(七)C语言三种程序结构

本篇介绍C语言程序结构,包括顺序结构、选择结构、循环结构。

顺序结构

顺序结构即按照程序书写顺序自上而下顺序执行,每条语句都必须执行并且只能执行一次。这种结构最简单。

选择结构

选择结构即根据一定条件选择要执行的语句,又分为以下三种结构。

  • 单分支结构
    即if语句,如:
#include<stdio.h>
int main()
{
	int a=1,b=2;
	if(a>b)
		printf("a大");
	return 0;
}

说明:满足条件即执行相应语句,否则不执行。

  • 双分支结构
    即if-else语句。如
#include<stdio.h>
int main()
{
	int a=1,b=2;
	if(a>b)
		printf("a大");
	else
		print("a小于等于b");
	return 0;
}

说明:满足条件执行相应语句,否则执行其他语句。
扩展:if-else也可嵌套使用,如:

#include<stdio.h>
int main()
{
	int a;
	printf("请输入自然数a的值")scanf("%d",&a);
	if(a>100)
		printf("a大于100");
	else if(a>90)
		printf("a大于90");
	else if(a>80)
		printf("a大于80");
	else
		printf("a小于等于80");
	return 0;
		
}

说明:嵌套的条件需要满足一定的子集关系。

  • 多分支结构
    即switch语句,如:
#include<stdio.h>
int main()
{
	int a;
	printf("请输入a的值");
	scanf("%d",&a);
	switch(a)
	{
		case 1:printf("1");break;
		case 2:printf("2");break;
		case 3:printf("3");break;
		default:printf("error");
	}
	return 0;
}

说明:不同的情况执行不同的语句,break用来跳出switch语句。

  • 条件运算符和条件表达式
    条件运算符为?:,为三目运算符。使用方法如下:
#include<stdio.h>
int main()
{
	int a=1,b=2,max;
	max=(a>b)?a:b;//条件表达式
	printf("%d",max);
	return 0;
}

循环结构

循环结构即给定条件成立时反复执行某程序段,直到条件不成立为止。C语言的循环语句有如下几种:

  • for语句
    举例:
#include<stdio.h>
int main()
{
	int i,a=0;
	for(i=0;i<10;i++)
	{
	a+=i;
	}
	printf("%d",a);
	return 0;
}

说明:该程序功能为求1+······+9的值,i=0为初始条件,i<10为循环条件,i++为循环变量增量。执行循环语句前判断i<10,执行循环语句后进行i++

  • while语句
    举例:
#include<stdio.h>
int main()
{
	int i=0,a=0;
	while(i<10)
	{
		a+=i;
		i++;
	}
	printf("%d",a);
	return 0;
}

说明:执行循环语句前判断i<10。必须以某种方式改变循环变量的值,这样循环才可能结束。

  • do-while语句
    举例:
#include<stdio.h>
int main()
{
	int i=0,a=0;
	do
	{
		a+=i;
		i++;
	} while(i<10);
	printf("%d",a);
	return 0;
}

说明:执行循环语句后判断i<10

  • goto语句
    goto语句也称为无条件转移语句,其一般格式如下: goto 语句标号; 其中语句标号是按标识符规定书写的符号, 放在某一语句行的前面,标号后加冒号(:)。语句标号起标识语句的作用,与goto 语句配合使用。
    举例:
//
#include<stdio.h>
int n=0;
int main() 
{
    printf("input a string: ");
    loop: if (getchar()!='\n')
    {
   	  n++;
      goto loop;
    }
    printf("output: %d\n",n);
    return 0;
}

说明:
输入abcdefghijklmnopqrstuvwxyz,然后Enter,输出:26
本例用if语句和goto语句构成循环结构。当输入字符不为’\n’时即执行n++进行计数。然后转移至if语句循环执行,直至输入字符为’\n’才停止循环。

  • break语句
    当 break 关键字用于 while、for 循环时,会终止循环而执行整个循环语句后面的代码。break 关键字通常和 if 语句一起使用,即满足条件时便跳出循环。在多层循环中,一个 break 语句只向外跳一层。
    举例:
#include <stdio.h>
int main()
{
	int i=1, sum=0;
	while(1)
	{  //循环条件为死循环
	   sum+=i;
	   i++;
	   if(i>100) break;
	}
	printf("%d\n", sum);
 	return 0;
}

说明:
运行结果:5050
while 循环条件为 1,是一个死循环。当执行到第100次循环的时候,计算完i++;后 i 的值为 101,此时 if 语句的条件 i> 100 成立,执行break;语句,结束循环。

  • continue语句
    continue 语句的作用是跳过循环体中剩余的语句而强制进入下一次循环。continue语句只用在 while、for 循环中,常与 if 条件语句一起使用,判断条件是否成立。
    举例:
#include <stdio.h>
int main()
{
	char c = 0;
    while(c!='\n')
    {  //回车键结束循环
    	c=getchar();
        if(c=='4' || c=='5')
        {  //按下的是数字键4或5
        	continue;  //跳过当次循环,进入下次循环
        }
        putchar(c);
    }
    return 0;
}

说明:
运行结果:
0123456789↙
01236789

程序遇到while时,变量c的值为’\0’,循环条件c!=’\n’成立,开始第一次循环。getchar() 使程序暂停执行,等待用户输入,直到用户按下回车键才开始读取字符。
本例我们输入的是 0123456789,当读取到4或5时,if 的条件c==‘4’||c=='5’成立,就执行 continue 语句,结束当前循环,直接进入下一次循环,也就是说putchar©;不会被执行到。而读取到其他数字时,if 的条件不成立,continue 语句不会被执行到,putchar©;就会输出读取到的字符。
break与continue的对比:break 用来结束所有循环,循环语句不再有执行的机会;continue 用来结束本次循环,直接跳到下一次循环,如果循环条件成立,还会继续循环。

  • 无限循环
    如果条件永远不为假,则循环将变成无限循环。for 循环在传统意义上可用于实现无限循环。由于构成循环的三个表达式中任何一个都不是必需的,您可以将某些条件表达式留空来构成一个无限循环。
    举例:

#include <stdio.h>
 
int main ()
{
   for( ; ; )
   {
      printf("该循环会永远执行下去!\n");
   }
   return 0;
}

说明:当条件表达式不存在时,它被假设为真。您也可以设置一个初始值和增量表达式,但是一般情况下,C 程序员偏向于使用 for(;😉 结构来表示一个无限循环。您可以按 Ctrl + C 键终止一个无限循环。

  
  


总结一下,本篇介绍了C语言三种程序结构,详细介绍了if-else、switch、for、while、goto、break、continue等。

小僧初来乍到,希望大家多多支持!如有纰漏,欢迎大家在评论区留言,小僧会及时更正,同时,大家如果有疑惑的地方可以把问题写在评论区,小僧看到会回复哟😄!
另外,小僧的公众号上线啦,里面有“实用工具”、“学习资源”以及许多资料,欢迎大家关注一波小僧的公众号👇

在这里插入图片描述
  
  
  
参考:
百度百科
《C语言开发从入门到精通》------王长青、韩海玲

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值