C程序综合训练随堂考试(2021年5月27日)全网最详细的注释

一到这种PTA考试就掉链子,不是写不出来,好像一在PTA上考试人就好像是傻了,好几次都是这种情况,考完后写个题解吧。

百分之百原创!个人觉得代码很完美,很健康!

同时 ,有些代码直接交到pta上肯定不会通过,但是bug倒是没有,只不过代码是按照题意完全自己构建的,读者如果理解我的想法,很快就可以写出来对应的答案代码!希望读者自己体会一下!

6-1 统计专业人数 (15 分)

题目大意

给一个存有学生学号的链表,统计含有特点特征的节点个数

解题思路

从头到尾遍历链表,添加一个变量来计数即可,较为简单

代码

int countcs( struct ListNode *head )
{int count=0;while(head!=NULL){if(head->code[1]=='0'&&head->code[2]=='2') ++count;head=head->next;}return count;
}

6-2 删除单链表偶数节点 (20 分)

题目

本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中偶数值的结点删除。链表结点定义如下:

struct ListNode {int data;struct ListNode *next;
};

函数接口定义:

struct ListNode *createlist();
struct ListNode *deleteeven( struct ListNode *head );

函数createlist从标准输入读入一系列正整数,按照读入顺序建立单链表。当读到−1时表示输入结束,函数应返回指向单链表头结点的指针。

函数deleteeven将单链表head中偶数值的结点删除,返回结果链表的头指针

裁判测试程序样例:

#include <stdio.h>
#include <stdlib.h>struct ListNode {int data;struct ListNode *next;
};struct ListNode *createlist();
struct ListNode *deleteeven( struct ListNode *head );
void printlist( struct ListNode *head )
{struct ListNode *p = head;while (p) {printf("%d ", p->data);p = p->next;}printf("\n");
}int main()
{struct ListNode *head;head = createlist();head = deleteeven(head);printlist(head);return 0;
}/* 你的代码将被嵌在这里 */

输入样例:

1 2 2 3 4 5 6 7 -1

输出样例:

1 3 5 7

解题思路

首先是 这个创建链表,PTA的这种用来结束输入的方法的确有点复杂的,而且这些出题老师都喜欢这种用输入特定输入来结束输入,当时我被搞得… 一直在思考如何设计一个完美的代码架构可以解决特殊情况,比如第一个输入就是-1的时候,可能是上午没睡醒,这个问题想了大半天,晚上在宿舍写的时候,轻松秒杀。个人感觉晚上思路很清晰,看来晚上很适合写代码。
主要的思路都在代码里面了,写了详细的注释,个人觉得代码比较完美,比其他的好理解多了,当然这是百分之八原创的;

因为考试之后没有办法提交,只能自己测试了,我自己写的所有代码如下:

代码

#include<cstdio>
#include<cstdlib>
using namespace std;
struct List
{int data;List *next;
};
List *CreateList();
void ReadList(List *head);
List *DeleteOddnode(List *head);
int main()
{List *head=CreateList();printf("这是刚刚创建的链表:");ReadList(head);head=DeleteOddnode(head);printf("这是经过处理后的链表:");ReadList(head);return 0;
}
List *CreateList()
{int input;scanf("%d",&input);if (input==-1) return nullptr;     //特判直接输入-1的情况List *head=(List *) malloc(sizeof(List));//如果没有输入-1,就创建第一个结点List *result=head;  //并且记住这个结点,因为head结点要去迭代head->data=input;   //把数据赋值while(scanf("%d",&input)&&input!=-1)    //直接在入口判断输入{head->next=(List *) malloc(sizeof(List));//直接创建一个新的结点并赋值给head的下一个结点head=head->next;//然后head进行迭代head->data=input;//把输入赋值给head的datahead->next= nullptr;//这个很重要,因为没有对结构体进行初始化,所以next默认不是nullptr,一定要置空//估计当时就是这里被卡了}return result;
}
void ReadList(List *head)
{while(head!= nullptr){printf("%d\n",head->data);head=head->next;}
}
List *DeleteOddnode(List *head)//采用双指针的方法来做
{List *result= nullptr,*back=head,*pre= nullptr;while(back!= nullptr){if (back->data&1)    break;//先找到该链表上第一个data是奇数的结点,然后就跳出循环//加入全部是偶数结点,那么最后back的就是nullptr,通过特判直接return nullptr;back=back->next;}if (back== nullptr) return nullptr;//这是为了处理back为nullptr的情况,// 因为如果back是nullptr,那么back->next就会出现异常,所以,加上特判!result=back;  //back不是nullptrpre=back->next;//把back->next赋给prewhile(pre!= nullptr)//控制pre遍历到链表的末尾{if (pre->data&1)//如果pre上的数据是奇数{back->next=pre;//就把pre接到back的后面back=back->next;//back进行迭代}pre=pre->next;//pre进行迭代}back->next= nullptr;//这个也很重要,一定要把尾结点的next置空,//举个例子  该链表的数据分别是 1 2 3 4 5 6 8 10//如果没有置空,最后的6 8 10 也会被输出,应为我们最后是把数据为5的那个结点给接上去了,然后后面的//一连串就也被接过来了return result;//最后返回结果即可
}

小结

以上代码都是使用C++写的,不是纯C;但是C语言读者完全可以看懂,毕竟注释已经那么详细了。我们发现上面的对链表的处理,尤其是尾结点,一定要把尾结点的next给置空,虽然C++可以直接在结构体里面进行初始化,但是这个关键点一定不能忘!!!希望读者多多小心。

7-1 自动售货机 (30 分)

题目

如图所示的简易自动售货机,物品架1、2上共有10样商品,按顺序进行编号分别为1-10,标有价格与名称,一个编号对应一个可操作按钮,供选择商品使用。如果物架上的商品被用户买走,储物柜中会自动取出商品送到物架上,保证物品架上一定会有商品。用户可以一次投入较多钱币,并可以选择多样商品,售货机可以一次性将商品输出并找零钱。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OTygUA0M-1622643599562)(https://images.ptausercontent.com/e2bba5b3-dd4a-44fe-8aaf-51a520f3c2cf.jpg)]

用户购买商品的操作方法是:

(1)从“钱币入口”放入钱币,依次放入多个硬币或纸币。钱币可支持1元(纸币、硬币)、2元(纸币)、5元(纸币)、10元(纸币),放入钱币时,控制器会先对钱币进行检验识别出币值,并统计币值总额,显示在控制器显示屏中,提示用户确认钱币放入完毕;

(2)用户确认钱币放入完毕,便可选择商品,只要用手指按对应商品外面的编号按钮即可。每选中一样商品,售货机控制器会判断钱币是否足够购买,如果钱币足够,自动根据编号将物品进行计数和计算所需钱币值,并提示余额。如果钱币不足,控制器则提示“Insufficient money”。用户可以取消购买,将会把所有放入钱币退回给用户。

输入格式:

先输入钱币值序列,以-1作为结束,再依次输入多个购买商品编号,以-1结束。

输出格式:

输出钱币总额与找回零钱,以及所购买商品名称及数量。

输入样例:

1 1 2 2 5 5 10 10 -1
1 2 3 5 1 6 9 10 -1

输出样例:

Total:36yuan,change:19yuan
Table-water:2;Table-water:1;Table-water:1;Milk:1;Beer:1;Oolong-Tea:1;Green-Tea:1;

解题思路

首先,这是一个模拟题(来自ACM的说法)意思就是属于那种,按照题目要求说什么做什么的题,这种题很受人的讨厌,但是这种题可以极大的提高coding能力和逻辑能力,这种题需要去设计出一个比较完美的架构或者说是代码逻辑,才有较大可能通过,否则这里修修,哪里补补,加了无数的if和else,最后把自己都搞糊涂了。在做这种题目之前,一定要完全理解题意,一般出题人风格比较好的话,一是在题目表述时就说清楚了,二是在样例中已经展示了对于某种情况的处理结果,但是有的时候,对于一些特殊情况的处理,样例不会给出的(但是处理结果一定会是清楚的),需要coder自己去考虑,要不然,把各种情况都给你说了,题目就没意思了。

总结一下
1、搞懂题意
2、考虑特殊情况
3、设计比较完美的代码逻辑
可以现在纸上写一下,反正我是没有那么强大的脑容量,直接把整个逻辑个构建下来,往往是,想着这里的,忘着那里的

解题思路

首先,我们发现,有一些信息是固定的,并不是需要从输入中获取的,对的,就是商品的名字和他对应的价格,更好的是,最后的输出结果,假如购买了对应的商品的话,商品名是按照顺序输出的。那么我们就先把这些信息存起来吧。

代码

#include <cstdio>
char list[12][20] = {"0","Table-water","Table-water","Table-water","Coca_Cola","Milk","Beer","Orange-Juice","Sprite","Oolong-Tea","Green-Tea"};//首先把商品的名称都储存起来,我这里把改二维数组的第一行初始化为“0”是为了让下标和商品序号对应
int main()
{int input;//存放输入的人民币的int choice;//存放输入的选择,也就是购买商品的编号int count[20] = {0};//存放购买商品的数量//count[i]表示编号为i的商品购买的数量int money[12] = {0, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4};//每件商品的价格int total = 0, consum = 0;// total就是总的用户有人民币,consum就是这些购买这些商品一共需要多少钱while (scanf("%d", &input)&&input != -1)total+=input;//其实这个也没必要开一个数组来存,一个变量也就可以了,一下注释给出第二种写法while (scanf("%d", &choice)&&choice != -1)//处理购买商品的输入{consum += money[ choice ];//对购买的商品总金额进行累加计算得出count[ choice ]++;//每种商品对应的购买数量每次递增}if (total - consum < 0) //对找回的零钱进行判断{printf("Insufficient money\n");//如果钱不够,就直接输出这条语句return 0;}printf("Total:%dyuan,change:%dyuan\n", total, total - consum);//如果执行到这里说明钱是足够的for (int i = 1; i <= 10; i++)//对十件商品的进行遍历{if (count[i] == 0)  continue;//如果购买该商品的数量为0就不用输出了,只有购买了才要输出//对应的商品名称和购买数量printf("%s:%d;", list[i], count[i]);//输出商品名称和购买数量}return 0;//结束程序,养成良好习惯!
}

7-2 停车场管理 (50 分)

设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的先后次序依次从停车场最里面向大门口处停放 (即最先到达的第一辆车停放在停车场的最里面) 。如果停车场已放满n辆车,则以后到达的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车可以进入停车场。停车场内如有某辆车要开走,则在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费,停留在便道上的车不收停车费。编写程序对该停车场进行管理。

输入格式:

先输入一个整数n(n<=10),再输入若干组数据,每组数据包括三个数据项:汽车到达或离开的信息(A表示到达、D表示离开、E表示结束)、汽车号码、汽车到达或离开的时刻。

输出格式:

若有车辆到达,则输出该汽车的停车位置;若有车辆离开,则输出该汽车在停车场内停留的时间。如果汔车号码不存在,输出the car not in park

输入样例:

3
A 1 1
A 2 2
A 3 3
D 1 4
A 4 5
A 5 6
D 4 7
D 5 8
E 0 0

输出样例:

car#1 in parking space #1
car#2 in parking space #2
car#3 in parking space #3
car#1 out,parking time 3
car#4 in parking space #3
car#5 waiting
car#4 out,parking time 2
car#5 in parking space #3
car#5 out,parking time 1

解题思路

其实这种题最好自己在纸上写一下,反正我是驾驭不了这么大的逻辑框架,总是想着后边的,忘着前边的。
根据这一题的经验,对于模拟题,其实可以把他分块,这样的话会好写很多,一方面可以在搭建好逻辑框架后快速编码,另一方面是不至于写着写着自己都不知道写的是什么了。具体的思路都在代码注释里面了,这里不再过多赘述了。

代码

#include<cstdio>
using namespace std;
int kmax_car=0,count_recored=0;
//kmax_car记录最大的停车数量
//count_recored记录输入的记录数量
struct Node
{char mode='\0'; //记录模式值为A或者Dint car_number=0;//记录车牌号int time=0;//记录进入或者出去的时间
};
Node record[20];//record[i]表示第i条记录
void InPut();//首先把记录输入进去,用来处理输入的函数
int Judge(int count);//判断该车!!!到达!!!时能否有车位
int Judge(int drive_in_count,int drive_out_count);//判断一辆车出来时有没有排队的车辆,有的话返回对应的记录编号
int CalcaluateDriveInTime(int drive_out_count,int drive_in_count);//计算那些等待了的车的停车时间
void ModeDriveIn(int count_drive_in);//对应于A的操作
void ModeDriveOut(int count_drive_out);//对应于D的操作
int main()
{InPut();for(int i=0;i<=count_recored;i++)//遍历每一条记录{if (record[i].mode=='A')    ModeDriveIn(i);if (record[i].mode=='D')    ModeDriveOut(i);}
}
void InPut()
{scanf("%d",&kmax_car);char mode='\0';while(scanf(" %c",&mode)&&mode!='E'){record[count_recored].mode=mode;scanf("%d",&record[count_recored].car_number);scanf("%d",&record[count_recored].time);++count_recored;}
}
int Judge(int count)
{//该车模式为A的时候,有两种情况可以不用等待,直接进入停车场/*!* 1、车位没有满,也就是前面A的数量小于kmax_car* 2、 有车进去,有车出来,最终抵消掉了一些A*/int car_position=0;//添加一个变量,计数停车场已经停入的车辆for(int i=0;i<=count;i++)//从头遍历记录{if (record[i].mode=='A')    ++car_position;//如果发现该车模式是Acar_position++;else --car_position;//是D就--,因为有车出去了,而且该车出去说明一定已经去了,输入合法前提下}/**最后比较结果*/if (car_position>kmax_car) return -1;else return car_position;
}
int Judge(int drive_in_count,int drive_out_count)//
{for (drive_in_count+=1;drive_in_count<drive_out_count;drive_in_count++)if (Judge(drive_in_count)==-1) break;//找到第一辆等待的车int count=0;for (int i=drive_in_count;i<drive_out_count;i++)//找到该区间内出去的车腾出来了多少个车位if (record[i].mode=='D') ++count;for (int i=drive_in_count;i<drive_out_count;i++){if (record[i].mode=='A') --count;//遇到A就--,if (count<0)  return i;//减到小于0说明这是第一辆排队等待的车}return -1;//如果没有排队等待的车就返回-1}
int CalcaluateDriveInTime(int drive_out_count,int drive_in_count)
{//这个函数主要是给那些停车需要等待的车辆用的int count_of_wait = -kmax_car;//count_of_wait是记录该车辆需要等待的编号,小于等于0说明不用等待//而且,能进入这个函数的车是一定需要等的for(int i=0; i<=drive_in_count; i++){if (record[i].mode=='A') ++count_of_wait;//遇到一个A那就等吧else if (record[i].mode=='D') --count_of_wait;//遇到一个D就--}//这里的count_of_wait一定会大于0for(int i=drive_in_count;i<drive_out_count;i++){if (record[i].mode=='D') --count_of_wait;if (count_of_wait==0)   return record[i].time;//当count_of_wait==0的时候,不等了,进去,返回该车进入停车场的时间}return -1;
}
void ModeDriveIn(int count_drive_in)
{//进入的话,那就做两件事就好了,判断一下能不能停下来int result= Judge(count_drive_in);//这里用的是第一个Judge函数if ( result != -1 )printf("car#%d in parking space #%d\n", record[count_drive_in].car_number, result);elseprintf("car#%d waiting\n",record[count_drive_in].car_number);
}
void ModeDriveOut(int count_drive_out)
{//这个函数需要做的就比较多了int result=0,count_drive_in;for(count_drive_in=0; count_drive_in < count_drive_out; count_drive_in++){if (record[count_drive_in].car_number == record[count_drive_out].car_number && record[count_drive_in].mode == 'A' )//找到该车进入的那条记录{result = Judge(count_drive_in);//并且判断当时他有没有等待break;//跳出循环}}int time=0;if (result!=-1)    time = record[count_drive_out].time - record[count_drive_in].time;//如果可以停下,那么停车的车时间就是出去的时间减去-进入的时间else time=record[count_drive_out].time-CalcaluateDriveInTime(count_drive_out, count_drive_in);//如果当时需要等待,那么就调用那个计算时间的函数来计算该车辆真正停入停车场的时间printf("car#%d out,parking time %d\n",record[count_drive_out].car_number,time);/** 下面的这个代码逻辑竟然花了我一个多小时,主要是当时忽略了一个事情,就是题目还要求当有车辆* 出来的时候,还有输出(假如有车辆在外部排队的话)后面排队的第一辆车*/int park= Judge(count_drive_in,count_drive_out);//这个函数在上面已经讲解过了,自己体会一下if (park!=-1) printf("car#%d in parking space #%d\n",record[park].car_number,kmax_car);//根据返回值,如果返回-1 说明后面没有需要排队的车,那就不执行任何操作了
}

7-3 值班安排 (50 分)

医院有A、B、C、D、E、F、G 7位大夫,在一星期内(星期一至星期天)每人要轮流值班一天,如果已知: (1)A大夫比C大夫晚1天值班; (2)D大夫比E大夫晚1天值班; (3)E大夫比B大夫早2天值班 (4)B大夫比G大夫早4天值班; (5)F大夫比B大夫晚1天值班; (6)F大夫比C大夫早1天值班; (7)F大夫星期四值班。 就可以确定周一至周日的值班人员分别为:E、D、B、F、C、A、G。 编写程序,根据输入的条件,输出星期一至星期天的值班人员。

输入格式:

先输入一个整数n,再输入n组条件,要求能够根据输入的条件确定唯一的值班表,且输入的n组条件中能够直接或间接得到任意两位大夫的关联关系,例如上面的条件(2)直接显示了D与E间的关系,而通过条件(1)、(6)、(5)可以间接得到A与B的关系。 条件的输入格式有2种: 格式1:编号 比较运算符 编号 天数 其中比较运算符有2种:> 或 < ,分别表示“早”或“晚” 例如:A<C1 表示:A大夫比C大夫晚1天值班 格式2:编号 = 数值 例如:F=4 表示:F大夫在星期四值班

输出格式:

输出周一至周日的值班序列。

输入样例:

7
A<C1
D<E1
E>B2
B>G4
F<B1
F>C1
F=4

输出样例:

EDBFCAG

解题思路

代码

实在想不出来了

7-4 完美的代价 (40 分)

回文串是一种特殊的字符串,它从左往右读和从右往左读是一样的,有人认为回文串是一种完美的字符串。现在给你一个字符串,它不一定是回文的,请你计算最少的交换次数使得该字符串变成一个回文串。这里的交换指将字符串中两个相邻的字符互换位置。 例如所给的字符串为”mamad”,第一次交换a和d,得到”mamda”,第二次交换m和d,得到”madma”;第三次交换最后面的m和a,得到”madam”。

输入格式:

第一行是一个整数N(N <= 80),表示所给字符串的长度,第二行是所给的字符串,长度为N且只包含小写英文字母。

输出格式:

如果所给字符串能经过若干次交换变成回文串,则输出所需的最少交换次数;否则,输出Impossible。

输入样例:

5
mamad

输出样例:

3

解题思路

一个字符串可以构成回文串(可以不以回文串的形式排列)的条件是最多只有一种字符的数量是奇数个

下面的代码主要思路就是先判断一下是否可以构成回文串,然后如果构成课回文串那就看有没有数量是奇数的字符,如果有的话。。。。。

代码

#include<cstdio>
#include<cstring>
using namespace std;
int len=0,result=0;
char input[100];
//len记录元素的个数,方便各个函数访问,定义为全局变量
//result记录需要移动的次数,方便各个函数访问定义全局变量
int  Judge();
//根据返回的个数为奇数的元素的个数来判断
void ChangePosition(int begin,int end);
void Operation();
int main()
{scanf("%s",input);len=strlen(input);int odd_element= Judge();if (odd_element==0||odd_element==1) Operation();else printf("Impossible\n");return 0;
}
int  Judge()
{//根据返回的个数为奇数的元素的个数来判断int map[129]={0},odd=0;char target;for(int i=0;i<len;i++)map[input[i]]++;for(int i=97;i<=122;i++){if (map[i]&1){++odd;target=i;}}int mid=len/2;if (odd==1&&input[mid]!=target)//如果含有一种字符是奇数个就把那个字符中的里中间最近的移到中间来{for(int i=mid+1,j=mid-1;i<len&&j>=0;i++,j--){if (input[i]==target)   { ChangePosition(mid,i); break;}// i 去搜寻右半部分if (input[j]==target)   { ChangePosition(j,mid); break;}// j 去搜寻左半部分}}return odd;
}void ChangePosition(int begin,int end)
{printf("%d %d\n",begin,end);result+=(end-begin);//从begin到end相邻的位置交换了end-begin次char save=input[end];for(int i=end;i>begin;i--)input[i]=input[i-1];input[begin]=save;printf("change==%s\n",input);
}
void Operation()
{int mid=len/2-1;//下标int j=0;if (len&1) j=2;else j=1;for(int i=mid;i>=0;i--,j++){if (input[i]!=input[mid+j]){for(int k=mid+j,q=i-1;k<len&&q>=0;k++,q--){if (input[k]==input[i])ChangePosition(mid+j,k);if (input[q]==input[i])ChangePosition(q,mid+j);}}}printf("%d\n",result);
}

C程序综合训练随堂考试(2021年5月27日)相关推荐

  1. 2021年4月27日 华为Cloud AI 通用软件开发实习面试(一面)

    title: 2021年4月27日 华为Cloud AI 通用软件开发实习面试(一面) tags: 面经 2021年4月27日 华为Cloud AI 通用软件开发实习面试(一面) 自我介绍(这个地方由 ...

  2. 2021年6月27日 root Redmi Note 8

    仅供学习使用,请勿用于商业或违法用途,否则产生的一切后果由使用者自负. root Redmi Note 8 解锁BootLoader 2021年6月26日晚,账号与设备绑定时间已超过一周,可以解锁Bo ...

  3. 2021年7月火影几点服务器维护完,火影忍者手游2021年5月27日更新公告

    在火影忍者手游中2021年5月27日更新了哪些有趣的内容呢?2021年5月27日更新情况又是什么呢?想了解的话,下面就来看一下吧! 火影忍者手游2021年5月27日更新公告 新版本将干5月27日00: ...

  4. 绝地求生服务器维护5.27,绝地求生1月27日更新内容 绝地求生2021年1月27日正式服维护公告...

    绝地求生1月27日更新了什么?绝地求生在2021年1月27日对正式服进行维护,本次维护会优化服务器以及修复BUG,想知道修复了哪些bug的玩家,下面小编带来了绝地求生2021年1月27日正式服维护公告 ...

  5. 自学计算机6个月总结——不完全学习路线分享(2021年2月27日修正)

    目录 前言 Java篇 我的学习路 主线1 主线2 2021年2月27修正 前言 本硕机械,目前研二在读,逻辑思维并不是很强,计算机基础差.本科期间总觉着计算机很难(也许是老师讲得不好,自己也的确没有 ...

  6. 2021年12月27日|28日|29日|30日|31日|

    2021年12月第五周学习周记 二叉树 二叉树节点结构: class Node <V>{V value;Node left;Node right; } 当可以通过左树和右树获得信息来解决问 ...

  7. 2021年8月27日10点29分 常见漏洞

    CSRF客户端请求伪造 CSRF(Cross Site Request Forgery) 是一种挟制终端用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法. 漏洞原因:简单的身份验证只能保证 ...

  8. 2021年2月27日

    变量就是值可以发生变化 变量最好是见名知意 规则 变量名可以是 数字,字母,下划线,但是数字不能作为开头 变量名中间不能出现空格和点符号(小数点) 变量名可以用中文(python3支持),但是不要用中 ...

  9. 2021年12月27日多载波NOMA论文阅读

    <A Survey on Non-Orthogonal Multiple Access for 5G Networks: Research Challenges and Future Trend ...

最新文章

  1. OpenGL ES着色器语言之语句和结构体(官方文档第六章)内建变量(官方文档第七、八章)...
  2. OData元数据在浏览器里以Feed视图显示的解决办法
  3. python如何读二进制文件_python怎么读二进制文件
  4. java 设置控制台标题_修改Tomcat控制台标题以及标题乱码处理
  5. 漫步数学分析番外六(上)
  6. 《FusionCharts学习及使用笔记》之 第一篇
  7. nginx基础概念(100%)之connection
  8. 新东方年会节目员工吐槽公司问题 俞敏洪:奖励12万
  9. nginx日志采集 mysql_shell + go + mysql nginx日志统计 (三) :数据的展示
  10. 利用js实现文件上传
  11. 杨玲 徐思 《面向对象程序设计(java)》第十一周学习总结
  12. c语言lr分析器的设计与实现_ShinyJson实践之路:词法分析器的设计与实现
  13. 漫画|望京和西二旗全解读:最美互联网人
  14. ubuntu22 使用todesk被远程控制时显示黑屏或者白屏
  15. KSO-c#中 event事件的简单使用
  16. 分析PNG图片格式——数据块
  17. 量化交易之数据获取篇
  18. 服务器存放代码的位置在哪里,云服务器代码放在哪里
  19. 微服务项目之电商--19.ElasticSearch基本、高级查询和 过滤、结果过滤、 排序和聚合aggregations
  20. php 上标,html页面如何显示上标和下标

热门文章

  1. ES面试问题和入门资料
  2. 无界函数的极限审敛法
  3. 推荐一个学习SQL的好网站
  4. 层次模型,网状模型,关系模型
  5. python基础-BytesIO,StringIO
  6. html5 游戏制作教程,【整理】一步一步学做HTML5游戏教程
  7. wireshark使用及过滤器介绍
  8. 人工智能会破灭嘛?听听福布斯邀请的这50位大拿怎么说
  9. 视频压缩怎么弄?建议收藏这些方法
  10. Teacher's pet理解成“老师的宠物”?其实并不是。。。