The C programming language (second edition,KR) exercise(CHAPTER 2)

      E x c e r c i s e 2 − 1 Excercise\quad 2-1 Excercise21:输出结果如图1和图2所示,这道练习题需要文章1和文章2的知识。

#include <stdio.h>
#include <limits.h>float getFloat(char sign, unsigned char exp, unsigned mantissa);
double getDouble(char sign, unsigned short exp, unsigned long long mantissa);int main(void)
{printf("sizeof(char)=%d\n",sizeof(char));printf("Signed char[%d to %d]\n", (unsigned char)(~(((unsigned char)~0) >> 1)), (unsigned char)(((unsigned char)~0 >> 1)));printf("Unsigned char[0 to %u]\n", ((unsigned char)~0));		printf("sizeof(short)=%d\n",sizeof(short));printf("Signed short[%d to %d]\n", (unsigned short)(~(((unsigned short)~0) >> 1)), (unsigned short)(((unsigned short)~0 >> 1)));printf("Unsigned short[0 to %u]\n", (unsigned short)((unsigned short)~0));printf("sizeof(int)=%d\n",sizeof(int));printf("Signed int[%d to %d]\n", (unsigned int)(~(((unsigned int)~0) >> 1)), (unsigned int)(((unsigned int)~0 >> 1)));printf("Unsigned int[0 to %u]\n", (unsigned int)((unsigned int)~0));printf("sizeof(long)=%d\n",sizeof(long));printf("Signed long[%ld to %ld]\n",(unsigned long)(~(((unsigned long)~0) >> 1)), (unsigned long)(((unsigned long)~0 >> 1)));printf("Unsigned long[0 to %lu]\n",(unsigned long)((unsigned long)~0));printf("sizeof(long long)=%d\n",sizeof(long long));printf("Signed long long[%lld to %lld]\n", (unsigned long long)(~(((unsigned long long)~0) >> 1)), (unsigned long long)(((unsigned long long)~0 >> 1)));printf("Unsigned long long[0 to %llu]\n", (unsigned long long)((unsigned long long)~0));printf("---------------------------------------------------------------\n");printf("Signed char[%d to %d]\n", SCHAR_MIN, SCHAR_MAX);printf("Unsigned char[0 to %u]\n", UCHAR_MAX);		printf("---------------------------------------------------------------\n");printf("Signed short[%d to %d]\n", SHRT_MIN, SHRT_MAX);printf("Unsigned short[0 to %u]\n", USHRT_MAX);printf("---------------------------------------------------------------\n");printf("Signed int[%d to %d]\n", INT_MIN, INT_MAX);printf("Unsigned int[0 to %u]\n", UINT_MAX);printf("---------------------------------------------------------------\n");printf("Signed long[%ld to %ld]\n",LONG_MIN, LONG_MAX);printf("Unsigned long[0 to %lu]\n",ULONG_MAX);printf("---------------------------------------------------------------\n");printf("Signed long long[%lld to %lld]\n", LLONG_MIN, LLONG_MAX);printf("Unsigned long long[0 to %llu]\n", ULLONG_MAX);printf("---------------------------------------------------------------\n");printf("Positive Normalized Float[%g to %g]\n", getFloat(0, 0x01, 0x00000000), getFloat(0, 0xFE, 0x007FFFFF));printf("Negative Normalized Float[%g to %g]\n", getFloat(1, 0xFE, 0x007FFFFF), getFloat(1, 0x01, 0x00000000));printf("Positive De-Normalized Float[%g to %g]\n", getFloat(0, 0x00, 0x00000001), getFloat(0, 0x00, 0x007FFFFF));printf("Negative De-Normalized Float[%g to %g]\n", getFloat(1, 0x00, 0x007FFFFF), getFloat(1, 0x00, 0x00000001));printf("Positive De-Normalized Zero Float[%g]\n", getFloat(0, 0x00, 0x00000000));printf("Negative De-Normalized Zero Float[%g]\n", getFloat(1, 0x00, 0x00000000));printf("Positive Infinity Float[%g]\n", getFloat(0, 0xFF, 0x00000000));printf("Negative Infinity Float[%g]\n", getFloat(1, 0xFF, 0x00000000));	printf("Not A Number Float[%g]\n", getFloat(0, 0xFF, 0x00000010));		printf("Not A Number Float[%g]\n", getFloat(1, 0xFF, 0x00000001));		printf("Positive Normalized Double[%g to %g]\n", getDouble(0, 0x0001, 0x0000000000000000), getDouble(0, 0x07FE, 0x000FFFFFFFFFFFFF));printf("Negative Normalized Double[%g to %g]\n", getDouble(1, 0x07FE, 0x000FFFFFFFFFFFFF), getDouble(1, 0x0001, 0x0000000000000000));printf("Positive De-Normalized Double[%g to %g]\n", getDouble(0, 0x0000, 0x0000000000000001), getDouble(0, 0x0000, 0x000FFFFFFFFFFFFF));printf("Negative De-Normalized Double[%g to %g]\n", getDouble(1, 0x0000, 0x000FFFFFFFFFFFFF), getDouble(1, 0x0000, 0x0000000000000001));printf("Positive De-Normalized Zero Double[%g]\n", getDouble(0, 0x0000, 0x0000000000000000));printf("Negative De-Normalized Zero Double[%g]\n", getDouble(1, 0x0000, 0x0000000000000000));printf("Positive Infinity Double[%g]\n", getDouble(0, 0x07FF, 0x0000000000000000));printf("Negative Infinity Double[%g]\n", getDouble(1, 0x07FF, 0x0000000000000000));	printf("Not A Number Double[%g]\n", getDouble(0, 0x07FF, 0x0000000000000010));		printf("Not A Number Double[%g]\n", getDouble(1, 0x07FF, 0x0000000000000001));		return 0;
}float getFloat(char sign, unsigned char exp, unsigned mantissa)
{unsigned f = ((unsigned)(((unsigned)(sign != 0))) << 31) | ((unsigned)(((unsigned)exp) << 23)) | ((unsigned)(mantissa & 0x007FFFFF));return *((float *)&f);
}double getDouble(char sign, unsigned short exp, unsigned long long mantissa)
{unsigned long long d = ((unsigned long long)(((unsigned long long)(sign != 0)) << 63)) | ((unsigned long long)((unsigned long long)(exp & 0x07FF) << 52)) | ((unsigned long long)(mantissa & 0x000FFFFFFFFFFFFF));return *((double *)&d);
}
图1.
图2.

      E x c e r c i s e 2 − 2 Excercise\quad 2-2 Excercise22

#include <stdio.h>#define MAXLINE  (1000)int getline(char s[], int lim);int main()
{int len;    /* current line length */char line[MAXLINE];     /* current input line */while ((len = getline(line, MAXLINE)) > 0) {printf("%s",line);}return 0;
}/* getline: read a line s, return length */
int getline(char s[], int lim)
{int c, i;for (i = 0; i < lim-1; ++i){c = getchar();	if((c == '\n')){break;}else if((c== EOF)){break;}		else{s[i] = c;			}}if (c == '\n') {s[i] = c;++i;}s[i] = '\0';return i;
}

      E x c e r c i s e 2 − 3 Excercise\quad 2-3 Excercise23

#include <stdio.h>#define MAXLINE  (1000)int getline(char s[], int lim);
int htoi(char s[]);int main()
{int result=0;int len;    /* current line length */char line[MAXLINE];     /* current input line */while ((len = getline(line, MAXLINE)) > 0) {printf("%s\n",line);result=htoi(line);printf("result=%d\n",result);		}return 0;
}int power(int ex)
{int i=0;int result=1;	while(i<ex){result=result*16;	i=i+1;		}return result;
}int htoi(char s[])
{int i=0;	int result=0;	int prefix=0;	int s_index=0;int e_index=0;while(s[i]!='\0'){if(((s[i]>='0')&&(s[i]<='9'))||((s[i]>='a')&&(s[i]<='f'))||((s[i]>='A')&&(s[i]<='F'))){}else{if(i==1){if(s[0]=='0'){if((s[1]=='x')||(s[1]=='X')){prefix=1;}else{printf("Hexadecimal string error\n");return -1;						}}else{printf("Hexadecimal string error\n");return -1;						}}else{printf("Hexadecimal string error\n");return -1;}			}i=i+1;			}	s_index=i;	if(s_index==0){printf("Hexadecimal string error\n");return -1;}if(s_index==1){if((s[i]>='0')&&(s[i]<='9')){return  ((int)(s[i]-'0'));	}		if((s[i]>='a')&&(s[i]<='f')){return  ((int)((s[i]-'a')+10));				}if((s[i]>='A')&&(s[i]<='F')){return  ((int)((s[i]-'A')+10));				}				}	if(s_index==2){		if(prefix==1){printf("Hexadecimal string error\n");return -1;	}else{for(i=0;i<s_index;i++){if((s[s_index-1-i]>='0')&&(s[s_index-1-i]<='9')){result=result +  ((int)(s[s_index-1-i]-'0')) *power(i);	}		if((s[s_index-1-i]>='a')&&(s[s_index-1-i]<='f')){result=result +  ((int)((s[s_index-1-i]-'a')+10)) *power(i);										}if((s[s_index-1-i]>='A')&&(s[s_index-1-i]<='F')){result=result +  ((int)((s[s_index-1-i]-'A')+10)) *power(i);									}					}					}					}if(s_index>2){		if(prefix==1){for(i=0;i<(s_index-2);i++){if((s[s_index-1-i]>='0')&&(s[s_index-1-i]<='9')){result=result +  ((int)(s[s_index-1-i]-'0')) *power(i);	}		if((s[s_index-1-i]>='a')&&(s[s_index-1-i]<='f')){result=result +  ((int)((s[s_index-1-i]-'a')+10)) *power(i);										}if((s[s_index-1-i]>='A')&&(s[s_index-1-i]<='F')){result=result +  ((int)((s[s_index-1-i]-'A')+10)) *power(i);									}					}					}	else{for(i=0;i<s_index;i++){if((s[s_index-1-i]>='0')&&(s[s_index-1-i]<='9')){result=result +  ((int)(s[s_index-1-i]-'0')) *power(i);	}		if((s[s_index-1-i]>='a')&&(s[s_index-1-i]<='f')){result=result +  ((int)((s[s_index-1-i]-'a')+10)) *power(i);										}if((s[s_index-1-i]>='A')&&(s[s_index-1-i]<='F')){result=result +  ((int)((s[s_index-1-i]-'A')+10)) *power(i);									}					}					}					}return result;
}/* getline: read a line s, return length */
int getline(char s[], int lim)
{int c, i;for (i = 0; i < lim-1; ++i){c = getchar();	if((c == '\n')){break;}else if((c== EOF)){break;}		else{s[i] = c;			}}if (c == '\n') {s[i] = c;++i;}s[i] = '\0';return i;
}

      E x c e r c i s e 2 − 4 Excercise\quad 2-4 Excercise24

#include <stdio.h>#define MAXLINE  (1000)int getline(char s[], int lim);
void squeeze(char s1[],char s2[]);int main()
{int result=0;int len;    /* current line length */char line[MAXLINE];     /* current input line */while ((len = getline(line, MAXLINE)) > 0) {printf("before:%s\n",line);squeeze(line,"aFEb");printf("after:%s\n",line);		}return 0;
}int is_str_ch(char s[],char c)
{int i=0;char temp_c=0;	int result=0;	while((temp_c=s[i++])!='\0'){   if(temp_c==c){result=1;break;			}	}return result;
}void squeeze(char s1[],char s2[])
{int i,j;for(i=j=0;s1[i]!='\0';i++){			if(!is_str_ch(s2,s1[i])){s1[j++]=s1[i];		}				}s1[j]='\0';		
}/* getline: read a line s, return length */
int getline(char s[], int lim)
{int c, i;for (i = 0; i < lim-1; ++i){c = getchar();	if((c == '\n')){break;}else if((c== EOF)){break;}		else{s[i] = c;			}}if (c == '\n') {s[i] = c;++i;}s[i] = '\0';return i;
}

      E x c e r c i s e 2 − 5 Excercise\quad 2-5 Excercise25

#include <stdio.h>#define MAXLINE  (1000)int getline(char s[], int lim);
int any(char s1[],char s2[]);int main()
{int position=0;int len;    /* current line length */char line[MAXLINE];     /* current input line */while ((len = getline(line, MAXLINE)) > 0) {position=any(line,"aFEb");printf("position=%d\n",position);		}return 0;
}int any(char s1[],char s2[])
{int i,j;for(i=0;s1[i]!='\0';i++){			for(j=0;s2[j]!='\0';j++){if(s1[i]==s2[j]){return i;				}				}				}return -1;		
}/* getline: read a line s, return length */
int getline(char s[], int lim)
{int c, i;for (i = 0; i < lim-1; ++i){c = getchar();	if((c == '\n')){break;}else if((c== EOF)){break;}		else{s[i] = c;			}}if (c == '\n') {s[i] = c;++i;}s[i] = '\0';return i;
}

      E x c e r c i s e 2 − 6 Excercise\quad 2-6 Excercise26

#include <stdio.h>unsigned setbits(unsigned x,int p,int n,unsigned y);int main()
{unsigned x=0xFFFFFFDF;unsigned y=0xFFFFFFF2;unsigned p=0;p=setbits(x,5,2,y);printf("p=%08x\n",p);		return 0;
}unsigned setbits(unsigned x,int p,int n,unsigned y)
{unsigned front=((~((unsigned)0))<<(p+1));unsigned back=~((~((unsigned)0))<<(p-n+1));unsigned all=front | back;	x=x & all;	y=(~((~0)<<n)) & y;y=y<<(p-n+1);x=x | y;return x;		
}

      E x c e r c i s e 2 − 7 Excercise\quad 2-7 Excercise27:

#include <stdio.h>unsigned invert(unsigned x,int p,int n);int main()
{unsigned x=0xFFFF55FF;unsigned inverted=0;inverted=invert(x,15,8);printf("inverted=%08x\n",inverted);		return 0;
}unsigned invert(unsigned x,int p,int n)
{int i;unsigned temp1_x=x & (~((~((~((unsigned)0))<<n))<<(p-n+1)));unsigned temp2_x=0;	unsigned index=1<<p;for(i=0;i<n;i++){if(!(index & x)){temp2_x|=index;			}			index=index>>1;		}return (temp1_x) | (temp2_x);		
}

      E x c e r c i s e 2 − 8 Excercise\quad 2-8 Excercise28:

#include <stdio.h>unsigned rightrot(unsigned x,int n);int main()
{unsigned x=0xFFFFFF5A;unsigned rotated=0;rotated=rightrot(x,8);printf("rotated=%08x\n",rotated);		return 0;
}unsigned rightrot(unsigned x,int n)
{unsigned temp1_x=x & (~((~((unsigned)0))<<n));temp1_x=temp1_x<<((sizeof(unsigned) * 8)-n);unsigned temp2_x=(x>>n) & ((~((unsigned)0)>>n));	return (temp1_x) | (temp2_x);		
}

      E x c e r c i s e 2 − 9 Excercise\quad 2-9 Excercise29:当 x x x为奇数的时候, x x x的二进制表示的最低位肯定为1,那么此时 x − 1 x-1 x1的值二进制表示和 x x x的二进制表示基本一样,除了二进制表示的最低位为0,那么此时操作 x & = ( x − 1 ) x\&=(x-1) x&=(x1)就会将 x x x的二进制表示的最低位清零,其它位保持不变。假设此时 x = 213 x=213 x=213,那么它的二进制表示为 11010101 11010101 11010101,此时 x − 1 x-1 x1的值二进制表示为 11010100 11010100 11010100,那么此时操作 x & = ( x − 1 ) x\&=(x-1) x&=(x1)之后 x x x的值为 11010100 11010100 11010100= x − 1 x-1 x1。当 x x x为偶数的时候, x − 1 x-1 x1会将 x x x的二进制表示的最右的比特值为1的比特位的值变成0,同时将 x x x的二进制表示的最右的比特值为1的比特位后面所有为0的比特位的值都变成1,因此总的来说操作 x & = ( x − 1 ) x\&=(x-1) x&=(x1)会将 x x x的二进制表示的最右的比特值为1的比特位清零,其它位保持不变。假设此时 x = 208 x=208 x=208,那么它的二进制表示为 11010000 11010000 11010000,此时 x − 1 x-1 x1的值二进制表示为 11001111 11001111 11001111,那么此时操作 x & = ( x − 1 ) x\&=(x-1) x&=(x1)之后 x x x的值为 11000000 11000000 11000000。因此总结来说不论 x x x为奇数还是偶数,操作 x & = ( x − 1 ) x\&=(x-1) x&=(x1)都会将 x x x的二进制表示的最右的比特值为1的比特位清零,因此可以利用这个现象来统计 x x x中比特位的值为1的比特位的个数。

#include <stdio.h>int bitcount(unsigned x);int main()
{unsigned x=0x84211234;unsigned num_of_1_bits=0;num_of_1_bits=bitcount(x);printf("num_of_1_bits=%d\n",num_of_1_bits);		return 0;
}/* bitcount:  count 1 bits in x */
int bitcount(unsigned x)
{int b;for (b = 0; x != 0; x &= (x-1))b++;return b;
}

      E x c e r c i s e 2 − 10 Excercise\quad 2-10 Excercise210:

#include <stdio.h>char lower(char c);int main()
{char c='A';printf("lower(c)=%c\n",lower(c));		return 0;
}/* lower:  convert c to lower case: ASCII only */
char lower(char c)
{return ((c>='A' && c<='Z') ? (c-'A'+'a'):c);
}

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

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

相关文章

数字人直播系统是什么?AI数字人直播间搭建方法来了!

无人直播的时代&#xff0c;短视频和直播平台正在风口&#xff0c;各条赛道内也早已人满为患&#xff0c;很多线下商家都想参与其中&#xff0c;因为时间、地方、设备等限制久久不能去实行起来。所以&#xff0c;数字人直播新模式成为了线下商家的救星&#xff0c;线下商家方法…

go语言实现无头单向链表

什么是无头单向链表 无头单向链表是一种线性数据结构&#xff0c;它的每个元素都是一个节点&#xff0c;每个节点都有一个指向下一个节点的指针。"无头"意味着这个链表没有一个特殊的头节点&#xff0c;链表的第一个节点就是链表的头。 优点&#xff1a; 动态大小&…

企业如何做好数字化?

企业进行数字化转型是一个复杂且系统性的过程&#xff0c;涉及战略规划、技术应用、组织变革、文化建设等多个方面。以下步骤和建议可以帮助企业做好数字化转型&#xff1a; 1、明确转型愿景和目标&#xff1a;确定企业的数字化愿景&#xff0c;明确转型的长期目标和短期里程碑…

烤羊肉串引来的思考--命令模式

1.1 吃羊肉串&#xff01; 烧烤摊旁边等着拿肉串的人七嘴八舌地叫开了。场面有些混乱&#xff0c;由于人实在太多&#xff0c;烤羊肉串的老板已经分不清谁是谁&#xff0c;造成分发错误&#xff0c;收钱错误&#xff0c;烤肉质量不过关等。 外面打游击烤羊肉串和这种开门店做烤…

基于Springboot4S店车辆管理系统

采用技术 基于Springboot4S店车辆管理系统的设计与实现~ 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBootMyBatis 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 页面展示效果 管理员功能 首页 销售员管理 维修员管理 客户管理 供应…

Altair®(澳汰尔)Inspire™ Extrude Metal 专为进行高效金属挤压设计

所有挤压公司都希望消除成本高昂的原型设计&#xff0c;缩短重新设计周期。现在&#xff0c;各种规模的企业组织均可获得高等物理特性仿真技术。Inspire Extrude Metal 易于掌握&#xff0c;让所有工程师或设计师都能通过仿真&#xff0c;更好地了解任何特定金属合金的型材特性…

【问题处理】银河麒麟操作系统实例分享,银河麒麟高级服务器操作系统mellanox 网卡驱动编译

1.Mellanox 网卡源码驱动下载链接&#xff1a; https://www.mellanox.com/downloads/ofed/MLNX_EN-5.7-1.0.2.0/MLNX_EN_SRC-5.7-1.0.2.0.tgz 2.系统及内核版本如下截图&#xff1a; 3.未升级前 mellanox 网卡驱动版本如下&#xff1a; 4.解压 “MLNX_EN_SRC-5.7-1.0.2.0.tg…

JavaWeb后端——Mybatis

概述 Mybatis&#xff1a;Java程序来对数据库进行操作&#xff0c;一款优秀的持久层框架&#xff0c;用于简化JDBC的开发 SSM&#xff1a;SpringMVC、Spring、Mybatis 快速入门 步骤2&#xff1a;注意数据库连接的四要素 application.properties&#xff1a;springboot 的默…

【leetcode】动态规划::前缀和

标题&#xff1a;【leetcode】前缀和 水墨不写bug 正文开始&#xff1a; &#xff08;一&#xff09;简单前缀和 描述 给定一个长度为n的数组a1​,a2​,....an​. 接下来有q次查询, 每次查询有两个参数l, r. 对于每个询问, 请输出al​al1​....ar​ 输入描述&#xff1a; 第一…

文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《考虑灵活爬坡产品的虚拟电厂两阶段分布鲁棒优化运营策略》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

轨迹规划 | 图解最优控制LQR算法(附ROS C++/Python/Matlab仿真)

目录 0 专栏介绍1 最优控制理论2 线性二次型问题3 LQR的价值迭代推导4 基于差速模型的LQR控制5 仿真实现5.1 ROS C实现5.2 Python实现5.3 Matlab实现 0 专栏介绍 &#x1f525;附C/Python/Matlab全套代码&#x1f525;课程设计、毕业设计、创新竞赛必备&#xff01;详细介绍全…

硬件标准化之道:Linux社区与硬件厂商的协同创新

在Linux的广阔世界中&#x1f30c;&#xff0c;与各式各样的硬件设备进行互动和协作是一项不断进行的挑战&#x1f527;。硬件厂商和Linux社区的紧密合作&#xff0c;通过制定一系列标准和协议&#x1f4dc;&#xff0c;使得从键盘&#x1f3b9;和鼠标&#x1f5b1;到复杂的网络…

七、Ajax(Django开发)

Ajax&#xff08;Django开发&#xff09; 知识点的回顾&#xff1a;1.Ajax请求2.订单小结3.图表4.关于文件上传4.1基本操作案例&#xff1a;批量上传数据案例&#xff1a;混合数据&#xff08;Form&#xff09;4.2启用media案例&#xff1a;混合数据&#xff08;form&#xff0…

C++设计模式:桥模式(五)

1、定义与动机 桥模式定义&#xff1a;将抽象部分&#xff08;业务功能&#xff09;与实现部分&#xff08;平台实现&#xff09;分离&#xff0c;使他们可以独立地变化引入动机&#xff1a; 由于某些类型的固有的实现逻辑&#xff0c;使得它们具有两个变化的维度&#xff0c;…

阿里云服务器可以干嘛 阿里云服务器应用场景有哪些

阿里云服务器可以干嘛&#xff1f;能干啥你还不知道么&#xff01;简单来讲可用来搭建网站、个人博客、企业官网、论坛、电子商务、AI、LLM大语言模型、测试环境等&#xff0c;阿里云百科aliyunbaike.com整理阿里云服务器的用途&#xff1a; 阿里云服务器活动 aliyunbaike.com…

单例模式--理解

单例模式 单例模式是指在内存中只会创建且仅创建一次对象的设计模式。在程序中多次使用同一个对象且作用相同时&#xff0c;为了防止频繁地创建对象使得内存飙升&#xff0c;单例模式可以让程序仅在内存中创建一个对象&#xff0c;让所有需要调用的地方都共享这一单例对象。 单…

使用docker-compose创建多项目容器运行

使用docker-compose创建多项目容器运行 按招网友提供方法创建 docker-compose.yml内容&#xff08;这里改了桥接模式&#xff0c;并且注释放开&#xff09; version: "3" services:docker_python:image: python:2.7.18container_name: py_appworking_dir: "/r…

婴儿洗衣机哪种比较实用?精选四大热门口碑婴儿洗衣机推荐

对于有了宝宝的家庭来说&#xff0c;洗衣成为了一项重要的家务事。大家都知道&#xff0c;宝宝的皮肤比较娇嫩&#xff0c;容易受到各种细菌、病毒的侵扰。所以&#xff0c;宝宝的衣物应该与大人的分开洗。婴儿洗衣机作为一种专门为婴幼儿家庭设计的洗衣机&#xff0c;其具有除…

nginx部署前端教程

目录 一、前言二、部署三、注意四、参考 一、前言 一般来说现在的软件项目&#xff0c;都是分用户端以及管理端的&#xff0c;并且是前后端分离的&#xff0c;这里我来记录一下部署两个前端的教程。 部署前端之前需要的准备工作是部署springBoot后端程序&#xff0c;这里我do…