###C语言程序设计-----C语言学习(5)#

前言:感谢您的关注哦,我会持续更新编程相关知识,愿您在这里有所收获。如果有任何问题,欢迎沟通交流!期待与您在学习编程的道路上共同进步!

 

 

一.  主干知识的学习 

1.switch语句

switch语句可以处理多分支选择问题,根据其中break语句的使用方法,一般分3种情况。

(1)在switch语句的每个语句段中都使用break语句,这是switch语句的主要使用方法,一般使用形式为:

          switch(表达式){

                      case 常量表达式1:语句段1;break;

                      case 常量表达式2:语句段2;break;

                                              ········

                      case 常量表达式n:语句段n;break;

                      default:                  语句段n+1;break;

下面是该语句的流程图:

执行流程:首先求解表达式,如果表达式的值与某个常量表达式的值相等,则执行该常量表达式后的相应语句段,如果表达式的值与任何一个常量表达式的值都不相等,则执行default后的语句段,每执行完一个语句段后,执行break语句,从而跳出switch语句。

(2)在switch语句中不使用break语句,

           switch(表达式){

                      case 常量表达式1:语句段1;

                      case 常量表达式2:语句段2;

                                              ········

                      case 常量表达式n:语句段n;

                      default:                  语句段n+1;

区别:若不使用break语句则无法指定跳出循环,即如果表达式的值与常量表达式2的值相等,不但执行语句段2,还执行其后的所有语句段,最后跳出switch循环。

(3)在switch语句的某些语句段的末尾使用break语句,该用法可以在switch语句在执行需要执行的几个指定语句后及时跳出语句,从而实现更多的功能。

2.一个多分支结构

        如果if-else语句的内嵌语句是另一条基本的if语句,就形成了嵌套的if-else语句,它的一般形式如下:

            if(表达式1)

                  if(表达式2)语句1;

                  else     语句2;

             else

                   if(表达式3)语句3;

                   else     语句4;

该语句实现了4路分支,流程图如下:

注意:这里有一个匹配原则,即else和if的匹配原则,else与最靠近它的且没有与别的else匹配过的if相匹配。

 

二.  switch语句在具体问题中的应用 

 

问题1:查询自动售货机中的价格。假设自动售货机出售4种商品:薯片,爆米花,巧克力和可乐,售价分别为3.0,2.5,4.0,和3.5元。在屏幕上显示以下菜单(编号和选项),用户可以连续查询商品的价格,当查询次数超过5次时,自动退出查询;查询不到5次,用户可以选择退出。当用户输入编号1~4,显示相应的商品的价格(保留一位小数);输入0,退出查询,输入其他编号,显示价格为0。

源程序:

#include <stdio.h>
int main()
{
	int choice,i;
	double price;
	//下面为显示菜单 
	printf("[1] select crisps\n"); 
	printf("[2] select popcorn\n");
	printf("[3] select chocolate\n");
	printf("[4] select cola\n");
	printf("[0] exit\n");
	for (i=1; i<=5; i++)  //for循环实现查询5次 
	{
		printf("Enter choice:");
		scanf("%d", &choice);  //输入数字的读入 
		if (choice==0)
		break;     //如果输入0则提前结束for循环 
		//下面是不同选择对应不同的商品及价格 
		switch (choice)
		{
			case 1:price=3.0; break;
			case 2:price=2.5; break;
			case 3:price=4.0; break;
			case 4:price=3.5; break;
			default:price=0.0; break;   //若非指定选择则输出0.0价格	
		}
		printf("price=%0.1f\n", price);   //输出商品价格 
	}
	printf("Thanks\n");  //for语句结束,谢谢查询 
	
	return 0;
 } 

问题2:编写一个简单的计算器程序,可根据输入的运算符,对两个整数进行加,减,乘,除,取余运算,请对除数为0的情况作特别处理。

源程序:

#include <stdio.h>
int main()
{
	int value1,value2;
	char op;
	printf("type in an expression:");  //提示输入一个计算式 
	scanf("%d%c%d", &value1, &op, &value2);
	switch (op)
	{
		case'+':
			printf("=%d\n", value1+value2);
			break;
		case'-':
			printf("=%d\n", value1-value2);
			break;
		case'*':
			printf("=%d\n", value1*value2);
			break;
		case'/':
			if (value2!=0)
			{
				printf("=%d\n", value1/value2);
			}
			else  //对除数为零做处理 
			{
				printf("Divisor can not be 0!\n");
			}
			break;	
		case'%':
			if (value2!=0)
			{
				printf("=%d\n", value1%value2);
			}
			else
			{
		    	printf("Divisor can not be 0!\n");	
			}
			break;
		default:
			printf("Unknown operator\n");
			break;
	}
	
	return 0;
}

注意:这里对于字符型数据的运用以及if语句和for语句的使用可看前面的博客。

问题3:设计一个程序用于比较三个数中的最大值

#include <stdio.h>
int main()
{
	printf("输入需比较的三个数:"); 
	int a,b,c;
	scanf("%d %d %d", &a,&b,&c);
	int max;
	if (a>b){
		if (a>c){
			max=a;
		} else {
			max=c;
		}
	}
	else {
		if (c<b){
			max=b;
		}else {
			max=c;
		}
		
	}
	printf("比较三个数中最大值为:%d", max);	
	return 0;
}

注意:这里if-else语句的具体运用可看前面的博客。

 

感谢老铁的浏览,希望老铁可以一键三连加个关注,您的支持和鼓励是我前进的动力,后续会分享更多学习编程的内容。 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/353728.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu 22 安装 node,npm,vue

1:安装 nodejs sudo apt update curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt update && sudo apt install -y nodejs node -v 2:安装npm sudo npm install n -g npm -v 3:安装vite npm install vite -g 4:运行vue 把项目拷贝到…

公考之判断推理(一、图形推理)

一、前言 判断推理这一题型主要具体分为四种题型&#xff1a; 1.图形推理 2.类比推理 3.定义判断 4.逻辑判断每种题型做题方法又不一样。 才本文采用总分的形式结构。 每一小标题的下面紧接着就是总结。二、图形推理常见的命题形式 图形推理常见的命题形式&#xff1a; 1.…

鸿蒙ArkUI 宫格+列表+HttpAPI实现

鸿蒙ArkUI学习实现一个轮播图、一个九宫格、一个图文列表。然后请求第三方HTTPAPI加载数据&#xff0c;使用了axios鸿蒙扩展库来实现第三方API数据加载并动态显示数据。 import {navigateTo } from ../common/Pageimport axios, {AxiosResponse } from ohos/axiosinterface IDa…

ASP.NET Core基础之用扩展方法封装服务配置

阅读本文你的收获 了解C#中的扩展方法机制学会在ASP.NET Core 中&#xff0c;用扩展方法封装服务配置&#xff0c;使得代码更加简洁 一、什么是扩展方法 扩展方法使能够向现有类型添加方法&#xff0c;而无需创建新的派生类型、重新编译或以其他方式修改原始类型。 扩展方法…

从 React 到 Qwik:开启高效前端开发的新篇章

1. Qwik Qwik 是一个为构建高性能的 Web 应用程序而设计的前端 JavaScript 框架,它专注于提供即时启动性能,即使是在移动设备上。Qwik 的关键特性是它采用了称为“恢复性”的技术,该技术消除了传统前端框架中常见的 hydration 过程。 恢复性是一种序列化和恢复应用程序状态…

HbuilderX报错“Error: Fail to open IDE“,以及运行之后没有打开微信开发者,或者运行没有反应的解决办法

开始 问题:HbuilderX启动时,打开微信开发者工具报错"Error: Fail to open IDE",以及运行之后没有打开微信开发者,或者运行没有反应的解决办法! 解决办法: 按照步骤一步一步完成分析,除非代码报错,否则都是可以启动的 第一步:检查HbuildX是否登录账号 第二步:检查微信…

背后的魔术师----jsp

作为一名对技术充满热情的学习者&#xff0c;我一直以来都深刻地体会到知识的广度和深度。在这个不断演变的数字时代&#xff0c;我远非专家&#xff0c;而是一位不断追求进步的旅行者。通过这篇博客&#xff0c;我想分享我在某个领域的学习经验&#xff0c;与大家共同探讨、共…

嵌入式软件工程师面试题——2025校招社招通用(C/C++)(四十四)

说明&#xff1a; 面试群&#xff0c;群号&#xff1a; 228447240面试题来源于网络书籍&#xff0c;公司题目以及博主原创或修改&#xff08;题目大部分来源于各种公司&#xff09;&#xff1b;文中很多题目&#xff0c;或许大家直接编译器写完&#xff0c;1分钟就出结果了。但…

Linux编译实时内核和打补丁

目录 1.Linux内核2.实时内核3.编译实时内核3.1 准备3.2 获取内核源码3.3 编译3.4 设置GRUB确保启动到实时内核 4.给内核打补丁5.安装新的内核 1.Linux内核 https://github.com/torvalds/linux Linux内核是Linux操作系统的核心部分&#xff0c;它是操作系统的基本组成部分&…

研发日记,Matlab/Simulink避坑指南(七)——数据溢出钳位Bug

文章目录 前言 背景介绍 问题描述 分析排查 解决方案 总结归纳 前言 见《研发日记&#xff0c;Matlab/Simulink避坑指南(二)——非对称数据溢出Bug》 见《研发日记&#xff0c;Matlab/Simulink避坑指南(三)——向上取整Bug》 见《研发日记&#xff0c;Matlab/Simulink避坑…

棋盘(来源:第十四届蓝桥杯省赛JavaA/C/研究生组 , 第十四届蓝桥杯省赛PythonC组)

小蓝拥有 nn大小的棋盘&#xff0c;一开始棋盘上全都是白子。 小蓝进行了 m 次操作&#xff0c;每次操作会将棋盘上某个范围内的所有棋子的颜色取反(也就是白色棋子变为黑色&#xff0c;黑色棋子变为白色)。 请输出所有操作做完后棋盘上每个棋子的颜色。 输入格式 输入的第…

Qt扩展-QXlsx读写Excel配置使用

QXlsx读写Excel配置使用 一、概述1. 功能概述2. 其他维护 二、安装1. 下载源码2. 配置项目3. 测试代码4. 运行结果 一、概述 项目介绍&#xff1a;https://qtexcel.github.io/QXlsx/Example.html GitHub&#xff1a;https://github.com/QtExcel/QXlsx/tree/master QXlsx 是一个…

【算法】闇の連鎖(树上差分,LCA)

题目 传说中的暗之连锁被人们称为 Dark。 Dark 是人类内心的黑暗的产物&#xff0c;古今中外的勇者们都试图打倒它。 经过研究&#xff0c;你发现 Dark 呈现无向图的结构&#xff0c;图中有 N 个节点和两类边&#xff0c;一类边被称为主要边&#xff0c;而另一类被称为附加边…

C++设计模式介绍:优雅编程的艺术

物以类聚 人以群分 文章目录 简介为什么有设计模式&#xff1f; 设计模式七大原则单一职责原则&#xff08;Single Responsibility Principle - SRP&#xff09;开放封闭原则&#xff08;Open/Closed Principle - OCP&#xff09;里氏替换原则&#xff08;Liskov Substitution …

【C++修行之道】STL(初识list、stack)

目录 一、list 1.1list的定义和结构 以下是一个示例&#xff0c;展示如何使用list容器: 1.2list的常用函数 1.3list代码示例 二、stack 2.1stack的定义和结构 stack的常用定义 2.2常用函数 2.3stack代码示例 一、list 1.1list的定义和结构 list的使用频率不高&#…

常见的核函数

在机器学习中&#xff0c;特别是在支持向量机&#xff08;SVM&#xff09;和其他基于核的方法中&#xff0c;核函数是一种用来计算数据点在高维空间中相对位置的方法。核函数能够使得算法在不显式地映射数据到高维空间的情况下&#xff0c;仍然能够处理线性不可分的数据。常见的…

RPC教程 6.负载均衡

1.负载均衡策略 假设有多个服务实例&#xff0c;而每个实例都提供相同的功能&#xff0c;为了提高整个系统的吞吐量&#xff0c;每个实例部署在不同的机器上。客户端可以选择任意一个实例进行调用&#xff0c;获取想要的结果。那如何选择呢&#xff1f;取决于负载均衡的策略。…

【WPF.NET开发】WPF中的双向功能

本文内容 FlowDirectionFlowDocumentSpan 元素非文本元素的 FlowDirection数字替换 与其他任何开发平台不同&#xff0c;WPF 具有许多支持双向内容快速开发的功能&#xff0c;例如&#xff0c;同一文档中混合了从左到右和从右到左的数据。 同时&#xff0c;WPF 也为需要双向功…

JVM基础知识汇总篇

☆* o(≧▽≦)o *☆嗨~我是小奥&#x1f379; &#x1f4c4;&#x1f4c4;&#x1f4c4;个人博客&#xff1a;小奥的博客 &#x1f4c4;&#x1f4c4;&#x1f4c4;CSDN&#xff1a;个人CSDN &#x1f4d9;&#x1f4d9;&#x1f4d9;Github&#xff1a;传送门 &#x1f4c5;&a…

企业计算机中了360后缀勒索病毒怎么办,360后缀勒索病毒解密流程

企业计算机服务器在生产运营过程中发挥着巨大作用&#xff0c;为企业带来极大便利&#xff0c;存储着企业的重要核心数据&#xff0c;但同时也成为众多勒索病毒攻击的目标。近期&#xff0c;云天数据恢复中心接到很多企业的求助&#xff0c;企业的计算机服务器遭到了360后缀勒索…