C语言经典案例-2

news2024/10/6 12:30:48

今天继续给大家分享C语言学习的经典练手案例
记录在校学习第三天,继续加油
今日案例来源:csdn社区每日一练

1.商品优惠计算机

商品优惠计算器 使用if语句编程实现输入购货金额,输出实际付款金额。购货折扣率如下:
购货金额≤500元 不打折
500元<购货金额≤1000元 9折
1000元<购货金额 8折

#include <stdio.h>
#include <ctype.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main()
{
    float money = 0.0;
    float pay = 0.0;
    bool run = true;
    while (run)
    {
        printf("\n请输入购货金额:\n");
        scanf("%f", &money);
        if (money > 1000)
{
	pay = money * 0.8;
	printf("打八折,应付金额:%.2f\n", pay);
}
else if ((money > 500) && (money <= 1000))500
{
	pay = money * 0.9;
	printf("打九折,应付金额:%.2f\n", pay);
}
else if (money <= 500)
{
	printf("不打折,应付金额:%.2f\n", money);
}
    }
    return 0;
}

程序运行截图:
在这里插入图片描述

2.递归函数

编写求1,2,3,n这n个数累加的递归函数
分析:第一步:确定参数,n个数放在数组中,数组作为容器,把数放在容器中,我们要对容器里面的数进行加和,因此数组是一个参数;有了容器,但是容器里面这么多数,我们不知道该对哪一个数进行加和,所以数在数组里面的下标也要作为参数。所以,数组是参数,数的下标值是第二个参数
第二步:找规律,1,2,3,4,5,6,,,,,,n这些数的规律是什么?后一个数比前一个数多1,所以我们在调用函数自身时,n+1和n-1肯定是要用到的(具体用哪一个根据你要传入的实参值而定,在此我们选择下标实参n-1(即数组中的第n个数),所以在代码中用到的是(n-1)
第三步:递归出口,递归是函数调用自身,但是不能不停地调用自身,否则就成了死循环了,在此题中,我们用到的规律是(n-1),所以当下标参数到0时(即到了第一个数字arr[0]),函数停止调用新的自身,开始回退,直到将所有调用的自身函数运行一遍,返回结果。

#include<stdio.h>
#include<stdlib.h>
/*递归有两个过程
1.递推
2.回退
我们往往只需要考虑一个过程,因为两个过程是对称的
在此我们考虑递推过程*/
/*递归函数,返回数组arr[0]到arr[i]的和*/
int fact(int arr[], int i)    //数组,当前数组下标
{
    if (i == 0)               //递归出口,当递推到arr[0]时开始回退
        return arr[0];
    else
        return arr[i] + fact(arr, i-1);  //递推,当还没有加到arr[0]时,继续往前面加
}
int main() {
    int n;
    int arr[100];
    printf("输入n的值(n>=1):");
    scanf_s("%d", &n);
    for (int i = 0; i < n; i++)         //将1到n保存到数组中
        arr[i] = i + 1;
    printf("1到%d的和为:%d\n", n,fact(arr,n-1));   //打印和
    system("pause");                    //暂停,控制闪屏
    return 0;
}

3.六角填数

题目描述

如下图所示六角形中,有12个点,依次填入1~12的数字,使得每条直线上的数字之和都相同。其中,已经替你填好了点1,2,3的数字,请你计算其他位置所代表的数字是多少?
在这里插入图片描述

输入

输入仅一行,以空格隔开,分别表示已经填好的点1,2,3的数字。

输出

输出仅一行,以空格隔开,分别表示所有位置所代表的数字。

样例输入:

1 8 2

样例输出:

1 8 2 9 7 11 10 12 3 5 6 4

代码:

#include <iostream>
#include <cmath>
#include <cstdio>
#include <cstring>
using namespace std;
#define eps 10e-10
#define N 15
int a[N];
bool vis[N];
void dfs(int x)
{
    if (x == 1 || x == 2 || x == 3)
    {
        dfs(x + 1);
        return;
    }
    if (x > 12)
    {
        int t[6];
        t[0] = a[1] + a[3] + a[6] + a[8];
        t[1] = a[1] + a[4] + a[7] + a[11];
        t[2] = a[2] + a[3] + a[4] + a[5];
        t[3] = a[2] + a[6] + a[9] + a[12];
        t[4] = a[8] + a[9] + a[10] + a[11];
        t[5] = a[12] + a[10] + a[7] + a[5];
        for (int i = 1; i < 6; ++i)
        {
            if (t[i] != t[i - 1])
                return;
        }
        for (int i = 1; i <= 12; i++)
            cout << a[i] << " ";
        return;
    }
    for (int i = 1; i < 13; ++i)
    {
		if(!vis[i])
		{
			vis[i] = 1;
			a[x] = i;
			dfs(x+1);
			vis[i] = 0;
		}
    }
}
int main()
{
    memset(vis, 0, sizeof(vis));
    cin >> a[1];
    vis[a[1]] = 1;
    cin >> a[2];
    vis[a[2]] = 1;
    cin >> a[3];
    vis[a[3]] = 1;
    dfs(1);
    return 0;
}

今天就到这里,大家继续加油!

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

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

相关文章

skywalking linux安装部署

SkyWalking APM tar 下载 结合自己的es版本下载对应的tar 地址&#xff1a;https://archive.apache.org/dist/skywalking/ 由于我使用的是es7所以下载对应版本 拷贝对应链接使用wget下载 wget https://archive.apache.org/dist/skywalking/8.7.0/apache-skywalking-apm-es7…

Neon入门以及常用函数

什么是neon&#xff0c; neon是arm架构下的一个simd的一种方案&#xff0c; 本质上是一些可以用于simd的寄存器 具体参考官方的图&#xff1a; 官方的图说明对于arm开发板&#xff0c; 有16个128bit的寄存器&#xff0c;或者也可以看作是32个64bit的寄存器 列一下常用的neon…

从零开发短视频电商 使用nimbus-jose-jwt进行对称签名和非对称签名的JWT实现

文章目录 什么是JSON Web Token何时使用JSON Web TokenJSON Web Token的结构是什么头部&#xff08;Header&#xff09;负载&#xff08;Payload&#xff09;签名&#xff08;Signature&#xff09;拼接起来 如何使用JSON Web Token工具库依赖流程对称签名非对称签名 总结 JWT的…

超实用攻略!GPT能玩的这么6,你居然还不知道?

开篇 自古以来,智者皆知学无止境,而在我们身边,正有一款奠基于这个原则的AI机器人—ChatGPT,他擅长从网络上学习各种知识,然后把这些知识用在他的对话中。没错,它就是天马行空的闲话家,无所不谈的取经者。可你知道怎样让它更加符合你的使用需求,适应你的工作节奏么?哦…

Qt Quick系列(9)—初识画布

&#x1f680;作者&#xff1a;CAccept &#x1f382;专栏&#xff1a;Qt Quick 文章目录 前言代码示例1源码关键知识点 代码示例2源码关键知识点 总结 前言 画布元素的基本思想是使用上下文2D对象&#xff08;ctx&#xff09;渲染路径。上下文2D对象包含必要的图形功能&…

一文读懂FPC(12)- FPC的阻抗控制

FPC系列文章目录 1.什么是FPC 2.什么是R-FPC 3&#xff0c;FPC的基材 4.FPC基材压延铜和电解铜的区别 5&#xff0c;FPC的辅材 6&#xff0c;FPC常见的四种类型 7&#xff0c;FPC的生产流程简介 8&#xff0c;R-FPC的生产流程简介 9&#xff0c;FPC的发展及应用 10&a…

Vue :在 VSCode 中安装 yarn 并用 yarn 工具来控制 Vue 项目的详细过程

Ⅰ、 Yarn 工具简介&#xff1a; 1、什么是 yarn 工具: Yarn 是 facebook 发布的一款取代 npm 的资源包管理工具&#xff0c;是一个快速、可靠、安全的依赖管理工具&#xff0c;一款新的 JavaScript 资源包管理工具(吐槽下&#xff1a;最大的弊端是&#xff0c;要通过 npm 来…

java中的String使用注意事项、StringBuilder、StringBuffer、StringJoiner

String使用注意事项 这里第二次创造了0个对象是因为字符串常量池中已经有"abc" StringBuilder 注意StringBuilder支持链式编程 StringBuilder s new StringBuilder("abc"); s.append(666).append("acb" ).append(666); System.out.printl…

89、基于STM32单片机激光测距仪远距离倒车防撞报警器系统设计(程序+原理图+PCB源文件+参考论文+硬件设计资料+元器件清单等)

单片机主芯片选择方案 方案一&#xff1a;AT89C51是美国ATMEL公司生产的低电压&#xff0c;高性能CMOS型8位单片机&#xff0c;器件采用ATMEL公司的高密度、非易失性存储技术生产&#xff0c;兼容标准MCS-51指令系统&#xff0c;片内置通用8位中央处理器(CPU)和Flash存储单元&a…

操作系统8:存储器的层次结构及程序的装入和链接

目录 1、存储器的层次结构 &#xff08;1&#xff09;多层结构的存储器系统 1.1 - 存储器的多层结构 1.2 - 可执行存储器 &#xff08;2&#xff09;主存储器与寄存器 2.1 - 主存储器 2.2 - 寄存器 &#xff08;3&#xff09;高速缓存和磁盘缓存 3.1 - 高速缓存 3.2 …

使用wordpress搭建WebStack导航网站记录

0 序言 首先&#xff0c;我来介绍下&#xff0c;这个webstack导航网站实际上是被做成了wordpress的一个主题&#xff0c;具体这个主题的下载地址如下&#xff1a; WordPress 版 WebStack 导航主题https://github.com/owen0o0/WebStack 我们不需要使用git clone命令&…

【观察者模式】 ——每天一点小知识

&#x1f4a7; 观察者模式 \color{#FF1493}{观察者模式} 观察者模式&#x1f4a7; &#x1f337; 仰望天空&#xff0c;妳我亦是行人.✨ &#x1f984; 个人主页——微风撞见云的博客&#x1f390; &#x1f433; 《数据结构与算法》专栏的文章图文并茂&#x1f995;…

uni-calendar 日历控件自定义点的颜色功能

增加自定义点的颜色功能&#xff0c;官方空间点的颜色是固定红色 1、修改的页面 uni-calendar-item 在uni-calendar-item页面中的这个标签中加上一个style属性&#xff0c;判断传过来的参数是否存在bgcolor背景颜色&#xff0c;有的话添加背景色&#xff0c;没有则不添加默认系…

【DBA课程-笔记】第 4 章:MongoDB数据库管理备份

课程大纲 MongoDB备份机制数据库的恢复数据库的导出数据库的导入MongoDB面试题 一、MongoDB备份机制 1. MongoDB备份方式 磁阵列文件系统快照 Filesystem Snapshots复制数据文件 CPmongodump 备份 和 mongorestore 恢复工具mongoimport 导入 和 mongoexport 导出工具MongoD…

Qt - 模型视图

模型/视图 概念 模型/视图结构将数据存储和界面展示分离&#xff0c;分别用不同的类实现 模型&#xff1a;存储数据视图&#xff1a;界面上的视图组件显示模型中的数据&#xff1b;在视图组件里修改的数据会被自动保存在模型中 源数据 内存中的一个字符串列表 磁盘文件系统结构…

【二叉树part08】| 669.修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树

目录 &#x1f388;LeetCode669. 修剪二叉搜索树 &#x1f388;LeetCode108.将有序数组转换为二叉搜索树 &#x1f388;LeetCode538.把二叉搜索树转换为累加树 &#x1f388;LeetCode669. 修剪二叉搜索树 链接&#xff1a;669.修剪二叉搜索树 给你二叉搜索树的根节点 root…

用于 3D 建模和渲染应该选择怎么样的配置?

选择合适的机器可能会使决定变得困难。在分析图像时&#xff0c;它还需要一定数量的核心和线程&#xff0c;这绝对是一个怪物。渲染一般是使用GPU或者CPU来进行&#xff0c;从而产生渲染效果。 3D 建模是一种用于构建和评估实际物理对象的虚拟 3D 模型的应用程序。该技术应用于…

Mvc进阶(下)

Mvc进阶&#xff08;下&#xff09; 1.前言2.上次代码弊端1.利用xml建模反射优化1.XMl文件2.对xml建模 3.修改中央控制器 3.再优化1.先优化Action子控制器4.优化传值问题 4.总结 1.前言 虽然前面文章深入解析Java自定义MVC框架的原理与实现讲述了Mvc框架&#xff0c;但是那只能…

suse ha for sap scale-up性能优化场景安装配置

1. 安装SUSE操作系统 在官网下载SUSE Linux Enterprise Server for SAP Applications安装介质&#xff0c;在安装操作系统过程中&#xff0c;选择SUSE Linux Enterprise Server for SAP Applications操作系统。 在软件选择界面&#xff0c;根据需要选择SAP HANA Server Base…

oracle connect by很强,但是要慎用,不然有你哭的时候

前言: 第四次工业革命&#xff0c;带来了科技的巨大变更&#xff0c;同时带来了很多半结构化数据&#xff0c;很多数据会做成集合、JSON的形式存储到数据库中&#xff0c;通过ETL工具我们将这些数据抽取到数仓里面&#xff0c;我们怎么进行分析呢&#xff1f;这些数据类似这样的…