C语言经典案例-2

news/2024/11/8 23:59:17/

今天继续给大家分享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.ppmy.cn/news/721780.html

相关文章

C罗还会是史上第一个上链的得分王吗?

梦晨 詹士 发自 凹非寺量子位 报道 | 公众号 QbitAI 欧洲杯激战正酣&#xff0c;不断刷新历史纪录的C罗&#xff0c;或将错失一项特殊荣誉。 随着贡献2球带队逼平法国&#xff0c;顺利从“死亡小组”突围出线&#xff0c;C罗也跻身欧洲杯史上第一射手。 按照期待&#xff0c;如…

程序员送给对象的照片

程序员送给对象&#xff08;保证严谨&#xff0c;不限男女&#xff09;的照片 样例&#xff1a; 原图 修改后&#xff0c;放大看文字。 通过Python实现&#xff0c;源码如下。 from PIL import Image,ImageDraw,ImageFont import numpy as npimgnp.array(Image.open(rF:\文…

c罗讲什么语言教学,伟大如C罗,高情商+4国语言天赋,你还有什么理由不努力?...

先学习段西语&#xff1a; C罗在北京&#xff1a;Est CR7 de gira en Beijing&#xff0c;China 7月19日&#xff0c;C罗出现在了北京&#xff0c;开启了为期两天的2018中国行。首先与大家一起回看一下&#xff0c;C罗首日的中国行行程。 Beijing, China.-Como parte de una gi…

如何在 OpenCV 和 Python 中使用滑动窗口进行物体检测

文末附源代码的免费下载链接 目录 物体检测的滑动窗口技术讲解 使用 OpenCV 和 Python 实现滑动窗口技术 结论 代码下载链接

聊聊极限编程与测试启发

这是鼎叔的第六十五篇原创文章。行业大牛和刚毕业的小白&#xff0c;都可以进来聊聊。 欢迎关注本公众号《敏捷测试转型》&#xff0c;星标收藏&#xff0c;大量原创思考文章陆续推出。 继续聊聊著名的敏捷研发框架&#xff1a;极限编程。 极限编程&#xff08;Extreme Prog…

苹果6plus自动时间不准 修复苹果自动设置时间不准教程(图文)

苹果手机进水了不能开机(图文)的维修解决方法&#xff0c;这个是苹果6手机进水后不能开机&#xff0c;手机开机键失灵等的解决方法&#xff0c;用于手机维修人员。操作维修方法已经过实机的维修操作&#xff0c;测试维修好数台手机了&#xff0c;看下图操作。http://www.shuaji…

哈工大计算机网课程络网络层协议详解之:Internet网络路由协议详解(RIP、OSPF)

文章目录 RIP协议RIP链路失效、恢复问题RIP路由表的处理 OSPF协议分层的OSPF主干路由器 之前我们也介绍了&#xff0c;作为我们现在广泛使用的Internet网络来说&#xff0c;采用的路由策略是层次化路由策略。 即将不同区域、组织的网络划分成一个个自治系统&#xff0c;在自治系…

项目实战第四十四讲:订单如何优雅增加港口报关状态信息

项目实战第四十四讲:订单如何优雅增加港口报关状态信息 本文是项目实战第44讲:订单如何优雅增加港口报关状态信息。我们需要在列表页展示港口报关情况 文章目录 项目实战第四十四讲:订单如何优雅增加港口报关状态信息1、项目背景2、主要技术3、项目职责4、项目实现4.1、流程…