C语言经典案例-2

今天继续给大家分享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];elsereturn 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.hqwc.cn/news/8086.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

obs录制功能源码分析

录制按钮 界面文件&#xff1a; 主界面:OBSBasic.ui 中开始录制按钮的objectName 是 recordButton 槽函数&#xff1a; void OBSBasic::on_recordButton_clicked() {//1 输出模式是否被激活if (outputHandler->RecordingActive()) {bool confirm config_get_bool(GetGlo…

LiDAR SLAM 闭环——BoW3D: Bag of Words for Real-time Loop Closing in 3D LiDAR SLAM

先说总结 现算法已经开源&#xff0c;代码链接&#xff1a; GitHub - YungeCui/BoW3D: [RA-L] BoW3D: Bag of Words for Real-Time Loop Closing in 3D LiDAR SLAM. 背景 SLAM&#xff08;同时定位与地图构建&#xff09;是一种让机器人在构建环境地图的同时&#xff0c;定位…

Spring整合Junit单元测试

1.Spring整合Junit单元测试 1.1 原始Junit测试Spring的问题 在测试类中&#xff0c;每个测试方法都有以下两行代码&#xff1a; ApplicationContext ac new ClassPathXmlApplicationContext("application.xml");BookDao bookDao (BookDao)ac.getBean("bookDa…

Angular 调试 —— 一个真实的多重循环导致的Bug

导致性能问题的原因可能很复杂&#xff0c;也可能很简单&#xff0c;今天让我们来看一个现实的例子。一个多重循环导致列表卡死。 startDemo() {this.processing true// 创建复杂数据结构const data [];for (let i 0; i < 5000; i) {const innerArray [];for (let j …

(小程序)uniapp调接口完整流程

(小程序)uniapp调接口完整流程 代码&#xff1a; <script lang"ts" setup>import { ref } from "vue"; const form ref({searchVal: "", });//搜索const searchClick () > {console.log(form.value.searchVal)let data {text: form…

git merge 和git rebase的区别

文章目录 1. 概念2. git merge2.1. 示例 3. git rebase3.1. 示例 4. 总结 1. 概念 在Git版本控制系统中&#xff0c;有两种方式可以将一个分支的更改合并到另一个分支&#xff1a;git merge 和 git rebase。虽然它们都可以完成相同的任务&#xff0c;但它们的实现方式有所不同…

软考:中级软件设计师:计算机存储结构,cache,局部性原理,RAM和ROM,磁盘结构和计算

软考&#xff1a;中级软件设计师:计算机存储结构 提示&#xff1a;系列被面试官问的问题&#xff0c;我自己当时不会&#xff0c;所以下来自己复盘一下&#xff0c;认真学习和总结&#xff0c;以应对未来更多的可能性 关于互联网大厂的笔试面试&#xff0c;都是需要细心准备的…

用git下载gitee上的项目资源

目录 用git下载gitee上的项目资源 用git 的clone 命令 然后到gitee上复制相关的下载地址&#xff1a; 粘贴到clone后面即可&#xff08;注意地址与clone之间有空格&#xff01;&#xff01;&#xff01;&#xff09; 运行结果&#xff1a; 用git下载gitee上的项目资源 用git…

软件设计模式与体系结构-设计模式-行为型软件设计模式-迭代器模式

行为型软件设计模式 概述 行为型设计模式是软件设计模式中的一类&#xff0c;用于处理对象之间的交互和通信。这些模式关注的是对象之间的行为和职责分配。以下是几种常见的行为型设计模式&#xff1a; 观察者模式&#xff08;Observer Pattern&#xff09;&#xff1a;定义了…

【CEEMDAN-VMD-GRU】完备集合经验模态分解-变分模态分解-门控循环单元预测研究(Python代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【随手记】使用Flask做代理为虚拟机提供pip源

最近在重做虚拟机环境&#xff0c;虚拟机不可连外网&#xff0c;最初python包都是通过离线whl进行安装。但是离线文件已经找不到了&#xff0c;不想重新去一个个下载&#xff0c;而且本地环境跟虚拟机环境也不一致&#xff0c;pip download可能会遇到版本问题&#xff0c;遂考虑…

【对象存储】那些事

最近在某个项目中使用了对象存储。以前看过一个新闻&#xff1a;某公司的对象存储被盗刷&#xff0c;一夜之间账户欠费几十万&#xff01;我们这点小买卖可经不起这么折腾&#xff01;所以下功夫研究了下&#xff0c;防患于未然。 说到防盗刷&#xff0c;我们还得了解对象存储是…