嵌入式软件c语言笔试题

收集的一些嵌入式软件C语言题目,代码均已经过验证正确无误

1、CPU大小端问题

#include <stdio.h>

void main()
{
   
	union  
    {
     
        int a;  
        char b;  
    }c;  
    c.a = 1;
	 
	int d;
	d = c.b;
	if(d == 1)
		printf("CPU是小端,c.b = %d\n",c.b);
	if(d == 0)
		printf("CPU是大端,c.b = %d\n",c.b);
	return;
}

2、递归
求阶乘n!

int function1(int n)
{
   
	if (n == 0)
		return 1;
	while (n >= 1)
	{
   
		return n*function1(n - 1);
	}
}

int function2(int n)
{
   
	if (n == 0)
		return 1;
	else
		return n*function2(n - 1);
}

3、输入一个整数(任意位数),倒叙输出:

//计算位数
int length_num(int n)
{
   
	int num_temp = n;
	int flag = 0;
	while (num_temp > 0)
	{
    
		num_temp /= 10;
		flag++;
	}
	return flag;
}
//输入一个整数(任意位数),倒叙输出:
int fun3(int n)
{
   
	int flag = length_num(n);
	int *p = (int *)malloc(flag * sizeof(int));
	for (int i = 0; i < flag; i++)
	{
   
		int temp = n % 10;
		*(p + i) = temp;
		n = n / 10;
	}//例如n=123,存储为321
	int n1 = 0;
	for (int i = 0; i < flag; i++)
	{
   
		n1 = 10 * n1 + (*(p + i));
	}
	free(p);
	p = NULL;
	return n1;
}

4、将一个数组逆序放到原来数组中。(考虑复杂度)

void fun4(int *p, int length)
{
   
	int n = length / 2;
	for(int i=0;i<n;i++)
	{
   
		int temp = *(p + i);
		*(p + i) = *(p + length - 1 - i);
		*(p + length - 1 - i) = temp;
	}
}

5、斐波那契数列:

Fib(0) = 0 
Fib(1) = 1 
Fib(n) = Fib(n-1) + Fib(n-2)

F() = 0, 1, 1, 2, 3, 5, 8, 13, 21, 34
//斐波那契,使用递归算法复杂度为 O(2n)。
int fun5(int n)
{
   
	if (n == 0)
		return 0;
	if (n == 1)
		return 1;
	if (n > 1)
		return fun5(n - 1) + fun5(n - 2)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值