首页 > 其他分享 >c语言的分支结构

c语言的分支结构

时间:2024-11-16 17:45:33浏览次数:3  
标签:case 语句 语言 int else printf input 分支 结构

C语言程序有3种基本结构:顺序结构、选择结构和循环结构
1)顺序结构:所谓顺序结构,就是从上到下的所有语句都会依次执行
2)选择结构:选择结构中存在一条(或多条)分支语句,当满足分支的条件时语句才会执行,否则不会执行
3)循环结构:循环结构即是在某些条件的控制下重复执行一段代码语句,当满足循环条件时执行循环语句,否则不执行循环语句。

选择结构:if-else结构

if-else结构使用

if(表达式)-else是最常见的2分支判断选择结构,常见的if()-else有3种形式:
⒈if(表达式)
{
语句块
……
}
⒉if(表达式)
{
语句块1
……
}
else
{
语句块2
……
}
⒊if(表达式1)
{
语句块1
……
}
else if(表达式2)
{
语句块2
……
}

else
{
语句块n
}
……
1)if(表达式)
用法:
if(表达式)
{
语句块;
……
}
说明:
当程序执行到if语句时,会判断if()内表达式的真假,若为真,则会执行语句块,否则跳过语句块
示例:

int main()
{
	int a = 5;
	if(a>0)
	{
		printf("a大于0\n");//满足if条件,这条语句会执行
	}
	a = -5;
	if(a>0)
	{
		printf("a大于0\n");//不满足if条件,这条语句不会执行
	}
	return 0;
}

执行结果:输出一条"a大于0"

if(表达式)-else

用法:
if(表达式)
{
语句块1;
……
}
else
{
语句块2;
……
}
{
printf(“成绩为良\n”);
}
else if(score<80 && score>=70)
{
printf(“成绩为中\n”);
}
else if(score<70 && score>=60)
{
printf(“成绩为及格\n”);
}
else if(score<60 && score>=0)
{
printf(“成绩为不及格\n”);
}
else
{
printf(“输入非法数据\n”);
}
return 0;
}
4)如果if()或者else表达式下未使用{}限制,则只会执行if()或else下的第一条语句。
示例:

#include<stdio.h>
int main()
{
	int a = 5;
	if(a>0)
		printf("a是正数\n");
	else
		a = -3;
		printf("a不是正数\n");
	printf("a is %d\n",a);
	return 0;
}

程序输出结果:
a是正数
a不是正数
a is 5
尽管在本例中,else下的两句表达式缩进相同(以代表两句都隶属于else语句块)但是由于else后没有{},因此实际上隶属于else的语句只有第一句(即a=-3,如果能执行的话),而printf()语句则会照常执行。因此我们建议使用{}将if()和else后的语句都括起来,以免出现逻辑错误
上面输入成绩输出分数段的示例等价于:

#include<stdio.h>
int main()
{
	int score;
	printf("请输入学生成绩:");
	scanf("%d",&score);
	if(score<=100 && score>=90)
		printf("成绩为优\n");
	else if(score<90 && score>=80)
		printf("成绩为良\n");
	else if(score<80 && score>=70)
		printf("成绩为中\n");
	else if(score<70 && score>=60)
		printf("成绩为及格\n");
	else if(score<60 && score>=0)
		printf("成绩为不及格\n");
	else
		printf("输入非法数据\n");
	return 0;
}

闰年判断标准:年份能被4整除;如若遇到100的倍数,则需判断年份能否被400整除。(逢4一闰,逢百不闰,逢400又闰)
如1900年不是闰年,1904年是闰年,2000年是闰年
答案:

int main()
{
	int input;
	scanf("%d",&input);
	if(input%4==0)
	{
		if(input%100!=0)
		{
			printf("%d是闰年\n",input);
		}
		else if(input%400==0)
		{
			printf("%d是闰年\n",input);
		}
		else
		{
			printf("%d不是闰年\n",input);
		}
	}
	else
	{
		printf("%d不是闰年\n",input);
	}
	return 0;
}
	return 0;
}

在示例中,如果去掉所有的break语句,则:

#include<stdio.h>
int main()
{
	int input;
	scanf("%d",&input);
	switch(input)
	{
		case 1:
		printf("今天是星期一\n");

		case 2:
		printf("今天是星期二\n");

		case 3:
		printf("今天是星期三\n");

		case 4:
		printf("今天是星期四\n");

		case 5:
		printf("今天是星期五\n");

		case 6:
		printf("今天是星期六\n");

		case 7:
		printf("今天是星期日\n");

		default:
		printf("输入错误\n");
	}
	return 0;
}

程序执行结果:
输入4,输出:今天是星期四 今天是星期五 今天是星期六 今天是星期日 输入错误
练习1:将上文的“输入学生成绩,输出优、良、中、及格、不及格”问题使用switch()语句来实现
答案:

int main()
{
	int input;
	printf("请输入学生成绩:");
	scanf("%d",&input);
	if(input>100 || input<0)
		printf("输入数据错误!\n");
	else
		input /= 10;
	switch(input)
	{
		case 10:
		case 9:
		printf("成绩为优\n");
		break;
		case 8:
		printf("成绩为良\n");
		break;
		case 7:
		printf("成绩为中\n");
		break;
		case 6:
		printf("成绩为及格\n");
		break;
		case 5:
		case 4:
		case 3:
		case 2:
		case 1:
		case 0:
		printf("成绩为不及格\n");
		break;
		default:
		printf("输入非法数据\n");
	}
	return 0;
}

注意在case 10处,以及case 5~case 0处均没有break,则匹配到这些case后会顺序执行之后的语句直至出现break或switch()语句结束
练习2:运输公司对用户按路程计算费用。路程越远,每吨千米运费折扣越高。计算运费公式如下:
freight = weight * distance * price * (1-discount);
路程与折扣的关系如下:
s<250:无折扣
250<=s<500:2%折扣
500<=s<1000:5%折扣
1000<=s<2000:8%折扣
2000<=s<3000:10%折扣
3000<=s:15%折扣
要求从键盘输入货运总重(单位吨)、货运路程(单位千米)、每吨
千米货运单价(单位元),输出总花费
答案:

#include<stdio.h>
int main()
{
	int distance,c;
	float price,weight,discount,freight;
	printf("请输入货运总重量:");
	scanf("%f",&weight);
	printf("请输入货运路程:");
	scanf("%d",&distance);
	printf("请输入单价:");
	scanf("%f",&price);
	if(distance>=3000)
		c=12;
	else
		c=distance/250;
	switch (c)
	{
		case 0:
		discount=0;break;
		case 1:
		discount=2;break;
		case 2:
		case 3:
		discount=5;break;
		case 4:
		case 5:
		case 6:
		case 7:
		discount=8;break;
		case 8:
		case 9:
		case 10:
		case 11:
		discount=10;break;
		case 12:
		discount=15;break;
	}
	freight = price * distance *weight * (1-discount/100);
	printf("总运费是%f\n",freight);
	return 0;
}

标签:case,语句,语言,int,else,printf,input,分支,结构
From: https://blog.csdn.net/qq_21106275/article/details/143820635

相关文章

  • c语言快速排序
    快速排序(Quicksort)是一种高效的排序算法,采用分治法(DivideandConquer)策略来把一个序列分为较小和较大的两个子序列,然后递归地排序两个子序列。快速排序的步骤:选择基准(Pivot):从数列中挑出一个元素,称为"基准"(pivot)。分区(Partitioning):重新排序数列,所有元素比基准值小的摆放......
  • 数据结构(单向链表)
    链式存储的优缺点:优点:1、动态分配内存:链式存储不需要在数据插入之前分配固定大小的数组或内存块,因此它更适合存储动态变化的数据2、高效的插入和删除操作:在链表中插入或删除元素只需要调整相邻节点的指针,不需要移动大量数据,因此时间复杂度通常为O(1)(在已知位置时)或O(n)(在......
  • 从PE结构到LoadLibrary
    从PE结构到LoadLibraryPE是Windows平台主流可执行文件格式,.exe,.dll,.sys,.com文件都是PE格式32位的PE文件称为PE32,64位的称为PE32+,PE文件格式在winnt.h头中有着详细的定义,PE文件头包含了一个程序在运行时需要的所有信息,包括了如何将文件加载到内存、开辟多大的堆栈......
  • 大模型应用开发基础 : 语言模型的重要里程碑
    大家好,我是Edison。最近温习了ChatGPT的基本原理和语言模型的发展脉络,受益匪浅。老规矩,必须把自己学到的整理一下,才算学过。本篇我们快速复习一下上一篇的内容再次理解基于统计的语言模型,然后再了解下语言模型发展的重要里程碑。基于统计的NLP基本玩法上一篇我们了解到,在基于......
  • 【技术革新】哋它亢编程语言3.12版本:智能时代的新里程碑
    在技术的浪潮中,总有一些时刻标志着新时代的开始。今天,我们要探讨的“哋它亢编程语言”3.12版本,就是这样一个时刻。这个版本不仅带来了性能的飞跃,还引入了多项创新特性,为开发者提供了更广阔的舞台。3.12版本的亮点特性:性能的全面提升:哋它亢3.12版本在性能上进行了深度优化,无论......
  • 江苏科技大学大二《数据结构》课内实验报告模板答案
    江苏科技大学《数据结构》实验报告(2024/2025学年第1学期)学生姓名:学生学号:院系:计算机学院专业:考核得分:2024年12月实验一线性表的操作一、实验目的掌握线性表的基本操作在存储结构上的实现,其中以单链表的操作作为重点。二、实验题目1.以单......
  • 【大语言模型】ACL2024论文-12 大型语言模型的能力如何受到监督式微调数据组成影响
    【大语言模型】ACL2024论文-12大型语言模型的能力如何受到监督式微调数据组成影响论文:https://arxiv.org/pdf/2310.05492目录文章目录【大语言模型】ACL2024论文-12大型语言模型的能力如何受到监督式微调数据组成影响论文:https://arxiv.org/pdf/2310.05492![在这......
  • 南开高级语言程序设计2-1
    南开高级语言程序设计2-1的oj题目答案,本人亲测AC,供大家参考。2-2的见主页字符串旋转题目描述定义字符串的旋转操作为:左旋转L:把字符串前面的若干个字符移动到字符串的尾部,如把字符串abcdef左旋转2位得到字符串cdefab。右旋转R:把字符串后面的若干个字符移动到字符串的头......
  • 【Linux进程篇1】认识冯·诺依曼体系结构(引出进程详解)
    ---------------------------------------------------------------------------------------------------------------------------------每日鸡汤:用这生命中的每一秒,给自己一个不后悔的未来。-------------------------------------------------------------------------......
  • 哋它亢编程语言3.13版本:新时代的编程艺术?
    在技术的浪潮中,总有一些创新让我们眼前一亮。今天,我们要探索的是“哋它亢编程语言”3.13版本(参考:https://datacon-14302.xyz/3.13/),这个版本带来了一系列令人振奋的新特性和改进,让我们的编程体验更上一层楼。哋它亢3.13:新时代的编程艺术“哋它亢”一直以其简洁的语法和强大的功能......