【C刷题训练营】第四讲(打好基础很重要)

前言:

        大家好,这是c语言刷题训练营的第四讲,打好基础便于对c语言语法与算法思维的提高,感谢你的来访与支持!

💥🎈个人主页:​​​​​​Dream_Chaser~ 🎈💥

✨✨刷题专栏:http://t.csdn.cn/baIPx

⛳⛳本篇内容:c语言刷题训练营 第四讲(牛客网)

目录

BC23-时间转换

解题思路:

BC24-总成绩和平均分计算

解题思路:

BC30-kiki和酸奶

解题思路:

BC31-发布会信息

解题思路:

BC32-输出学生信息

解题思路: 

BC33-计算平均成绩 

解题思路:

BC34-进制A+B

解题思路:

BC37-网购

解题思路:

BC39-争夺前五名

解题思路:

BC40-竞选社长 

解题思路:


BC23-时间转换

来源: 时间转换_牛客题霸_牛客网 (nowcoder.com)

描述

给定秒数 seconds ,把秒转化成小时、分钟和秒。

数据范围: 0 <seconds < 100000000 

输入描述:

一行,包括一个整数,即给定的秒数。

输出描述:

一行,包含三个整数,依次为输入整数对应的小时数、分钟数和秒数(可能为零),中间用一个空格隔开。

示例1

输入:3661
输出:1  1  1

解题思路:

代码实现:

#include <stdio.h>int main() {int seconds=0;scanf("%d",&seconds);int hour=0,min=0,sec=0;hour=seconds/3600;min=seconds%3600/60;sec=seconds%3600%60;printf("%d %d %d ",hour,min,sec);return 0;
}

执行: 

中间的部分也可以写成这样:

BC24-总成绩和平均分计算

来源:总成绩和平均分计算_牛客题霸_牛客网 (nowcoder.com)

题目描述
依次输入一个学生的 3 科成绩,在屏幕上输出该学生的总成绩以及平均成绩

输入描述:

一行, 3 科成绩,成绩之间用一个空格隔开。

输出描述:

一行,总成绩和平均成绩(小数点后保留两位),用一个空格隔开。
示例 1

输入:79.5 80.0 98.0

输出:257.50 85.83

解题思路:

方法一
#include <stdio.h>int main() {double a=0.0,b=0.0,c=0.0;//三科成绩double sum=0.0;//总成绩double avg=0.0;//平均分 scanf("%lf %lf %lf",&a,&b,&c);//输入三科sum=a+b+c;avg=sum/3;//输出三科printf("%.2lf %.2lf",sum,avg);return 0;
}

方法二:

int main() {double score[3] = {0.0};//输入scanf("%lf %lf %lf",&score[0],&score[1],&score[2]);//计算double sum= score[0] + score[1] + score[2];double avg= sum/3.0;//输出printf("%.2lf %.2lf",sum,avg);return 0;
}

方法三:

int main()
{double score= 0.0;double sum= 0.0;//输入并计算int i= 0;for( i=0;i<3;i++){scanf("%lf",&score);sum += score;}printf("%.2lf %.2lf\n",sum,sum/3);return 0;
}

BC30-kiki和酸奶

来源:KiKi和酸奶_牛客题霸_牛客网 (nowcoder.com)

题目描述

        BoBo买了一箱酸奶,里面有n盒未打开的酸奶, KiKi 喜欢喝酸奶,第一时间发现了酸奶。 KiKi h 分钟能喝光一盒酸奶,并且KiKi 在喝光一盒酸奶之前不会喝另一个,那么经过 m 分钟后还有多少盒未打开的酸奶?
输入描述:
多组输入,每组输入仅一行,包括 n h m (均为整数)。输入数据保证 m <= n * h

输出描述

针对每组输入,输出也仅一行,剩下的未打开的酸奶盒数。
示例 1
输入: 8 5 16
输出:  4

解题思路:

方法一:

  1. 每组输入记得写上while(scanf() ! = EOF)
  2. 剩下的未打开的酸奶盒数,实际的等于 已喝完的酸奶盒数(m / h) + 已打开的酸奶盒数(m % h)

图解:

 代码实现:

#include <stdio.h>int main() {int n = 0;//给的酸奶数int h = 0;// 分/盒,喝一瓶酸奶的时间int m = 0;//总共给的时间//多组输入while (scanf("%d %d %d", &n, &h, &m) != EOF){n = n - (m / h + m % h);//剩下未打开的酸奶盒数}printf("%d", n);return 0;
}

执行: 

方法二: 

n = 0;//给的酸奶数

h = 0;// 分/盒,喝一瓶酸奶的时间
m = 0;//总共给的时间

以n为8 ,h为5,m为16,为例子

当 m % h  不为 0 时,表示在16分钟的时间内,16 % 5 商为3,余1 ,则说明3瓶全喝完了,还剩个1瓶已经打开了,还没喝完

以n为8 ,h为4,m为16,为例子

当 m % h  为 0 时,表示在16分钟的时间内,16 % 4 商为4 ,则说明4瓶全喝完了 ,也没有打开的但未喝完的酸奶。

int main() {int n = 0;//给的酸奶数int h = 0;// 分/盒,喝一瓶酸奶的时间int m = 0;//总共给的时间while (scanf("%d %d %d", &n, &h, &m) != EOF){if (m % h)//不为0,说明有打开但未喝完的酸奶{printf("%d\n", n - m / h - 1);}else//为0,则说明在m分钟内全部喝完了{printf("%d\n", n - m / h);}}return 0;
}

 执行: 

BC31-发布会信息

来源:发布信息_牛客题霸_牛客网 (nowcoder.com)

题目描述 
你的手机丢了,在屏幕上输出信息告诉大家
输入描述:
输出描述 :
I lost my cellphone!

解题思路:

直接把输出描述复制一下,粘贴到printf函数内打印即可

代码实现:

#include <stdio.h>
int main()
{printf("I lost my cellphone!\n");return 0;
}

执行: 

BC32-输出学生信息

来源:输出学生信息_牛客题霸_牛客网 (nowcoder.com)

题目描述
学生信息管理系统是学校教学管理的重要工具,现有一名学生基本信息如下:姓名 -Jack ,年龄 -18 ,性别-Man ,请按照输出样例的格式输出该学生的信息。

输入描述:

输出描述 :
输出分为三行,分别为标题行,分隔行,信息行。
第一行,标题行,每个标题之间间隔 4 个空格。
第二行,分隔行,一共 21 个减号 "-"
第三行,信息行,每列输出信息和标题首字母对齐。输出样例如下:
Name   Age   Gender
---------------------
Jack   18     man

解题思路: 

代码实现:

#include <stdio.h>
int main() {printf("Name    Age    Gender\n");printf("---------------------\n");printf("Jack    18     man\n");return 0;
}

 代码执行:

BC33-计算平均成绩 

来源:计算平均成绩_牛客题霸_牛客网 (nowcoder.com)

题目描述
从键盘输入 5 个学生的成绩(整数),求他们的平均成绩(浮点数,保留一位小数)
输入描述 :
一行,连续输入 5 个整数(范围 0~100 ),用空格分隔。

输出描述:

一行,输出5个数的平均数(保留一位小数)。 

示例 1
输入 75 80 43 67 96
输出 72.2

解题思路:

写法一:
int main() {int num[5] = {0};int i = 0;//输入for (i = 0; i < 5; i++) {scanf("%d", &num[i]);}//求和int sum = 0;for (i = 0; i < 5; i++) {sum = sum + num[i];}//输出printf("%.1lf", sum / 5.0);return 0;
}

写法二:

int main() {int i = 0;int num = 0;int sum=0;//输入for (i = 0; i < 5; i++) {scanf("%d", &num);//求和sum+=num;}//输出printf("%.1lf", sum / 5.0);return 0;
}

写法一和写法二执行:

BC34-进制A+B

来源:进制A+B_牛客题霸_牛客网 (nowcoder.com)

 题目描述

输入一个十六进制数 a ,和一个八进制数 b ,输出 a+b 的十进制结果(范围 -231~231-1 )。
输入描述 :
一行,一个十六进制数 a ,和一个八进制数 b ,中间间隔一个空格。

示例1

输入 0x12 05 

输出 23
备注 :
十六进制 Hexadecimal 一般以 0x 开头,例如 0xFF 。八进制 Octal ,一般以 0 开头,例如 07

解题思路:

%x 是 16 进制的数据形式
%o 是 8 进制的数据形式

注意怎么输入十六进制和八进制即可解决此题

#include <stdio.h>int main() {int a=0,b =0;//%x 是 16 进制的数据形式//%o 是 8 进制的数据形式scanf("%x %o",&a,&b);printf("%d",a+b);return 0;
}

执行 :

BC37-网购

题目描述

KiKi 非常喜欢网购,在一家店铺他看中了一件衣服,他了解到, 如果今天是“双11”(11月11日)则这件衣服打7折,“双12” (12月12日)则这件衣服打8折,如果有优惠券可以额外减50元(优惠券只能在双11或双12使用) ,求 KiKi 最终所花的钱数。
输入描述 :
一行,四个数字,第一个数表示小明看中的衣服价格,第二和第三个整数分别表示当天的月份、当天的日期、第四个整数表示是否有优惠券(有优惠券用1 表示,无优惠券用 0 表示)。
输出描述
一行,小明实际花的钱数(保留两位小数)。(提示:不要指望商家倒找你钱)
示例 1
输入  1000.0 11 11 1
输出   650.00
示例 2
输入 999.8 12 12 0
输出 799.84
示例 3
输入  66.6 11 11 1
输出  0.00

解题思路:

方法一:

如果是11月11日

  1. 有优惠券:总价打7折,接着减50(假设买的东西不足50,那么商家不会倒贴找钱)。
  2. 无优惠券:总价打7折

如果是12月12日

  1. 有优惠券,总价打8折,接着减50(假设买的东西不足50,那么商家不会倒贴找钱)。
  2. 无优惠券:总价打7折。

代码实现: 

#include <stdio.h>int main() {double price=0.0;int mon=0,days=0;int flag=0;scanf("%lf %d %d %d",&price,&mon,&days,&flag);//条件是11月11日,有优惠券if(mon==11&&days==11 && flag==1){   //价格打7折,减50price=price*0.7 - 50;//50块的券可以直接当作钱来付款,如果买的东西的价格不足50,商家不会找钱if(price<0){price=0;}         }//条件是11月11日,无优惠券else  if(mon==11&&days==11 && flag==0){  //价格打7折price=price*0.7;}//条件是12月12日,有优惠券else if(mon==12&&days==12 && flag==1){   //价格打8折,减50price= price*0.8-50;//50块的券可以直接当作钱来付款,如果买的东西的价格不足50,商家不会找钱if(price<0){price=0;}          }//条件是12月12日,无优惠券else if(mon==12&&days==12 && flag==0){price = price*0.8;}//保留小数点后两位printf("%.2lf",price);return 0;
}

方法二:简化的写法

定义变量

price是价格,mon为月,days是日,

flag是1表示有优惠券,为0表示无优惠券

cut是折扣,last则表示实际花钱数

1️⃣如果是双11,cut*0.7

2️⃣如果是双12,cut*0.8

实际花出去的钱数 = 总价 * 折扣 - 优惠券(50 或 0)

也就是last= price * cut - flag * 50

如果花出去的钱小于0,那么商家不会倒贴,直接0元购

否则大于0,那就直接返回last

代码实现:

int main()
{double price=0.0;//价格int mon=0,days=0;//月,日int flag=0;//是否有优惠券double cut=1.0;//折扣double last=0.0;//实际花钱数//输入scanf("%lf %d %d %d",&price,&mon,&days,&flag);//双11打七折if(mon==11&&days==11){cut=0.7;}//双12打8折else if(mon==12 && days==12){cut=0.8;}//实际花出去的钱数 = 总价 * 折扣 - 优惠券(50 或 0)last= price * cut - flag * 50;//如果花出去的钱小于0,那么商家不会倒贴,直接0元购if(last<0.0){printf("%.2lf\n",0.0);}//否则大于0,那就直接返回lastelse{printf("%.2lf\n",last);}return 0;
}

执行:

BC39-争夺前五名

题目描述

期中考试开始了,大家都想取得好成绩,争夺前五名。从键盘输入n个学生成绩(不超过40个),输出每组排在前五高的成绩。

输入描述 :
两行,第一行输入一个整数,表示 n 个学生( >=5 ),第二行输入 n 个学生成绩(整数表示,范围 0~100 ),用空格分隔。

输出描述:

一行,输出成绩最高的前五个,用空格分隔。 

示例1

输入 

6

99 45 78 67 72 88

输出

99 88 78 72 67

解题思路:

1️⃣成绩录入部分:

定义变量n为学生的成绩数量,定义一个大小为40的整型数组用于存储每个学生的成绩,定义for循环接着输入每个学生的成绩。

2️⃣排序部分:

①冒泡排序

用冒泡排序的思想,将学生的成绩排成升序

冒泡排序请看此篇文章:【C进阶】回调函数(指针进阶2,详解,小白必看)_Dream_Chaser~的博客-CSDN博客

代码实现:

#include<stdio.h>
//冒泡排序
int main() {int n = 0;//学生成绩的数量int arr[40] = { 0 };//存储成绩的数组int i = 0;scanf("%d", &n);for (i = 0; i < n; i++){scanf("%d", &arr[i]);//输入每个学生的成绩}//冒泡排序for (i = 0; i < n - 1; i++){int j = 0;int tmp = 0;for (j = 0; j < n - 1 - i; j++){if (arr[j] > arr[j + 1]){tmp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = tmp;}}}for (i = n - 1; i >= n - 5; i--)//注意这个地方i的范围,初值,以及判断条件{printf("%d ", arr[i]);}return 0;
}

②快速排序

利用qsort函数,实现学生成绩的升序排序

关于第④点函数指针

代码实现:

//快速排序
int cmp_int(const void* e1, const void* e2)
{return *(int*)e1 - *(int*)e2;
}int main() {//输入int n = 0;//个数int arr[40] = { 0 };//存放的是成绩int i = 0;scanf("%d", &n);for (i = 0; i < n; i++){scanf("%d", &arr[i]);}//排序 - 升序 - 后5个元素 - 就是最高的前5个成绩//qsort - C语言库函数qsort(arr, n, 4, cmp_int);for (i = n - 1; i >= n - 5; i--)//注意这个地方i的范围,初值,以及判断条件{printf("%d ", arr[i]);}return 0;
}

3️⃣输出部分:按降序的方式输出成绩排名最高的前5位学生

for (i = n - 1; i >= n - 5; i--)//注意这个地方i的范围,初值,以及判断条件{printf("%d ", arr[i]);}

以上两个排序的执行结果:

BC40-竞选社长 

题目描述

假设你们社团要竞选社长,有两名候选人分别是A和 B ,社团每名同学必须并且只能投一票,最终得票多的人为社长。

输入描述:

一行,字符序列,包含AB,输入以字符0结束。  

输出描述:

一行,一个字符,ABE,输出A表示A得票数多,输出B表示B得票数多,输出E表示二人得票数相等。  

示例1

输入 ABBABBAAB0

输出 B

解题思路:

写法一:

        定义一个字符数组,利用gets函数输入一行字符。定义i作为循环的前进条件。定义while循环,循环的判定条件是字符数组buf[i]!=‘\0’,接着定义count_a和count_b用于计算字符'A'和字符'B'的数量。

         最后输出部分,如果count_a>count_b,则输出,'A'。反之输出‘B’,如果两字符数量相等,则输出'E'。

int main() {char buf[100]={0};//输入gets(buf);//统计int count_a = 0;int count_b = 0;int i=0;while(buf[i]!='0'){if(buf[i] =='A'){count_a++;}if(buf[i]=='B'){count_b++;}i++;}//输出if(count_a > count_b){printf("A\n");}else if(count_a < count_b){printf("B\n");}else{printf("E\n");}return 0;
}

写法二:

与写法一大致思路相似,只是定义了一个flag作为判断条件,若遇到’A‘,则flag++ ,反之遇到‘B’则--。到最后若flag>0,则输出‘A’,反之则‘B’,若flag为0则输出‘E’。

int main()
{char buf[100] = {0};//输入gets(buf);//统计int flag=0;int i=0;while(buf[i]!='0'){if(buf[i] == 'A'){flag++;}if(buf[i] == 'B'){flag--;}i++;}//输出if(flag>0){printf("A\n");}else if(flag<0){printf("B\n");}else{printf("E\n");}return 0;
}

写法三:

从用户输入中逐个读取字符,并根据不同的字符进行不同的操作,直到遇到字符 '0' 或文件结束符(EOF)为止。

  • 如果读取的字符是 'A',则执行 flag++,即将变量 flag 的值加一。
  • 如果读取的字符是 'B',则执行 flag--,即将变量 flag 的值减一。

其它思路基本不变。

int main()
{//输入  int ch = 0;int flag = 0;while (((ch = getchar()) != '0') && ch != EOF){if (ch == 'A'){flag++;}if (ch == 'B'){flag--;}}if (flag > 0){printf("A\n");}else if (flag < 0){printf("B\n");}else{printf("E\n");}return 0;
}

写法一二三执行:

        c语言刷题训练营第4讲到此结束,感谢大家支持! 

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

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

相关文章

爬虫框架Scrapy学习笔记-1

前言 在现代互联网时代&#xff0c;网页数据获取和处理已经成为了重要的技能之一。无论是为了获取信息、做市场研究&#xff0c;还是进行数据分析&#xff0c;掌握网页爬取和数据处理技术都是非常有用的。本文将介绍从网页加载到数据存储的完整过程&#xff0c;包括网络请求、…

树结构构建,字典树快速生成。

表结构 查出list后&#xff0c;用工具类转换。工具类代码如下&#xff1a; 下面展示一些 内联代码片。 public static List<JSONObject> toTreeList(List tList, String oidkey, Stripspidkey) List<JSONObject> jsonObjectList JSONArray. parseArray (JSON.…

【逗老师的无线电】艾德克斯TTL串口转网口

最近手搓了一个可以用于艾德克斯ITECH电源或者电子负载的TTL串口转网口的模块&#xff0c;用上之后&#xff0c;上位机软件就可以配置以太网IP连接设备啦。就像这样。 一、ITECH TTL接口定义 二、整体逻辑 嗯&#xff0c;就这么简单。IT9000控制软件的Ethernet功能就是直接S…

ADB底层原理

介绍 adb的全称为Android Debug Bridge&#xff0c;就是起到调试桥的作用。通过adb我们可以在Eclipse/Android Studio中方便通过DDMS来调试Android程序&#xff0c;说白了就是debug工具。adb是android sdk里的一个工具, 用这个工具可以直接操作管理android模拟器或者真实的and…

springboot基础--实现默认登录页面

1、搭建项目 依赖中 多加入thymeleaf依赖 <dependencies><!--thymeleaf的依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><!--we…

深度学习中安装了包但是依然导入(import)失败这一问题,例如pytorch环境下已经安装了scikit-learn但是import不了

在跑深度学习模型的时候我们要先搭建pytorch环境&#xff0c;这个环境跟windows环境是不同的&#xff0c;我们默认在windows中安装的包在当前的虚拟环境中读取不到&#xff0c;所以导致我们明明安装了包但是依然在实际的导入中(import)报错。解决办法就是我们去虚拟环境中安装包…

免费开箱即用微鳄售后工单管理系统

编者按&#xff1a;本文介绍基于天翎MyApps低代码平台开发的微鳄售后工单管理系统&#xff0c; 引入低代码平台可以帮助企业快速搭建和部署售后工单管理系统&#xff0c; 以工作流作为支撑&#xff0c;在线完成各环节数据审批&#xff0c;解决售后 工单 服务的全生命周期过程管…

线性矩阵不等式(LMI)在控制理论中的应用

目录 &#xff08;一&#xff09;Matlab中的LMI处理工具包 &#xff08;二&#xff09;为什么LMI成为控制理论领域重要工具&#xff1f; &#xff08;三&#xff09;LMI在与Lyapunov不等式的关系 &#xff08;1&#xff09;线性矩阵不等式 &#xff08;2&#xff09;线性矩阵…

Java + Selenium + Appium自动化测试

一、启动测试机或者Android模拟器&#xff08;Genymotion俗称世界上最快的模拟器&#xff0c;可自行百度安装&#xff09; 二、启动Appium&#xff08;Appium环境安装可自行百度&#xff09; 三、安装应用到Genymotion上&#xff0c;如下图我安装一个计算机的小应用&#xff0c…

前端screenfull实现界面全屏展示功能

还是先引入依赖 我们要先执行 npm config set registry https://registry.npmjs.org/将本地npm registry地址设置为官方的npm registry地址 不然这个东西安装会有点问题 然后我们执行命令安装 npm install screenfull安装完之后 我们终端执行一下 npm config delete registr…

Docker基础-namespace

Docker-namespace namespace基础命令dd 命令mkfsdfmountunshare pid 隔离试验mount 隔离 namespace namespace 是 Linux 内核用来隔离内核资源的方式。通过 namespace 可以让一些进程只能看到与自己相关的一部分资源&#xff0c;而另外一些进程也只能看到与它们自己相关的资源…

回溯算法 解题思路

文章目录 算法介绍回溯算法能解决的问题解题模板1. 组合问题2. N皇后问题 算法介绍 回溯法&#xff08;Back Tracking Method&#xff09;&#xff08;探索与回溯法&#xff09;是一种选优搜索法&#xff0c;又称为试探法&#xff0c;按选优条件向前搜索&#xff0c;以达到目标…

vue3项目学习一:创建vue3项目

创建vue3项目 一、使用vue-cli创建vue3项目1.安装vue-cli2.创建vue3项目 二、初始化项目结构三、导入element-ui 一、使用vue-cli创建vue3项目 1.安装vue-cli 先查看是否安装vue-cli 在cmd窗口输入vue -V查看版本&#xff0c;如果出现 则说明存在vue-cli,如果出现 则需要安…

机器学习第七课--情感分析系统

分词 分词是最基本的第一步。无论对于英文文本&#xff0c;还是中文文本都离不开分词。英文的分词相对比较简单&#xff0c;因为一般的英文写法里通过空格来隔开不同单词的。但对于中文&#xff0c;我们不得不采用一些算法去做分词。 常用的分词工具 # encodingutf-8 import …

自研一个简易版本的OkHTTP

一,背景 为了彻底搞明白okhttp原理&#xff0c;仿照okhttp自研一个 二&#xff0c;思路 业务上没发出一个request&#xff0c;使用AsyncCall包装起来&#xff0c;然后在网络分发器的作用下&#xff0c;执行具体的每一个Call,这些具体的Call会经过层层的拦截器&#xff0c;最终…

【css | linear-gradient】linear-gradient()的用法

linear-gradient() CSS函数创建一个由两种或多种颜色沿一条直线进行线性过渡的图像,其结果是<gradient>数据类型的对象,此对象是一种特殊的<image> 数据类型。 先看一个线上的示例 https://code.juejin.cn/pen/7277486410842996771 语法 /* 渐变轴为 45 度&…

Iterator设计模式

目录 1、示例 1.1 Aggregate接口 1.2 Iterator接口 1.3 Book类 1.4 BookShelf类 1.6 BookShelfIterator 类 1.7 Main类 2、解释Iterator模式中的角色 2.1 Iterator模式的存在意义 2.2 抽象类和接口 2.3 Aggregate 和 Iterator的对应 2.4 容易弄错"下一个"…

day06_Java中的流程控制语句

流程控制 简单来讲所谓流程就是完成一件事情的多个步骤组合起来就叫做一个流程。在一个程序执行的过程中&#xff0c;各条语句的执行顺序对程序的结果是有直接影响的。我们必须清楚每条语句的执行流程。而且&#xff0c;很多时候要通过控制语句的执行顺序来实现我们想要的功能…

OpenCV(三十五):凸包检测

1.凸包检测介绍 凸包检测是计算凸包的一种技术&#xff0c;凸包就是&#xff1a;给定二维平面上的点集&#xff0c;将最外层的点连接起来构成的凸边形&#xff0c;它是包含点集中所有的点。 2.凸包检测函数convexHull() void cv::convexHull ( InputArray points, OutputArra…

Web应用系统的小安全漏洞及相应的攻击方式

写作目的 本文讲述一个简单的利用WebAPI来进行一次基本没有破坏力的“黑客”行为。 主要目的如下&#xff1a; 了解什么叫安全漏洞 知道什么是api 了解一些获取api的工具 通过对API的认识了解白盒接口测试基本概念和技术 免责声明&#xff1a; 本文主要是以学习交流为目的&a…