兆易创新笔试(5题)

本文介绍了如何使用C语言编写函数进行ASCII码与十六进制之间的转换,包括`char_to_hex()`和`hex_to_char()`两个函数。此外,还讨论了函数`Test()`的执行结果,该函数可能导致悬挂指针的问题。最后,解释了电路图中各元件的作用,强调了稳压管Z1不能放在保险丝F1之前的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一题:使用C语言完成ASCII码和十六进制的互相转换(举例:“0x55"转0x55;0xAA转"0xAA”);

答案:参考link

unsigned char char_to_hex(unsigned char char_num)
{
    if ((char_num >= '0') &&(char_num <= '9'))
    {
        /* code */
        char_num = 0x30+(char_num - '0');
    }
    else if ((char_num >= 'A') &&(char_num <= 'Z'))
    {
        /* code */
        char_num = 0x41+(char_num - 'A');
    }
    else if ((char_num >= 'a') &&(char_num <= 'z'))
    {
        /* code */
        char_num = 0x61+(char_num - 'a');
    }
    else
        char_num = 0xff;
    return char_num;
}


//16进制转ascii
unsigned char hex_to_char(unsigned char hex_num)
{
    if ((hex_num>=0x30) && (hex_num<=0x39))
    {
        /* code */
        hex_num = '0'+ hex_num - 0x30;
    }
    else if ((hex_num>=0x41) && (hex_num<=0x5A))
    {
        /* code */
        hex_num = 'A' + (hex_num - 0x41);
    }
    else if ( (hex_num>=0x61) && (hex_num<=0x7A))
    {
        /* code */
        hex_num = 'a' + (hex_num - 0x61);
    }
    else
        hex_num = 0xff;
    return hex_num;

}

第二题:下列函数会有什么结果

			void Test(void{
				char *str = (char *)malloc(100);
				strcpy(str,"hello");
				free(str);
				if(str != NULL){
						strcpy(str,"world");
						printf(str);
					}					
			}

答案:输出结果为world;

第三题:(*(void(*)())0)();什么意思
答案:借鉴链接: link
从内向外看:1、void(*)()void(*fp)()一个类型;是一个函数,无返回值,无参数,函数名有*就
是函数指针类型;
2、(void(*)())0(int)0一个道理;强制转换,把0强制转换成函数指针,即地
址;
3、*(void(*)())0int *p = &a;*p= 就是取地址内的内容,内容是一个函数;
4、(*(void(*)())0)();从3可知*(void(*)())0是个函数,所以函数funtion();就是函数调用;

第四题:NAND FLASH问题手搓nand_writedata函数伪代码

答案:(不知道对不对;题目太长不好描述)参考别的博主link

第五题:下图是某直流电源的输入电路,请分析图中每个元器件的作用。请问稳压管Z1可以放在保险丝F1之前吗?为什么?
在这里插入图片描述
答案:J3是输入插座,用于连接输入电源。VD1是防止反接的二极管,要选反向击穿电压大,正向导通电流大,导通压降小的整流二极管,比如肖特基势垒整流二极管。F1是限流的保险丝,最好选择有可恢复的,比如自恢复PTC保险丝。C104、C107是0.1uF的滤波电容,和L8一起组成一个n型滤波电路,滤除高频噪声。L8是60欧@10OMHz的磁珠,用于滤除高频干扰,同时起到一定的限流作用。E18是22uF的B型铜电容,用于滤除电源中的低频噪声。Z1是18V/0.5W的稳压二极管,防止输出电压大于18V。
Z1不能放在F1之前,因为大多数稳压二极管失效之后是短路状态,这样输入电压VDC_IN经过VD1被短路到地,没有起到保护输入电压的作用。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值