#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void maoPao( float num[])
{
for (int i =0; i<10-1; i++) {
for (int k=0; k<10-1-i; k++) {
if (num[k]>num[k+1]) {
num[k]=num[k]+num[k+1];
num[k+1]=num[k]-num[k+1];
num[k]=num[k]-num[k+1];
}
}
}
for (int i=0; i<10; i++) {
printf("%4f \n",num[i]);
}
}
//void*maoPao( float num[])
//{
//
// for (int i =0; i<10-1; i++) {
// for (int k=0; k<10-1-i; k++) {
// if (num[k]>num[k+1]) {
// num[k]=num[k]+num[k+1];
// num[k+1]=num[k]-num[k+1];
// num[k]=num[k]-num[k+1];
//
// }
//
// }
// }
// int *p=&num[0];
//
// return p;
//
//
//}
int stringLength(char c[])
{
int count=0;
for (int i=0; i<255; i++) {
if (c[i]==‘\0‘) {
break;
}else
count++;
}
return count;
}
int*stringCopy(char c1[],char c[],count)
{
for (int i=0; i<count; i++) {
c1[i]=c[i];
}
int *p=c1;
return p;
}
int *stringCatch(char c[],char c1[])
{
for (int i=0; i<stringLength(c)+stringLength(c1); i++) {
if (i>=stringLength(c)) {
for (int k=0; k<=stringLength(c1); k++) {
c[i++]=c1[k];
}
break;
}
}
int *p=c;
return p;
}
//void stringCatch(char c[],char c1[])
//{
// for (int i=0; i<stringLength(c)+stringLength(c1); i++) {
// if (i>=stringLength(c)) {
// for (int k=0; k<=stringLength(c1); k++) {
// c[i++]=c1[k];
// }
// break;
// }
//
// }
// printf("%s",c);
//
//}
int stringCompare(char c[],char c1[])
{
int num=0;
for (int i =0; i<255; i++) {
if (c[i]!=c1[i]) {
num=c[i]-c1[i];
break;
}
}
return num;
}
int main(int argc, const char * argv[])
{
// insert code here...
//printf("Hello, World!\n");
//1、(**)一维浮点型数组函数的冒泡排序
// float num[10];
// for (int i=0; i<10; i++) {
// scanf("%f",&num[i]);
// }
// maoPao(num);
// int *p = maoPao(num);
// for (int i=0; i<10; i++) {
// printf("%4f \n",*p+i);
// }
//2、(***)编写实现strlen同功能的函数stringLength。
// char c[255];
// scanf("%[^\n]",c);
// int count = stringLength(c);
// printf("%d\n",count);
//3、(***)编写实现strcpy同功能的函数stringCopy。
// char c[]="qweqwcjk asda";
// int count = stringLength(c);
// char c1[count];
// int *p;
// p=stringCopy(c1, c,count);
// printf("%s\n",p);
//
//4、(***)编写实现strcat同功能的函数stringCatch。
// char c[255];
// char c1[255];
// gets(c);
// gets(c1);
// int count =stringLength(c);
// printf("%d",count);
//stringCatch(c, c1);
// int *p=stringCatch(c, c1);
// printf("%s",p);
// 5、(***)编写实现strcmp同功能的函数stringCompare。
// char c[255];
// char c1[255];
// gets(c);
// gets(c1);
// int sum=stringCompare(c, c1);
// printf("%d",sum);
/*
6、(****)模拟ATM机取款的过程
(1)、定义两个能保存5个整形数的数组,一个用于保存5个人的卡号,一个用于保存对应卡号的密码。
(2)、判断输入的卡号是否在数组中。
(3)、如果在数组中就让输入密码,判断是否和卡号对应的密码匹配。
(4)、判断密码,24小时内只允许输入3次 错误的密码。输入错误应该提示还剩下的输入次数,3次都输入错误提示24小时内不允许操作该卡。
(5)、密码正确就让用户对该账户进行相应的操作。
(6)、注意取款的限制。
(7)、上述功能对于一个ATM机是循环的过程,也就是说每个客户都会按照上面的操作进行操作,一个用户操作完成,下一个用户来了还可以进行相应的操作
*/
int n=0,p=0,flog=-1,count=3;
int num[5]={1001,1002,1003,1004,1005};
int passWord[5]={123451,123452,123453,123454,123455};
while (1) {
int unflog=-1;
printf("请输入正确的卡号:");
scanf("%d",&n);
for (int i=0; i<5; i++) {
flog++;
if (num[i]==n) {
break;
}
unflog++;
}
if (unflog!=4) {
break;
}
}
//printf("%d",flog);
while (1) {
printf("请输入正确的密码:");
scanf("%d",&p);
if (passWord[flog]==p) {
break;
}else{
count--;}
if (count==0) {
printf("24小时内不允许操作该卡!!!\n");
return 0;
}else
printf("还剩下%d次输入机会。\n",count);
}
int num1;
printf("请输入取款金额:1.100\n 2. 200\n 3. 500\n 4.1000\n 5.2000\n 或者输入不大于2000的数字!\n");
scanf("%d",&num1);
switch (num1) {
case 1:
printf("成功取出100\n");
break;
case 2:
printf("成功取出200\n");
break;
case 3:
printf("成功取出500\n");
break;
case 4:
printf("成功取出1000\n");
break;
case 5:
printf("成功取出2000\n");
break;
default:
break;
}
while (1) {
printf("请输入不大于2000的数字!\n");
scanf("%d",&num1);
if ((num1>=100&&num1<=2000)&&num1%100==0) {
printf("成功取出%d\n",num1);
break;
}else{
printf("输入错误!");
}
}
return 0;
}
相关文章
- 09-14C++ list 介绍-🌈三、list的特殊功能函数
- 09-14如何编写可读性高的嵌入式 C 语言代码?|2024网盘分享6.89G嵌入式-物联网 嵌入式新手C语言必学教程
- 09-14C++学习之阶段性练习题(C++ STL的集合、映射、函数对象和Lambda表达式)
- 09-14对C语言符号的一些冷门知识运用的剖析和总结
- 09-14数据结构的队列(c语言版)
- 09-14深入理解C语言中的 extern`和 static
- 09-14C语言如何实现⼆级指针对⼆维数组的操作?
- 09-14嵌入式物联网实战开发笔记-乐鑫ESP32开发环境ESP-IDF搭建【doc.yotill.com】- 图 3.2.1.1 ESP32-IDF 安装包(部分截图) 上图中 ESP32-IDF v5.1.2 - Offine Installer,5.1.2 是当前最新版本,如果没有 ESP32-IDF v5.1.2 - Offine Installer,说明官方有更新最新版本。我们建议使用离线 ESP32-IDF 安装包,因为使用在线 ESP32-IDF 安装包搭建环境需要网络的支持,所以我们不能保证网络下载过程中丢失某些文件,从而导致搭建环境失败。 下载成功后,在安装程序上单击右键选择<以管理员身份运行>运行 esp-idf-tools-setup- 图 3.2.1.2 以管理员身份运行 IDF 安装文件打开安装程序后选择简体中文安装,如下图所示: 图 3.2.1.3 选择简体中文 往下走就是许可协议,勾选“我同意此协议”,单击下一步,如下图所示: 图 3.2.1.4 勾选“我同意此协议” 如果是第一次安装,会出现如下图提示。 安装程序会检查你当前系统有没有打开"长路径支持",因为 GNU 编译器产生的编译文件会有非常深的目录结构,如果不支持长路径,编译可能出现文件不存在,目录不存在等奇怪的错误。这里单击应用修复按钮,可以修复这个问题。 在弹出的确认对话框中,选择是,开始修复。 图 3.2.1.6 在注册表中启用长路径如果修复不成功,一般情况是安装软件打开时没有使用管理员权限打开,可以手动修改注册表来支持长路径:打开注册表 HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\LongPat hsEnabled 设置为 1。如下图所示: 修复完成之后,点击下一步。 接下来一步,开始选择安装目录,安装程序默认的安装位置为 C:\Espressif,但这里我是安装在 D 盘,如果全部源码编译后可能产生几十 G 的大小占用,我们在 D 盘下创建 ESP32\Espre ssif 文件夹来保存 ESP32-IDF 库安装过程中生成的文件,如下图所示: 图 3.2.1.8 设置安装路径 这个安装路径非常重要,因为 VS Code 软件的 IDF 插件需要此路径来获取相关文件,所以开发者务必牢记该路径。 下一步,确认安装组件,这里全部打勾,默认完全安装时 ESP32C2 是不打勾的(如下图所示),看需要自己选择。然后单击下一步。 图 3.2.1.9 选择安装组件我们选择全部安装。点击下一步再次确认安装目录信息,然后单击安装。安装完成,三个全部勾选,2 用于测试环境安装是否成功,3 是将 IDF 工具链加入杀毒工具排除项,以加快编译速度,如下图所示: 3.2.2 验证 ESP-IDF 库 ESP-IDF 安装完成之后,系统自动打开两个窗口,它们分别为 PowerShell 命令行和传统的 cmd 命令行窗口,分别如下图所示: 从上图中可以看到,当出现红色方框内的内容时,可以初步证明安装是没有问题的,同时这两个窗口都提示“idf.py build”字符串,它是 ESP32-IDF 库提供的编译代码命令。到此,我们如何验证 ESP32-IDF 库安装是否成功呢?这里我们使用 ESP32-IDF 库提供的实例来验证安装是否成功。首先我们打开 D:\ESP32\Espressif\frameworks\esp-idf-v5.1.2\examples\get-started 路径,在此路径下包含三个 ESP32-S3 例程,如下图所示: 这里我们使用第二个例程(hello_world)来验证 ESP32-IDF 库是否安装成功,首先拷贝这里例程的路径,然后在 PowerShell 或 cmd 命令行窗口输入命令“cd D:\ESP32\Espressif\framew orks\esp-idf-v5.1.2\examples\get-started\hello_world”,最后按回车进入此例程,如下图①所示: 此时在此窗口输入命令“idf.py build”(上图②)编译此工程,编译结果如下所示: 窗口提示命令“idf.py -p (port) flash”,证明 ESP32-IDF 库安装完成。开发者也可以使用其他命令来验证,如命令(idf.py Menuconfig 进入菜单配置、idf.py set-target xxx 选择芯片或者是 idf.py monitor 开启监控等)。 3.2.3 添加 ESP32-IDF 的环境变量 按照此过程(此电脑→属性→高级系统→环境变量)打开,如下图所示: 图 3.2.3.1 添加环境变量 如果 ESP32-IDF 库安装成功,则系统自动为我们添加上图中的 IDF_TOOLS_PATH 和 IDF_PATH 环境变量,否则手动添加这两个环境变量。 3.3 搭建开发环境 3.3.1 下载与安装 VSCode 鉴于我们使用的是 VSCode IDE 搭配官方 IDF 的方式进行开发,我们接下来便介绍一下 VSCode 的安装过程。 首先,进入 VSCode 官方下载页面,根据系统需求选择下载安装包下图是 VSCode 图 3.3.1.1 VSCode 官网下载界面 这里,我们选择 Windows 版本进行下载。因为,我们是在 Windows 环境下进行的开发,故在此介绍 Windows 版本的下载步骤。不出意外,其它版本的下载方式应该也是一样的。这里我们不多废话,直接点击下载。 下载完后,我们按照如下所示步骤进行即可: 在该步骤中,路径如需更改的,请您点击“浏览”进行更改,但请注意:修改的路径最好不要出现中文,以避免在往后的开发过程中遇到问题而导致重装软件,这对您来说就得不偿失了。 如需修改,同样点击“浏览”进行设置,无需修改的话直接点击“下一步”即可。 这一步骤同样是有需求的都勾上,我们建议是都勾上。 详细的个性化设置我们便不多介绍了,在这里我们介绍如何设置中文界面。 我们在上图 3.4.8 中找到最左边一栏的“扩展”在搜索框中输入“Chinese”即可出现红色框内的扩展应用,然后我们点击安装并重启软件即可。 至此,VSCode 的安装与配置便算是大功告成了。感谢您能耐心看到此处。
- 09-14【C语言 |动态内存管理】堆区动态内存的管理!!!
- 09-14贪吃蛇的简单实现(c语言)