目录

一、简单介绍三种循环语句及使用时的注意事项(已学会的可跳过)

1、do语句

2、while语句

3、for语句

4、补充说明

二、打印图案的共性发现

三、循环打印直角三角形

四、另类思路打印其他图案

五、上下对称图形(“K”,菱形,漏斗)

1、菱形

2、“K”型图案

3、沙漏

六、总结


当我们进入循环语句的学习后,免不了遇见打印各种图案的题目。星号三角形,平行四边形,符号金字塔,沙漏......发现图案表面的规律并不困难,但其中隐藏的联系与如何用代码去实现,却会让很多不能灵活运用循环语句的同学难以下手。这周就请和笔者一起,以清晰的思路,由易到难,深入浅出地探究循环打印图案的奥秘。

一、简单介绍三种循环语句及使用时的注意事项(已学会的可跳过)

我们以一个“请分行打印5次‘1024快乐!祝你永不脱发!’”的任务来引出它们。

1、do语句

#include<stdio.h>
int main()
{int count = 0;do{printf("1024快乐!祝你永不脱发!\n");count++;          //设了一个从0开始,每循环一次加1的计数器。} while (count != 5); //do语句里也是包含一个while语句作为循环判断条件的。return 0;
}​

do语句的特点是“先试试再看”,即先执行再判断,所以无论满不满足while中的条件,它都至少执行一次。另外,注意while()后要跟一个分号“;”,有些同学学完while语句之后容易与此混淆。

2、while语句

#include<stdio.h>int main()
{int count = 0;while (count != 5){printf("1024快乐!祝你永不脱发\n");count++;}return 0;
}

while语句的特点是“先看再试试”,即先判断再执行,如果不满足()里的条件,语句是不执行的。且()后面是不接分号“;”的(其实写判断条件的括号后面,似乎只有do语句里的while()后接分号,其他都不接)

3、for语句

#include<stdio.h>
int main()
{for (int i = 0; i < 5; i++)//或者for(i=1;i<=5;i++)也行{printf("1024快乐!祝你永不脱发!\n");}return 0;
}

for语句是今天的主角,我们待会打印图案最常用到的就是它。我们需要注意一下它的执行顺序。

先执行一次①,对②进行判断是否满足,如果满足,则执行③并最后执行④,一轮循环完成,①不再执行重新判断②,再③④③④③④......

4、补充说明

对比while和for语句,我们会发现二者都是先判断再执行,即两者其实是可以互换的,能用for写的程序就一定能用while写,反之亦然。但就像选择分支结构里的if语句和swtich语句一样,不同的情况选择性的使用,是能够让你的程序更加简洁易懂的。

用循环打印图案,我们不可避免的需要用到多重循环,且清楚循环次数,那时用for循环写出的程序,可读性将明显更高。(具体我们后面再说,此处按下不表)但当我们不清楚一个程序到底需要循环几次,只知道不满足某种条件才会停止时,用for写就要用到“if&break”来跳出循环。而循环次数小时,while语句的优势又体现出来,不满足(……)便不执行,免去了再写break。

总之,二者虽可以替换,但存在不同,在我们能灵活运用之后,是可以轻松找到最优解的。

二、打印图案的共性发现

我们先来看一道不用循环写的简单题吧——打印一个小飞机。

https://www.nowcoder.com/practice/5cd9598f28f74521805d2069ce4a108a?tpId=107&&tqId=33287&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-rankinghttps://www.nowcoder.com/practice/5cd9598f28f74521805d2069ce4a108a?tpId=107&&tqId=33287&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-rankinghttps://www.nowcoder.com/practice/5cd9598f28f74521805d2069ce4a108a?tpId=107&&tqId=33287&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking(题目来自牛客网,绿色无毒,可放心点开)

对于这道题,相信只要是一个学过输出“hello world!”,知道换行符的新手,就能轻松打印。

#include<stdio.h>
int main()
{printf("     **\n");printf("     **\n");printf("************\n");printf("************\n");printf("    *  *\n");printf("    *  *\n");return 0;
}

一行一行输出,开头两行先按5次空格,再打两个星号,换行…………

也许你会疑问,这道题与循环打印有什么联系呢?(强行)问得好!(.doge)共性尽在其中,可以发现,打印是一行行打印,都是从空格开始,再符号(*),最后换行,结束一行的打印。包括中间两行,也可以理解为先打印了0个空格,再打印了一排星号,再换行。

顺序:空格、符号、换行

记住了吗?下面我们正式进入循环打印图案!

三、循环打印直角三角形

1、先来个最简单的吧!

我们先找到该图案的一些特征,一共5层,第一层从1个星号开始,后面的每一层比前一层多一个星号。那通过程序如何实现呢?

#include<stdio.h>
int main()
{int i, j, n;scanf("%d", &n);//输入层数。for (i = 1; i <= n; i++)  //该循环控制每打印完一行后的换行操作,并给打印星号提供参照。{for(j=1;j<=i;j++)  //该循环控制一行打印多少个星号。printf("*");printf("\n");}return 0;
}

外面的for循环从i=1开始共循环n次来打印“\n”换行,“i”表示的是当前正在操作的层数。这里显而易见的是输入的层数==换行的次数。里头“j”控制打印星号,每循环一次打印一个星号,但它的循环次数是随着“i”来变的,这就关联了我们发现的“后面一层比前一层多一颗星”的“i与j”的关系。

这里有的同学也许要问,我们用循环打印了符号和换行,那空格呢?别急,这题还只是最简单的打印三角形,但我们也可以理解成每一行空格的规律是不变的,都打印了0个空格,打印0个自然无需额外写咯。

2、再来个需要打印空格的吧。

我们再来寻找特征,空格在第一行打印0个,接着是1个,2个,递增至4,星号在第一行打印5个,接着是4个,3个,递减至1。而换行次数仍和层数一样。

代码实现:

#include<stdio.h>
int main()
{int i, j, z, n;scanf("%d", &n);for (z = 1; z <= n; z++)  //控制换行次数,并关联i,j控制的打印,z为当前操作的层数。{for (i = 1; i < z; i++)  //控制打印空格。printf(" ");for (j=5;j>=z;j--)  //控制打印星号。printf("*");printf("\n");}return 0;
}

还记得我们开始发现的共性吗?空格、星号、换行。在z的循环里面,我们就分别进行了按顺序打印的操作。一个for(z)里嵌套了两个并列的for(i),for(j)。当这一行的空格星号都分别打印完后,\n换行。

这里再对还不熟悉for循环的同学多解释几句,也许从单个循环看到两重循环的你,会有点懵。注意啦,循环里面的循环,它还是个循环。也就是说,关于“i”的循环要循环完后,再执行下一个“j”的循环,而“j”的循环结束并\n后,此时注意它们都在z的循环里,所以执行“z++”语句,然后判断z<=n?,如果成立,又是i的循环,j的循环……继续下去。而且我们发现,每来到下一个z的循环,里头的i,j的循环次数都有所改变,即关联到我们前面发现的特征:空格递增,星号递减,都与层数有关。

多说一句,其实同样的思路,每个人的程序可以是不同的。这次我们写“j”的循环是让j先等于5,然后每次进行j--的递减运算。其实也可以通过n(总层数)与z(当前层数)的关系,写出j++递增的程序,这都大同小异,是没有错的。大家可以自己试一试,多动手多写程序,我们才能掌握得更好。

到这里,相信你对于打印直角三角形,包括另外两种直角在左下,右上的,都应该没问题的了吧?大家一定要自己多试试,代码打得越多,能力才能不断地得到提升。

四、另类思路打印其他图案

我们再来试着打印一条简单的斜线。

根据之前的思路,我们找到特征,每行只有一个星号——无需for循环打印,当第一行星号前空格为0,第二行为1,依层递增。

#include<stdio.h>
int main()
{int i, j;for (i = 0; i < 5; i++) //控制行数{for (j = 0; j < i; j++)//控制空格printf(" ");   printf("*\n"); //每一行都是打印完一个星号后换行}return 0;
}

这对于我们来说,已经十分简单了对吧。那么进一步思考,之前的思路是先敲空格->星号->换行,除\n外,其他两个都是找到其本身与层数的关系进行打印。那么,我们是不是可以猜测空格和星号之间也有关系呢?

对于这道题,也许笔者这样表述会显得比较难懂,那再换个说法,控制打印的“i”跟“j”是不是有关系呢?

观察能力强的同学也许发现了,图中每一次打空格的地方,i的值正好等于j。这时,我们可以换一个全新的角度去理解i,j。我们将i看成是控制列(竖行),j是控制排(横行),i,j看成一个原点在左上,x轴指向正方向,y轴指向负方向的平面直角坐标系。当i=j时,打印星号,否则打印空格。

那么对于这种思路,用代码怎样去实现呢?注意“当i=j时”、“否则”,我们应该很容易想到这里应该有一个if-else的选择判断语句,再者,在哪里换行呢?我们此时要注意到,for循环遍历i,j的顺序,当i控制一列时,j控制的这一排是一个个位置进行判断是否满足“i==j”的,所以只有当一行的所有位置都判断完之后才能进行换行操作。所以,我们将换行语句放在和for(j)并列的位置就好啦。

具体实现:

#include<stdio.h>
int main()
{int i, j;for (i = 0; i < 5; i++){for (j = 0; j < 5; j++){if (i == j)//选择语句判断是否打印星号printf("*");elseprintf(" ");}printf("\n");//与控制横行的j的循环并列,当一行的j循环完,再\n。}return 0;
}

有的同学也许会问,这和上面这种做法不是差不多嘛?也没有优化多少呀?

那我们来看看这种图案,用前一种方法还好打印吗?

显然,我们空格、星号、换行的思路已经没办法完整打印了,每一行单抽出来都是空格+星号+空格+星号+换行。但用新思路,其实这就是在上一题正斜线的基础上加了一道反斜线。那么反斜线中横纵坐标的规律是什么呢?

单独拎出一条反斜线来,也是一行一个星号,星号个数等于图案行数,其实也同时等于图案列数

这时我们将注意力放在右上角星号上,以前面我们理解的直角坐标系去标出它的坐标——(6,0)(注:左上角星号坐标看成(0,0))。出现了,i(0)+j(6)==n(总层数,7)-1

此时规律已出,我们只需在上一题程序的基础上添上一个判断条件就行了。

具体实现:

#include<stdio.h>
int main()
{int i, j;for (i = 0; i < 7; i++){for (j = 0; j < 7; j++){if ((i == j)||(i+j==7-1))printf("*");elseprintf(" ");}printf("\n");}return 0;
}

探究到这里,我们停下来小结一下,打印图案的重点是什么?顺序?错,是规律!无论是方法一还是方法二,对于不同的图案它们的顺序都是固定的,方法一是按照空格、符号、换行的顺序,方法二是按照行列的顺序。而规律却是每个图案所不同的。设计程序前,我们应该先沉住气,仔细地寻找其中隐藏的规律或特征,磨刀不误砍柴工,找到的规律越具有普适性,你的程序就越简洁可观

五、上下对称图形(“K”,菱形,漏斗)

上下对称类的图案,典型的如漏斗(上下宽,中间宽)、菱形(上下宽,中间窄),不难想到,其实可以将它们分成上下两部分来分析,而且因为对称,上下的规律特征其实是有相似之处的。

在探究它们之前,我们先来打印一个小小的金字塔。

星号的规律显而易见,第一层是1个,往下依次加2个,是奇数的等差数列,与层数的关系为2*z-1(设n为当前层数),那空格呢?第一行星号前的空格数为3,第二行为2,往下每次递减1,联系总层数为4,关系为4-z。可以用空格、星号、换行顺序打印的办法解决。

程序如下:

#include<stdio.h>
int main()
{int i, j, z;for (z = 1; z <= 4; z++){for (i = 4 - z; i > 0; i--)printf(" ");for (j = 0; j < 2 * z - 1; j++)printf("*");printf("\n");}return 0;
}

金字塔图形是实心的,并不是很好以“坐标系”的方法来做,或者说空格、星号各自与层数之间的规律在这里更加显而易见,所以我们采取老方法。

1、菱形

菱形上下一拆,其实就是两个金字塔,只不过一个正一个反。但是这里有个疑问,如果拆开,中间这行归谁?其实我们完全可以都不归谁,单独打印中间行,这样上下不就彻底“平分”了吗?可还有一点有些同学容易忽视,即上三行和下三行并不是紧靠左边缘的,只有中间行第一个星号才紧靠,这就需要我们在控制空格时,上下三行的每行都多空一格,换句话说就是,都比单纯的金字塔要右移一格。

说到这,我们看看代码:

#include<stdio.h>
int main()
{int i, j, z;for (z = 1; z <= 3; z++)  //根据对称,我们取上半部分层数为3{for (i = 4 - z; i > 0; i--)  //注意是4-z,实际是3-z+1,上半部分因为中间层整体右移了一格。printf(" ");for (j = 0; j < 2*z-1; j++)//规律同金字塔。printf("*");printf("\n");}for (z = 1; z <= 7; z++)//打印中间层的星号printf("*");printf("\n");for (z = 3; z >= 1; z--)//下半层与上半层为对称关系,增减规律倒置,因为i、j都与z有关,所以z变,i、j全变。{for (i = 4 - z; i > 0; i--)//同理右移一格。printf(" ");for (j = 0; j < 2 * z - 1; j++)printf("*");printf("\n");}return 0;
}

程序看起来复杂,其实拆开来都是我们前面一起学过的内容,不过是打印金字塔的组合体而已。希望大家能好好体会上下对称特征在程序中体现的巧妙。抛开中间单独打印的一行,我们打印的上三行和下三行其实仅仅改动了z的变化,注意思考“相似之处”和“相同之处”

2、“K”型图案

https://www.nowcoder.com/practice/753cc2662d9949fe826a85f815db0ca4?tpId=107&&tqId=33345&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-rankinghttps://www.nowcoder.com/practice/753cc2662d9949fe826a85f815db0ca4?tpId=107&&tqId=33345&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-rankinghttps://www.nowcoder.com/practice/753cc2662d9949fe826a85f815db0ca4?tpId=107&&tqId=33345&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking

这也是一道来自牛客的题目

我们根据对称打印的思路,先将上下分开,分别打印,中间单独打印一个星号。发现上半部分是一个直角在左上的三角形,下半直角在左下。(因为都不要中间的星号,它们显得有一点不完整,但相信没有什么能够难倒程序员的你)

我们还可以发现,这题不需要单独控制打印空格,只需要控制星号和换行。如示例1,输入的2,我们看成是上下半部分的行数n,那么对于上半部分,第一行为n+2-z个星号(z为当前行数),为什么不写成z+2呢?注意z为当前行数,而星号的数量是逐行递减的,z+2到下一行就不符合了,而n+2-z却普适。下半部分同理分析,程序如下:

#include<stdio.h>
int main()
{int i, j, z;int n;scanf("%d", &n);for (z = 1; z <= n; z++)//上半部分{for (i = 1; i <= n + 2 - z; i++)printf("* ");//注意图案里,每打一个星号空一格,我们将星号空格捆绑看待成一个星号就好。这样打出的图案美观不拥挤,也符合题意printf("\n");}printf("*\n");//单独打印中间的星号并换行for (z = n; z >= 1; z--)//下半部分,只有z微微变动{for (i = 1; i <= n + 2 - z; i++)printf("* ");printf("\n");}return 0;
}

这样,当我们输入2代表上下半部分的行数时,编译运行出的小黑框里就会出现示例1的图案了

这样对了吗?

错!再看一遍题目——多组输入

什么叫多组输入?我们所写的一个scanf只能测试一个数据,比如输入2,小黑框里就只会打印出2对应的图案,当你要测试另一个数据时,就不得不重新编译运行。多组输入就是一次编译可以输入多组数据,在一个黑框里打印多个对应的图案。

那怎样实现多组输入?用多个scanf?对了!又没完全对。这时反应快的能想到什么?

利用循环进行输入呀!

while(scanf(“%d”,&n))套在刚才程序的最外面,是不是就能每输入一个数,就进入循环打印图案,再输入一个数,再进入循环了?

这样思路是没有错的,但不熟悉循环语句的同学又容易忽视一个问题,不论是do语句中的while(),while语句中的(),和for(:②:)都是一个判断语句,而while(scanf("%d",&n))里的只是个普通的输入语句,当我们这样书写,程序会无休止地让你输入,虽然能够打印图案,但是却变成了一个死循环,题目中提交也就会提示你运行超时。

那我们该怎样将其改成一个判断语句呢?请记好:

while(~scanf("%d",&n))
或
while(scanf("%d",&n)!=EOF)

两者的意思一样,这在要求我们多组输入的任何题目中都是必不可少的。

这里笔者解释第二种最习惯使用的,EOF即End of fire,文件的末尾,即识别你是否输入完。如果没有(!=EOF),则继续输入,如果输入完,则结束。

那么如果告诉计算机我输入完了呢?这里笔者先给出改动后符合题意的正确程序:

#include<stdio.h>
int main()
{int i, j, z;int n;while (scanf("%d", &n) != EOF){for (z = 1; z <= n; z++){for (i = 1; i <= n + 2 - z; i++)printf("* ");printf("\n");}printf("*\n");for (z = n; z >= 1; z--){for (i = 1; i <= n + 2 - z; i++)printf("* ");printf("\n");}}return 0;
}

再展示一下运行结果:

  现在解释一下,Windows中,默认组合键Ctrl+Z就是EOF的意思,当我们按下Ctrl+Z和回车,就相当于将EOF输入进去了,而联系我们while后面的判断条件,输入的EOF不满足(!=EOF),所以终止输入,跳出循环。(注意,笔者实验发现,VS2019需要连续敲Ctrl+Z+Enter三次才能终止输入,这点其他编译器似乎更优...下为2019运行结果)

3、沙漏

“K”型,菱形我们都搞定了,只剩下沙漏了。下面我们来打印一个字符型沙漏

前面我们打印的都是星号组成的图案,这次要求输入一个字符( ?),并用该字符打印沙漏,我们该怎么做呢?

这题就不再分析规律了,大家自己试着敲出代码,打出图案。自己尝试之后再看笔者给出的。

#include<stdio.h>
int main()
{int i, j, z;char ch;scanf(" %c", &ch);//如果你输入“?”,运行图案错误,注意你输入的是否是英文问号。for (z = 1; z <= 2; z++){for (i = 1; i < z; i++)printf(" ");for (j = 1; j <= 2 * (2 + 1 - z) + 1; j++)//2*(上半部分总行数-当前层数)+1,找关系总要往等差数列上想。printf("%c",ch);printf("\n");}for (i = 1; i <= 5 / 2; i++)//这里需要注意中间层的符号也在列的最中间,想想如何控制空格个数。(5/2==2)printf(" ");printf("%c\n", ch);for (z = 2; z >= 1; z--){for (i = 1; i < z; i++)printf(" ");for (j = 1; j <= 2 * (2 + 1 - z) + 1; j++)printf("%c", ch);printf("\n");}return 0;
}

再多一句嘴,细心的同学也许会发现,笔者的代码里scanf里%c前面加了一个空格。对于这题这个空格是可有可无的,但是在有些多组输入的题目里,要你输入多个字符时,这一个空格就会派上大用场。这涉及到字符与字符串的输入,我们这次按下不表,笔者会在后面的博客里详细说明。

六、总结

说到这里,相信大家对用循环打印各种图案已经毫不陌生了,能通过观察发现图案中的规律,并用代码进一步实现。我们来总结一下:

1、分辨do语句中的while部分和while语句的不同,do语句中的while()后要加分号。

2、打印图案的基本思路是利用双重循环,一个控制换行与层数的for循环里面嵌两个并列着的for(控制打印空格)于 for(控制打印字符)。

3、仔细观察,找出图案中最具有普适性的规律,对于有些图案,我们可以换视角想问题,把它放在直角坐标系中去打印,相应代码里,在for循环中加入if-else选择语句可实现。

4、对于上下对称图案,第一步还是找规律,分开上下两部分打印,中间层单独打印,瞄准上下两层的“相似之处”和“相同之处”,熟练的你甚至可以在其中大胆复制粘贴,一遍AC。

5、多组输入时的~scanf与!=EOF的意义,算是一个做题小技巧。

6、打印字符图案时,要求输入字符需使用%c,%c前加空格在有时会派上大用场。

七、隐藏(无目录)思考题(.doge)

看到这个和善的笑,你一定能猜到笔者为你准备了一个好东西。

学有余力的同学可以试试下面这道《终极·沙漏》

PTA | 程序设计类实验辅助教学平台

一道来自PTA的打印图案题,笔者将在下周专更一期来和大家分析这题的思路。

感谢你能看到这里,希望你有所收获,祝好!

PS:上一篇博客超级惊喜地收获了200多个粉丝!!开心坏了!!谢谢大家的关注。我写博客是一是想记录一下自己的学习经历,二来将自己认为有用的,值得注意的知识分享给大家,本身也是一份不小的快乐。三来多写写,自己的思路和对知识的理解也会更加清晰深刻吧。真的真的非常感谢能够读完博客的你们,给了我莫大的鼓励!

立下flag,要坚持周更!

用心记录,不懈向上。我们下周见!

清晰思路带你掌握如何运用循环打印各种图案(新手向)相关推荐

  1. javafor循环打印图案_C程序使用循环打印盒子图案

    javafor循环打印图案 Input a number and print the following box pattern in C language, 输入数字并以C语言打印以下框形 , 4 ...

  2. js 停顿一秒_JS实用的带停顿的逐行文本循环滚动效果实例

    如下所示: JS实用的带停顿的逐行文本循环滚动效果 #scrollBox2{font-size:12px;width:260px;color:#646464;line-height:22px;heig ...

  3. java演练 循环嵌套 菱形图案的打印 四个阶段完成输出

    java演练 循环嵌套 菱形图案的打印 阶段一,视频 https://www.ixigua.com/6870331861256634894/ 阶段一,数据分析 阶段二,视频 http://mp.tou ...

  4. Java for循环打印菱形

    Java for循环打印菱形 Java代码输出菱形的方法和思路有很多,在此分享一个稍带模块化拆分思想的解决方案,将需要输出的菱形拆分成8个模块(如下图),每个模块独立实现输出. 优点:8个模块之间耦合 ...

  5. 2、Java——for循环打印九九乘法口诀表

    1.效果展示  2.代码展示 由于最近学习了java语言的for循环,今天在复习巩固知识,练习代码的时候,简单的总结了三种for循环打印九九乘法口诀的方法,加深了自己的理解.现将代码分享给各位博友 因 ...

  6. Java使用多重for循环打印实心三角形,倒立三角形以及空心菱形

    Java使用多重for循环打印实心三角形,倒立三角形以及空心菱形 使用双重for循环打印倒立三角形和菱形算是在循环嵌套里面,自我感觉比较难的第一个程序 这是本次要打印的目标: 打印上图实心三角形思路如 ...

  7. java两个线程循环打印_java循环打印 多线程

    问题描述 Java多线程,循环打印"我是多线程"10次. 思路: 1 开启5个线程 "我" "是" "多" " ...

  8. C语言实现上三角蛇形矩阵不用数组,C/C++编程笔记:C++ 嵌套循环,含循环打印及蛇形矩阵实例...

    也称为多循环,在一个循环中嵌套使用一个或多个循环. 嵌套循环的基本结构就是在一个循环中,循环体包含了另一个循环的情况.下面我用几个嵌套循环的例子来深入理解嵌套循环. 循环图案打印 分别打印下面三种图案 ...

  9. Java代码实现用for循环打印斐波那契数列前20项

    /*** 需求:编写代码按照要求实现以下的功能 * 用for循环打印 1 1 2 3 5 8 13 ...(斐波那契数列前20项)* 要点提取:斐波那契数列规律:第三个数起,是前两个数之和* 思路分析 ...

最新文章

  1. c++类例子之类中有类
  2. 15套漂亮的 PSD 格式的图标,不一样的视觉效果
  3. s := time.Now().Format(20060102) go格式化
  4. oracle12154错误 Linux,关于“EXP-00056: ORACLE error 12154 encountered”的解决方法
  5. 详解队列在前端的应用,深剖JS中的事件循环Eventloop,再了解微任务和宏任务
  6. java获取界面输入数字_通过JAVA设计 GUI 界面的计算器程序,用户可以通过鼠标依次输入参加计算的数值,进行加、减、乘、...
  7. Nature Communications | 白凡研究组揭示结直肠癌近端淋巴结与远端器官的转移路径...
  8. 个人财务管理系统,Excel记账表格分享
  9. cs python_python_13(前端—cs)
  10. ios模拟器安装证书
  11. 数据结构与算法教程目录
  12. IP和子网掩码和网关的关系
  13. 特征图注意力_深入理解图注意力机制
  14. 【postgresql】数据聚合之PERCENTILE_CONT
  15. queue容器常用接口
  16. 职场技巧:如何跟老板谈涨工资?
  17. 温度传感器php,温度传感器基础知识
  18. RIL.java【2】
  19. RAAVPPSPSLSRHSSPHQSEDEEE
  20. 计算机wps基础知识试题,计算机一级考试《WPS》精选练习题

热门文章

  1. 【Linux基础】Linux中的时区和时间
  2. 扫描线(scanning line)是什么?(水平清晰度)(电视行(TVLine))(隔行扫描、逐行扫描)
  3. 测试工程师mysql数据库基础操作之DQL 数据查询篇
  4. Oracle VirtualBox备份、恢复虚拟机
  5. eclipse Job
  6. uniapp隐藏原生导航栏
  7. mht文件无法打开的解决办法
  8. 虚拟运行ur5时,出现的问题
  9. 一个技术创业者的自白:你为什么想创业?
  10. 解读青岛城市规划建设:5年内再添40座山头公园