收集的一些嵌入式软件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)