当前位置: 首页 > news >正文

C语言练习 | 初学者经典练习汇(2)

目录

1、编写一个程序从1到100中,所有出现9的个数

2、分数求和

3、10个整形数字中选出最大值

4、打印9*9的乘法口诀

5、字符串逆序

6、计算一个数的每位之和(递归实现)

7、递归实现n的K次方

8、写个冒泡排序,把一个整形数组变成升序。

9、二进制位移位

10、实现数组的逆序、初始化、打印

11、模拟实现strcpy函数

12、写一个函数Numberof1求出一个数二进制1的个数

13、求两个书的最大公倍数

14、将一句话的单词进行倒置,标点不倒置

15、设计一个程序判断是大端存储还是小端存储

16、由a组成前n项之和 - 不考虑溢出

17、使用指针打印数组内容

18、列出100000以内的水仙花数

19、写一个函数交换字符串的每个字符

20、用C语言在屏幕上输出以下图案


1、编写一个程序从1到100中,所有出现9的个数

int main()
{int i = 0;int count = 0;for(i=0; i<=100; i++){if(i%10 == 9){count++;}if(i/10 ==9){count++;}}printf("%d\n",count);return 0;
}

2、分数求和

        计算1/1-1/2+1/3-1/4+1/5...... + 1/99 - 1/100 的值,打印出结果

int main()
{int i = 0;double sum = 0.0;int flag = 1;for(i=1; i<=100; i++){sum += flag*1.0/i;flag = -flag;}printf("%lf\n",sum);return 0;
}

3、10个整形数字中选出最大值

int main()
{int arr[] = {1,2,3,4,5,6,7,8,9,10};int i = 0;int max = arr[0];for(i=1; i<10; i++){max = (max>arr[i]?max:arr[i]);}printf("%d\n",max);return 0;
}

4、打印9*9的乘法口诀

int main()
{int i = 0;int j = 0;for(i=1; i<=9; i++){for(j=1; j<=i; j++){printf("%d*%d=%-2d ",i,j,i*j);}printf("\n");}return 0;
}

5、字符串逆序

        编写一个函数reverse_string(char* string)
        实现:将参数字符串中的字符反向排列,不是逆序打印。
        要求:不能使用C函数库中的字符串操作函数

int my_strlen(char* str)
{int i = 0;int count = 0;while(str[i] != '\0'){str++;count++;}return count;
}
void reverse_string(char* arr)
{int left = 0;int right = my_strlen(arr)-1;int tmp = 0;while(left<right){tmp = arr[left];arr[left]=arr[right];arr[right]=tmp;right--;left++;}
}
int main()
{char arr[] = "abcdef";reverse_string(arr);printf("%s\n",arr);return 0;
}

6、计算一个数的每位之和(递归实现)

        题目内容:写一个递归函数Digitsum(n),输入一个非负整数,返回组成它的数字之和。
        例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19输入:1729,输出: 19

int DigiSum(int num)
{if(num>9){return num%10+DigiSum(num/10);}elsereturn num;
}
int main()
{int num = 1729;printf("%d\n",DigiSum(num));return 0;
}

7、递归实现n的K次方

        题目内容:
        编写一个函数实现n的K次方,使用递归实现。

double que(int n,int k)
{if(k == 0){return 1.0;}else if(k>0){return n*que(n,k-1);}elsereturn 1.0/(n*que(n,-k));
}
int main()
{int k = 0;int n = 0;scanf("%d %d",&n,&k);printf("%lf\n",que(n,k));return 0;
}

8、写个冒泡排序,把一个整形数组变成升序。

        要求:写一个函数bubble_sort为冒泡排序
        例如:arr[] = {9,8,7,6,5,4,3,2,1};变成:arr[] = {1,2,3,4,5,6,7,8,9};

void bubble_sort(int arr[],int sz)
{int i =0;//确定趟数for(i=0; i<sz-1; i++){int j = 0;for(j=0; j<sz-1-i; j++){if(arr[j] > arr[j+1]){int tmp = arr[j];arr[j] = arr[j+1];arr[j+1] = tmp;}}}
}
int main()
{int arr[] = {9,8,7,6,5,4,3,2,1};int sz = sizeof(arr)/sizeof(arr[0]);int  i = 0;bubble_sort(arr,sz);for(i=0; i<sz; i++){printf("%d ",arr[i]);}return 0;
}

         或者        

void bubble_sort(int arr[],int sz)
{int i =0;int flat = 1;//确定趟数for(i=0; i<sz-1; i++){int j = 0;for(j=0; j<sz-1-i; j++){if(arr[j] > arr[j+1]){int tmp = arr[j];arr[j] = arr[j+1];arr[j+1] = tmp;flat = 0;}}if(flat == 1){break;}}
}
int main()
{int arr[] = {9,8,7,6,5,4,3,2,1};int sz = sizeof(arr)/sizeof(arr[0]);int  i = 0;bubble_sort(arr,sz);for(i=0; i<sz; i++){printf("%d ",arr[i]);}return 0;
}

9、二进制位移位

        要求:1.把a的二进制中的第5位置成1
                   2.把a的二进制中的第5位置成0

int main()
{int a = 13;//把a的二进制中的第5位置位1a = a | (1<<4);printf("%d\n",a);//把a的二进制中的第5位置位0a = a & ~(1<<4);printf("%d\n",a);return 0;
}

10、实现数组的逆序、初始化、打印

要求:数组{1,2,3,4,5,6,7,8,9}

  • 写一个函数完成数组的逆序;
  • 写一个函数打印数组的每一位元素
  • 写一个函数完成数组全为0
void reverse(int arr[],int sz)
{int left = 0;int right = sz - 1;while(left<right){int tmp = 0;tmp = arr[right];arr[right] = arr[left];arr[left] = tmp;left++;right--;}
}
void init(int arr[],int sz)
{int i = 0;for(i=0; i<sz; i++){arr[i] = 0;}
}
void print(int arr[],int sz)
{int i = 0;for(i=0; i<sz; i++){printf("%d ",arr[i]);}printf("\n");
}
int main()
{int arr[] = {1,2,3,4,5,6,7,8,9};int sz = sizeof(arr) / sizeof(arr[0]);reverse(arr,sz);print(arr,sz);init(arr,sz);print(arr,sz);return 0;
}

11、模拟实现strcpy函数

要求:

  • 写一个函数my_strcpy模拟实现strcpy函数
  • 例如:把arr1[] = "hello"拷贝到arr[20] = "xxxxxxxxx"中

 简单实现:

void my_strcpy(char* dest,char* src)
{while(*src != '\0'){*dest = *src;dest++;src++;}*dest = *src;
}
int main()
{char arr[20] = "xxxxxxxxxxxxxx";char arr2[] = "hello";my_strcpy(arr,arr2);printf("%s\n",arr);return 0;
}

通过改进为:

#include<assert.h>
void my_strcpy(char* dest,const char* src) //const修饰不会把src改掉
{assert(src != NULL); //断言,如果是NULL会有报错信息while(*dest++ = *src++) // 不仅可以实现把每个字符拷贝进去,而且还可以把‘\0’也拷贝过去{;}
}
int main()
{char arr[20] = "xxxxxxxxxxxxxx";char arr2[] = "hello";my_strcpy(arr,arr2);printf("%s\n",arr);return 0;
}

再改进:

#include<assert.h>
char* my_strcpy(char* dest,const char* src) //const修饰不会把src改掉
{assert(src != NULL); //断言,如果是NULL会有报错信息char* ret = dest;while(*dest++ = *src++) // 不仅可以实现把每个字符拷贝进去,而且还可以把‘\0’也拷贝过去{;}return ret;
}
int main()
{char arr[20] = "xxxxxxxxxxxxxx";char arr2[] = "hello";;printf("%s\n",my_strcpy(arr,arr2));return 0;
}

12、写一个函数Numberof1求出一个数二进制1的个数

int Numberof1(int n)
{int count = 0;while(n){if(n%2 == 1){count++;}n /= 2;}return count;
}
int main()
{int n = 15;printf("%d\n",Numberof1(n));return 0;
}

以上的代码没有办法求负数,改进后下面代码

int Numberof1(int n)
{int count = 0;int  i = 0;for(i=0; i<32; i++){if((n >> i) & 1 == 1){count++;}}return count;
}
int main()
{int n = -1;printf("%d\n",Numberof1(n));return 0;
}

13、求两个书的最大公倍数

要求:输入a和b,求出最大公倍数m

int main()
{int a = 0;int b = 0;scanf("%d %d",&a,&b);int m = a>b?a:b;while(1){if((m%a == 0) && (m%b == 0)){printf("%d\n",m);break;}else{m++;}}return 0;
}

14、将一句话的单词进行倒置,标点不倒置

要求:输入:I like beijing. 经过函数变为:beijing. like I

#include<string.h>
void reverse(char* left,char* right)
{while(left<right){char tmp = 0;tmp = *left;*left = *right;*right = tmp;left++;right--;}
}
int main()
{char arr[100] = {0};gets(arr);//三布翻转法int len = strlen(arr);reverse(arr,arr+len-1);  //先整体翻转//每个单词翻转char* start = arr;while(*start){char* end = start;while(*end != ' ' && *end !='\0'){end++;}reverse(start,end-1);if(*end == ' '){start = end + 1;}elsestart = end;}printf("%s\n",arr);return 0;
}

15、设计一个程序判断是大端存储还是小端存储

什么大端小端:

  • 大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;
  • 小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地址中。
int main()
{int a = 1;char* pa = (char*)&a;if(*pa == 1){printf("小端存储\n");}else{printf("大端存储\n");}return 0;
}

或者写成一个函数

int check_sys()
{int a = 1;char* pa = (char*)&a;return *pa;//返回1表示小端,返回0表示大端
}
int main()
{int ret = check_sys();if(ret == 1){printf("小端存储\n");}else{printf("大端存储\n");}return 0;
}

16、由a组成前n项之和 - 不考虑溢出

int main()
{int a = 0;int n = 0;scanf("%d %d",&a,&n);int i = 0;int sum = 0;int ret = 0;for(i=0; i<n; i++){ret = ret*10 + a;sum = sum + ret;}printf("%d\n",sum);return 0;
}

17、使用指针打印数组内容

        题目内容:

  •         写一个函数打印ar数组的内容,不使用数组下标,使用指针。
  •         arr是一个整形一维数组
  •         用两种方法
int main()
{int arr[] = {1,2,3,4,5,6,7,8,9,10};int *p = arr;int sz = sizeof(arr) / sizeof(arr[0]);int i = 0;for(i=0; i<sz; i++){printf("%d ",*(p+i));}return 0;}

第二种方法

int main()
{int arr[] = {1,2,3,4,5,6,7,8,9,10};int *p = arr;int sz = sizeof(arr) / sizeof(arr[0]);int *pend = arr+sz-1;while(p<=pend){printf("%d ",*p);p++;}return 0;}

18、列出100000以内的水仙花数

水仙花数是:指一个n位数,其各位数字的n次方之和等于该数本身,如:153=1^3+5^3+3^3

#include<math.h>
int main()
{int i = 0;for(i=0; i<=100000; i++){//计算i的位数int n = 0;int tmp = i;while(tmp/10){n++;tmp = tmp/10;}//计算i的每一位的n次方和tmp = i;int sum = 0;while(tmp){//pow是用来求每一位的n次方的sum += pow( tmp % 10, n);tmp = tmp / 10;}if(sum == i){printf("%d ",i);}}return 0;
}

19、写一个函数交换字符串的每个字符

要求:分别用指针下标引用符和*指针的方式

指针下标引用符

#include<string.h>
void reverse(char arr[])
{int len = strlen(arr);int left = 0;int right = len-1;while(left<right){char tmp = 0;tmp = arr[left];arr[left] = arr[right];arr[right] = tmp;left++;right--;}
}
int main()
{char arr[] = "hello word";	reverse(arr);printf("%s\n",arr);	return 0;
}

*指针的方式

#include<assert.h>
#include<string.h>
void reverse(char *arr)
{assert(arr !=NULL);int len = strlen(arr);char* left = arr;char* right = arr+len-1;while(left<right){char tmp = 0;tmp = *left;*left = *right;*right = tmp;left++;right--;}
}
int main()
{char arr[] = "hello word";	reverse(arr);printf("%s\n",arr);	return 0;
}

20、用C语言在屏幕上输出以下图案

要求:输入n=7行时候,打印如下图

7************************************
*************************************************
请按任意键继续. . .

代码为:

int main()
{int line = 0;scanf("%d",&line);int i = 0;//打印上半部分for(i=0;i<line;i++){//打印前半段空格int j = 0;for(j=0;j<line-1-i;j++){printf(" ");			}//打印后半段*for(j=0;j<2*i+1;j++){printf("*");}printf("\n");}//打印下半部分for(i=0;i<line-1;i++){int j = 0;for(j=0;j<=i;j++){printf(" ");}for(j=0;j<2*(line-1-i)-1;j++){printf("*");}printf("\n");}return 0;
}

C语言练习 | 初学者经典练习汇总

C语言初识(2) | 变量和常量

C语言初识(3) | 字符串 | 转译字符

C语言初识(4) | 顺序 | 选择 | 循环

C语言初识(5) | 函数 | 数组 | 操作符

C语言初识(6) | 关键字

C语言初识(7) | 指针| 结构体 | define

C语言初阶(8) | 选择结构 | if_else | switch

C语言初阶(9) | while | break | continue | getchar

C语言初阶(10) | 初识for循环 | 入门

相关文章:

C语言练习 | 初学者经典练习汇(2)

目录 1、编写一个程序从1到100中&#xff0c;所有出现9的个数 2、分数求和 3、10个整形数字中选出最大值 4、打印9*9的乘法口诀 5、字符串逆序 6、计算一个数的每位之和(递归实现) 7、递归实现n的K次方 8、写个冒泡排序&#xff0c;把一个整形数组变成升序。 9、二进制…...

git分支

分支什么是分支在版本控制过程中&#xff0c;同时推进多个任务&#xff0c;为每个任务&#xff0c;我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来&#xff0c;开发自己分支的时候&#xff0c;不会影响主线分支的运行。对于初学…...

Java每天15道面试题 | redisII

1、什么是 Redis&#xff1f;简述它的优缺点&#xff1f; Redis 本质上是一个 Key-Value 类型的内存数据库&#xff0c;很像 memcached&#xff0c;整个数据库统统加载在内存当中进行操作&#xff0c;定期通过异步操作把数据库数据 flush 到硬盘上进行保存。因为是纯内存操作&a…...

浏览器渲染原理

阶段 - Parse 1、解析HTML&#xff0c;浏览器将从服务器获取到的HTML文件之后&#xff0c;会产生一个渲染任务&#xff0c;交给消息队列&#xff08;EventLoop/MessageLoop&#xff09;。 2、在事件循环机制的作用下&#xff0c;会将渲染任务交给主线程 3、主线程在获取到渲染…...

华为OD机试题 - 查找单入口空闲区域(JavaScript)| 含思路

华为OD机试题 最近更新的博客使用说明本篇题解:查找单入口空闲区域题目输入输出示例一输入输出说明示例二输入输出说明示例三输入输出说明示例四输入输出说明Code解题思路华为OD其它语言版本<...

制造型企业想要做好数字化改造,要注意以下几点!

很多企业在“工业4.0、智能制造、互联网”等概念满天飞的环境下迷失了方向&#xff0c;不知该如何下手&#xff0c;盲目跟风&#xff0c;看别人投自动化&#xff0c;自己也跟着投&#xff0c;看别人上信息化&#xff0c;自己也跟着上。 其实&#xff0c;智能制造也好&#xff…...

【蓝桥杯集训·每日一题】AcWing 1488. 最短距离

文章目录一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解三、知识风暴Dijkstra算法一、题目 1、原题链接 1488. 最短距离 2、题目描述 有 N 个村庄&#xff0c;编号 1 到 N。 村庄之间有 M 条无向道路&#xff0c;第 i 条道路连接村庄 ai 和村…...

比亚迪:全球最大电动汽车制造商的坎坷成长之路

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 特斯拉&#xff08;TSLA&#xff09;首席执行官埃隆马斯克表示&#xff0c;特斯拉最接近的竞争对手可能是一家中国电动汽车公司。猛兽财经认为&#xff0c;沃伦•巴菲特支持的比亚迪&#xff08;0211&#xff09;可能是马斯…...

Java开发 - Quartz初体验

前言 在上一篇博客中&#xff0c;我们对单点登录有了初步了解&#xff0c;这也让我们独立做系统有了最基础的保障。但在业务开发中&#xff0c;总是会出现一些定期处理的任务&#xff0c;我们首先想到的是Timer&#xff0c;但由于其调度功能单一&#xff0c;我们实际并不会用它…...

无头盔开发vr XR Device Simulator操作(更新)

1.摄像机&#xff08;未开启TY键&#xff09; 平移 上下左右&#xff1a;右键鼠标&#xff0c;移哪去哪 前后&#xff1a;右键快速滚动鼠标滚轮 旋转 XOY平面旋转&#xff1a;右键按住鼠标滚轮滚动鼠标滚轮 XOZ\YOZ平面旋转&#xff1a;右键按住鼠标滚轮移动鼠标 2.左手右手&am…...

《C++代码分析》第二回:函数重载const char* ,char*,const char[],char[]汇编代码上的区别

一、前言 C相比C是支持函数重载的&#xff0c;现在我们详细探讨一下C函数重载与类方法承载。 二、案例代码 我们编译如下代码&#xff0c;同样的我们关闭代码优化&#xff0c;删除符号链接文&#xff08;.pdb&#xff09; #include "windows.h" #include "w…...

【学习笔记】深入理解JVM之垃圾回收机制

【学习笔记】深入理解JVM之垃圾回收机制 更多文章首发地址&#xff1a;地址 参考&#xff1a; 《深入理解JAVA虚拟机》第三版 第三章尚硅谷 第134 - 203 集参考文章&#xff1a;https://blog.csdn.net/qq_48435252/article/details/123697193 1、概念 &#x1f33b; 首先我们…...

49.在ROS中实现local planner(2)- 实现Purepersuit(纯跟踪)算法

48.在ROS中实现local planner&#xff08;1&#xff09;- 实现一个可以用的模板实现了一个模板&#xff0c;接下来我们将实现一个简单的纯跟踪控制&#xff0c;也就是沿着固定的路径运动&#xff0c;全局规划已经规划出路径点&#xff0c;基于该路径输出相应的控制速度 1. Pur…...

Allegro如何设通孔Pin和Via的消盘操作指导

Allegro如何设通孔Pin和Via的消盘操作指导 用Allegro做PCB设计的时候,除了可以在光绘设置里面设置内层通孔Pin和Via的消盘,在设计过程中,同样也可以设置消盘效果,以便实时显示,如下图 如何设置,具体操作如下 点击Setup点击Unused Pads Suppression...

Android工厂模式

工厂模式分为三种 :简单工厂模式 、工厂方法模式 、抽象工厂模式 。 目录 简单工厂模式 UML图 实现 使用场景&#xff1a; 优点 &#xff1a; 缺点&#xff1a; 工厂方法模式 UML图 实现 使用场景&#xff1a; 优点&#xff1a; 缺点&#xff1a; 抽象工厂模式 UM…...

神经网络硬件加速器-架构篇

架构设计 常规架构通常包括两种&#xff1a; 1、全流水线架构&#xff0c;顾名思义&#xff0c;将整个神经网络进行平铺&#xff0c;并对每一层进行优化设计&#xff0c;优点&#xff1a;实现高吞吐率和低延时。缺点&#xff1a;消耗大量硬件资源&#xff0c;通常无法跨网络或…...

Python raise用法(超级详细,看了无师自通)

是否可以在程序的指定位置手动抛出一个异常&#xff1f;答案是肯定的&#xff0c;Python 允许我们在程序中手动设置异常&#xff0c;使用 raise 语句即可。 大家可能会感到疑惑&#xff0c;即我们从来都是想方设法地让程序正常运行&#xff0c;为什么还要手动设置异常呢&#…...

1.SpringSecurity快速入门

*SpringScurity的核心功能: 认证:验证当前访问系统的是不是本系统的用户,并且要确认具体是哪个用户 授权:经过认证后判断当前用户是否有权限进行某个操作 *第一步:创建springboot工程 *第二步:引入SpringSecurity依赖 *第三步:写controller,访问对应的url:localhos…...

Graph Partition: Edge cut and Vertex cut

Graph PartitionEdge cut and Vertex cutEdge cutVertex cut实际如何进行点分割和边分割的呢&#xff1f;Graph store format情况1&#xff1a;按照边列表存储&#xff1a;情况2&#xff1a;按照邻接表存储&#xff1a;Edge cut and Vertex cut 图结构描述了数据流动&#xff…...

Javascript周学习小结(初识,变量,数据类型)

JS的三大书写方式行内式如图所示&#xff1a;几点说明&#xff1a;JS的行内式写在HTML的标签内部&#xff0c;(常以on开头)&#xff0c;如onclick行内式常常使用单引号括住字符串以区分HTML的双引号可读性差&#xff0c;不建议使用引号易出错&#xff0c;不建议使用特殊情况下使…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

【UE5 C++】通过文件对话框获取选择文件的路径

目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 &#xff0c;这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器&#xff0c;右键点击 .uproject 文件&#xff0c;选择 "Generate Visual Studio project files"&#xff0c;重…...

yaml读取写入常见错误 (‘cannot represent an object‘, 117)

错误一&#xff1a;yaml.representer.RepresenterError: (‘cannot represent an object’, 117) 出现这个问题一直没找到原因&#xff0c;后面把yaml.safe_dump直接替换成yaml.dump&#xff0c;确实能保存&#xff0c;但出现乱码&#xff1a; 放弃yaml.dump&#xff0c;又切…...

【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅!

【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅! 🌱 前言:一棵树的浪漫,从数组开始说起 程序员的世界里,数组是最常见的基本结构之一,几乎每种语言、每种算法都少不了它。可你有没有想过,一组看似“线性排列”的有序数组,竟然可以**“长”成一棵平衡的二…...

CSS3相关知识点

CSS3相关知识点 CSS3私有前缀私有前缀私有前缀存在的意义常见浏览器的私有前缀 CSS3基本语法CSS3 新增长度单位CSS3 新增颜色设置方式CSS3 新增选择器CSS3 新增盒模型相关属性box-sizing 怪异盒模型resize调整盒子大小box-shadow 盒子阴影opacity 不透明度 CSS3 新增背景属性ba…...

【java面试】微服务篇

【java面试】微服务篇 一、总体框架二、Springcloud&#xff08;一&#xff09;Springcloud五大组件&#xff08;二&#xff09;服务注册和发现1、Eureka2、Nacos &#xff08;三&#xff09;负载均衡1、Ribbon负载均衡流程2、Ribbon负载均衡策略3、自定义负载均衡策略4、总结 …...