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

news2024/12/23 23:36:15

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

 

 

一.  主干知识的学习 

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语句的具体运用可看前面的博客。

 

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

 

 

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《HelloGitHub》第 94 期

兴趣是最好的老师&#xff0c;HelloGitHub 让你对编程感兴趣&#xff01; 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 https://github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等&#xff0c;涵盖多种编程语言 …

Python根据Excel表进行文件重命名

一、问题背景 在日常办公过程中&#xff0c;批量重命名是经常使用的操作。之前我们已经进行了初步探索&#xff0c;主要是通过批处理文件、renamer软件或者Python中的pathlib等模块对当前目录下的文件进行批量重命名。 而今天我们要使用的是PythonExcel的方法对指定目录下的文…

翻译: GPT-4 with Vision 升级 Streamlit 应用程序的 7 种方式二

GPT-4 Vision 系列: 翻译: GPT-4 with Vision 升级 Streamlit 应用程序的 7 种方式一 GPT-4 Vision 的 7 个实际用例 Pre-requisites:先决条件&#xff1a; 订阅 ChatGPT Plus 以访问 GPT-4 Vision。如果您不熟悉 Streamlit&#xff0c;请按照安装步骤操作。 1. 绘制您的应…

机器学习周报第30周

目录 摘要Abstract一、文献阅读1 论文标题2 论文摘要3 过去方案4 论文方案5 相关代码 摘要 Abstract 一、文献阅读 1 论文标题 Accurate one step and multistep forecasting of very short-term PV power using LSTM-TCN model - ScienceDirect 2 论文摘要 准确的光伏功…

洛谷P5735 【深基7.例1】距离函数(C语言)

首先&#xff0c;三角形周长为 其次(x1,x2)和 &#xff08;y1,y2&#xff09;的距离 然后就可以为所欲为 #include <stdio.h> #include <math.h>double distance(double a1, double b1, double a2, double b2) {return sqrt((a1 - a2) * (a1 - a2) (b1 - b2) * …

新建一个springboot 项目

1&#xff09;第一步&#xff1a; 2&#xff09;第二步&#xff1a; 3&#xff09;第三步&#xff0c;点击File&#xff0c;Settings 4&#xff09;请求页面结果显示如下&#xff1a; 修改端口如下&#xff1a;在application.properties中 添加server:port 9090

【幻兽帕鲁】开服务器,高性能高带宽(100mbps),免费!!!【学生党强推】

【幻兽帕鲁】开服务器&#xff0c;高性能高带宽&#xff08;100mbps&#xff09;&#xff0c;免费&#xff01;&#xff01;&#xff01;【学生党强推】 教程相关视频地址&#xff1a;https://www.bilibili.com/video/BV16e411Y7Fd/ 目前幻兽帕鲁开服务器有以下几套比较性价比的…

CUDA下载安装教程,新手详细

目录 一、下载二、安装三、 设置环境变量四、补丁安装 由于项目需要安装特定版本的CUDA&#xff0c;现记录安装过程。 一、下载 进入官方下载地址&#xff1a;https://developer.nvidia.com/cuda-toolkit-archive 选择自己需要的版本。如果没有明确要求版本号&#xff0c;那么…

qt-C++笔记之使用信号和槽实现跨类成员变量同步响应

qt-C笔记之使用信号和槽实现跨类成员变量同步响应 —— 杭州 2024-01-24 code review! 文章目录 qt-C笔记之使用信号和槽实现跨类成员变量同步响应1.运行2.main.cpp3.test.pro4.编译 1.运行 2.main.cpp 代码 #include <QCoreApplication> #include <QObject> #…

Ubuntu20.04安装Google浏览器

一.在 Ubuntu 上安装 Google Chrome Chrome 不是一个开源的浏览器&#xff0c;并且它不被包含在标准的 Ubuntu 软件源中。在 Ubuntu 中安装 Google Chrome 是一个非常直接的过程。我们将会从官方网站下载安装文件&#xff0c;并且通过命令行工具来安装它。 1.1 下载 Google Ch…

【论文笔记】GPT,GPT-2,GPT-3

参考&#xff1a;GPT&#xff0c;GPT-2&#xff0c;GPT-3【论文精读】 GPT Transformer的解码器&#xff0c;仅已知"过去"&#xff0c;推导"未来" 论文地址&#xff1a;Improving Language Understanding by Generative Pre-Training 半监督学习&#xff1…

市场复盘总结 20240122

仅用于记录当天的市场情况&#xff0c;用于统计交易策略的适用情况&#xff0c;以便程序回测 短线核心&#xff1a;不参与任何级别的调整&#xff0c;采用龙空龙模式 昨日主题投资 连板进级率 6/39 15.3% 二进三&#xff1a; 进级率低 0% 最常用的二种方法&#xff1a; 方法…

【Matlab】音频信号分析及FIR滤波处理——凯泽(Kaiser)窗

一、前言 1.1 课题内容: 利用麦克风采集语音信号(人的声音、或乐器声乐),人为加上环境噪声(窄带)分析上述声音信号的频谱,比较两种情况下的差异根据信号的频谱分布,选取合适的滤波器指标(频率指标、衰减指标),设计对应的 FIR 滤波器实现数字滤波,将滤波前、后的声音…

C++笔试强训选择题6

1.十进制变量i的值为100&#xff0c;那么八进制的变量i的值为&#xff08;&#xff09; A 146 B 148 C 144 D 142 2.执行下面语句后的输出为 int I1; if(I<0)printf("****\n") ; elseprintf("%%%%\n");A %% B **** C 有语法错&#xff0c;不能正确执行…

C#学习(十一)——Array和Collection

一、集合 集合重要且常用 孤立的数据是没有意义的&#xff0c;集合可以作为大量数据的处理&#xff0c;可进行数据的搜索、迭代、添加、删除。 C#中&#xff0c;所有集合都必须实现ICollection接口&#xff08;数组Array除外&#xff09; 集合说明Array数组&#xff0c;固定长…

Vulnhub靶机:Hack_Me_Please

一、介绍 运行环境&#xff1a;Virtualbox 攻击机&#xff1a;kali&#xff08;10.0.2.15&#xff09; 靶机&#xff1a;Hack_Me_Please&#xff08;10.0.2.39&#xff09; 目标&#xff1a;获取靶机root权限和flag 靶机下载地址&#xff1a;https://www.vulnhub.com/entr…

elementUI 时间段快捷选择及禁用(包含d2-crud-plus中使用)

需求 vue项目elementUI&#xff0c;需求为时间范围搜索&#xff0c;带快捷键并且只能选择今天之前&#xff0c;90天内的时间。搜索今天为实时数据&#xff0c;不能使用时间段&#xff0c;只能单独搜索。 ※注 需求是今天不可选&#xff0c;只有时间为空时才查询今天&#xf…

基于STM32的智能手环设计与实现

需要原理图工程&#xff0c;源码&#xff0c;PCB工程的朋友收藏&#xff0c;这篇文章关注我&#xff0c;私我吧&#xff01;&#xff01;&#xff01; 基于STM32的智能手环设计与实现 摘要一、研究背景及意义二、实现功能三、系统方案设计系统方案设计框图3.1 单片机芯片选择3…

微信小程序如何自定义单选和多选

实现单选 实现效果:点击显示单选状态,每次仅能点击一个元素。 实现方式: wxml: <view wx:for="{{item_list}}" data-info="{{index}}" class="{{menu_index===index?choose:no_choose}}" bind:tap="changeColor">{{ite…

CTF CRYPTO 密码学-8

题目名称&#xff1a;嘀嘀嘀 题目描述&#xff1a; 嘀嘀嘀 …-. .-… .- --. . --… .---- -.-. .- … -.-. -… -…- --… -… -… ----. -…- …- -… .- …-- -…- ----. …-- —… …-- -…- .---- .- …-. —… -… --… —… —… .---- …-. ----- --… 解题过程&am…