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

news2025/6/18 13:37:51

      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)~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)~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.coloradmin.cn/o/1585273.html

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

相关文章

Windows虚拟主机上多个域名访问同一个网站

近日老板提出了想要多个域名访问同一个网站的想法。这边了解后&#xff0c;由于我们公司使用的是Hostease的Windows虚拟主机产品&#xff0c;因此咨询了Hostease的技术支持&#xff0c;寻求帮助了解到可以实现Windows主机上多个域名访问同一个网站&#xff0c;是需要进入Window…

【洛谷 P8804】[蓝桥杯 2022 国 B] 故障 题解(概率论+条件概率+贝叶斯公式)

[蓝桥杯 2022 国 B] 故障 题目描述 在软件或系统开发中&#xff0c;我们会遇到各种各样的故障。为了从故障现象反推故障原因&#xff0c;工程师们会总结一种叫做相关性矩阵的二维表格&#xff0c;来表示故障原因与故障现象之间的关系。比如: 其中每行表示一种故障原因&#x…

Python学习从0到1 day25 第二阶段 SQL ② Python操作数据库

少年有梦&#xff0c;不应至于心动&#xff0c;更要付诸行动 —— 24.4.11 pymysql 除了使用图形化工具以外&#xff0c;我们也可以使用编程语言来执行SQL从而操作数据库 在Python中&#xff0c;使用第三方库&#xff1a;pymysql来完成对MySQl数据库的操作 安装 pip install py…

微信小程序视频下载工具

推荐您使用"下载高手"微信小程序视频下载工具&#xff0c;它利用占领系统代理&#xff0c;抓取小程序的请求&#xff0c;并集成了下载功能&#xff0c;让您轻松获取所需视频资源。 首先下载我给大家准备好的压缩包 1.首先先退出微信 注意:一定要右下角退出 2.然后来…

Element-UI 下拉框单选转多选回显不清空绑定的值

需求 根据radio切换来更改下拉框是否多选 原因 单选和多选这两个 input 看上去没差别&#xff08;自身和层级都一致&#xff09;&#xff0c;vue出于提高性能&#xff0c;所以 vue 给复用了 解决方案 <template><section><el-radio-group v-model"radi…

【机器学习算法】决策树和随机森林在计算机视觉中的应用

前言 决策树和随机森林在计算机视觉中有着广泛的应用。决策树作为一种简单而强大的分类模型&#xff0c;可以用于图像分类、目标检测、特征提取等任务。它能够根据图像的特征逐层进行判断和分类&#xff0c;从而实现对图像数据的智能分析和理解。随机森林作为一种集成学习方法&…

基于Lipschitz李式指数的随机信号特征识别和故障检测matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 Lipschitz李式指数定义与性质 4.2 Lipschitz李式指数的估计 4.3 Lipschitz李式指数在信号特征识别与故障检测中的应用 5.完整程序 1.程序功能描述 基于Lipschitz李式指数的随机信号特…

docker基本的掌握

前言&#xff1a;先要了解docker是干什么的&#xff0c; 1掌握基本概念&#xff0c;如;镜像&#xff0c;容器&#xff0c;数据卷 2知道使用常用命令 简易图; 补充&#xff1a; 默认情况下&#xff0c;每次重启虚拟机我们都需要手动启动Docker和Docker中的容器。通过命令可以实…

【MATLAB】基于Wi-Fi指纹匹配的室内定位-仿真获取WiFi RSSI数据(附代码)

基于Wi-Fi指纹匹配的室内定位-仿真获取WiFi RSSI数据 WiFi指纹匹配是室内定位最为基础和常见的研究&#xff0c;但是WiFi指纹的采集可以称得上是labor-intensive和time-consuming。现在&#xff0c;给大家分享一下我们课题组之前在做WiFi指纹定位时的基于射线跟踪技术仿真WiFi…

解决 VSCode 编辑器点击【在集成终端中打开】出现新的弹框

1、问题描述 在 VSCode 的项目下&#xff0c;鼠标右键&#xff0c;点击【在集成终端中打开】&#xff0c;出现新的一个弹框。新版的 VSCode 会有这个问题&#xff0c;一般来说我们都希望终端是在 VSCode 的控制台中打开的&#xff0c;那么如何关闭这个弹框呢&#xff1f; 2、解…

Win10安装sqlplus遇到报错的解决办法

1.下载安装sqlplus.exe的错误解决过程 最近有用到sqlplus连接Oracle数据库执行自动化脚本&#xff0c;Orcle服务器版本是11.2.0.1。在Navicat工具上通过如下语句查询到的版本信息截图如图1所示&#xff1a; SELECT * FROM v$version; 图1 Oracle服务器版本信息 其中“Oracle Da…

台灯哪个牌子好,五大护眼灯品牌排行分享

​当前&#xff0c;我国青少年的近视率已超过半数&#xff0c;位居全球之首&#xff0c;且近视发生年龄呈现下降趋势。长时间用眼和过度使用电子产品是导致近视高发的主要因素。面对这一挑战&#xff0c;如何改善现状成为了一个亟待解决的问题。对于儿童而言&#xff0c;降低近…

【C++】模版

目录 一、泛型编程二、函数模板2.1 函数模板概念2.2 函数模板格式2.3 函数模板的原理2.4 函数模板的实例化2.5 模板参数的匹配原则 三、类模板3.1 类模板的定义格式3.2 类模板的实例化 四、非类型模板参数五、模板的特化5.1 概念5.2 函数模板特化5.3 类模板特化5.3.1 全特化5.3…

【火猫TV】欧冠:拉菲尼亚梅开二度,却在出售名单中

欧冠淘汰赛首回合&#xff0c;巴萨在客场3比2击败大巴黎&#xff0c;取得一个球的领先优势&#xff0c;双方将会在下周进行生死战。本场比赛巴萨虽然率先破门&#xff0c;却被大巴黎死死压制&#xff0c;如果不是大巴黎锋线效率一般&#xff0c;球队很可能会在客场输球。本场比…

代码随想录-算法训练营day04【链表02:两两交换链表中的节点、删除链表的倒数第N个节点、链表相交、环形链表II】

代码随想录-035期-算法训练营【博客笔记汇总表】-CSDN博客 第二章 链表part02● day 1 任务以及具体安排&#xff1a;https://docs.qq.com/doc/DUG9UR2ZUc3BjRUdY ● day 2 任务以及具体安排&#xff1a;https://docs.qq.com/doc/DUGRwWXNOVEpyaVpG ● day 3 任务以及具体安排…

华为2024年校招实习硬件-结构工程师机试题(四套)

华为2024年校招&实习硬件-结构工程师机试题&#xff08;四套&#xff09; &#xff08;共四套&#xff09;获取&#xff08;WX: didadidadidida313&#xff0c;加我备注&#xff1a;CSDN 华为硬件结构题目&#xff0c;谢绝白嫖哈&#xff09; 结构设计工程师&#xff0c;结…

1. VirtualBox安装CentOS

安装 VirtualBox 地址:https://www.virtualbox.org/wiki/Downloads 版本: 6.1和7.0+版本都可以 安装: windows上安装需要admin权限,右键菜单选中 “Run as administrator” 安装 CentOS 6.10 地址:https://vault.centos.org/6.10/isos/x86_64/ 版本: 如果不需要GUI,选择…

竹云董事长在第十二届中国电子信息博览会开幕峰会暨全国“专精特新”电子信息行业论坛作主题演讲

2024年4月9日&#xff0c;第十二届中国电子信息博览会开幕峰会&#xff08;CITE2024&#xff09;暨全国“专精特新”电子信息行业论坛在深圳会展中心盛大举行。 本届电博会开幕峰会以“追求卓越&#xff0c;数创未来”为主题&#xff0c;特邀百位专家学者、行业精英、知名投资人…

金三银四面试题(十九):MySQL中的锁

在MySQL中&#xff0c;锁是非常重要的&#xff0c;特别是在多用户并发访问数据库的环境中&#xff0c;因此也是面试中常问的话题。 请说说数据库的锁&#xff1f; 关于MySQL 的锁机制&#xff0c;可能会问很多问题&#xff0c;不过这也得看面试官在这方面的知识储备。 MySQL …

新版HI3559AV100开发注意事项(三)

新版HI3559AV100开发注意事项&#xff08;三&#xff09; 十九、用的sdk是Hi3559V200_MobileCam_SDK_V1.0.1.5 播放AAC音频文件&#xff0c;adec->ao;adec的初始化里面包括了aaclc解码器的注册&#xff0c;可是在HI_MPI_ADEC_RegisterDecoder(&s32Handle, &stAac);…