嵌入式面试题 C C++ 经典面试算法题总结

26 return 0;
27 }


## **5.判断从101到200间有多少个素数,并输出**



1 #include <stdio.h>
2 #include <string.h>
3
4 int main()
5 {
6 int i,j;
7 for(i = 101;i<=200;i++)
8 {
9 for(j = 2;j<i;j++)
10 {
11 if(0 == i%j)
12 {
13 break;
14 }else{
15 if(j == i-1)
16 {
17 printf(“%d\n”,i);
18 }
19 }
20 }
21 }
22
23 return 0;
24 }


## **6.写出一个程序,接受一个由字母和数字组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写**



1 #include <stdio.h>
2 #include <string.h>
3
4 int main()
5 {
6 int len,cout = 0;
7 char a[] = “ABCDEFGAa”;
8 char b = ‘a’;
9 len = strlen(a);
10 for(int i = 0;i<len;i++)
11 {
12 if(a[i] == b || a[i]-32 == b || a[i]+32 == b)
13 {
14 cout++;
15 }
16 }
17 printf(“%d\n”,cout);
18
19 return 0;
20 }


##  **7.打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。**


例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。



1 #include <stdio.h>
2 #include <string.h>
3
4 int main()
5 {
6 int i,a,b,c,cout = 0;
7 printf(“打印100-999水仙花个数\n”);
8 for(i = 100;i<999;i++)
9 {
10 a = i/100;
11 b = i/10 %10;
12 c = i%10;
13 if(i == (aaa)+(bbb)+(ccc))
14 {
15 cout++;
16 printf("%d ",i);
17 }
18 }
19 printf(“水仙花个数为:%d\n”,cout);
20
21 return 0;
22 }


## **8.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。**



1 #include <stdio.h>
2 #include <string.h>
3
4 int main()
5 {
6 int i = 0,b = 0,c = 0,d = 0,e = 0;
7 char a[] = “ASsfDGG& adS A18”;
8 while(a[i] != ‘\0’)
9 {
10 if(a[i] >= ‘1’ && a[i] <= ‘9’)
11 {
12 b++;
13 }
14 else if(a[i] >= ‘a’ && a[i] <= ‘z’ || a[i] >= ‘A’ && a[i] <= ‘Z’)
15 {
16 c++;
17 }
18 else if(a[i] == ’ ')
19 {
20 d++;
21 }
22 else
23 {
24 e++;
25 }
26 i++;
27 }
28 printf(“数字的个数为:%d,字母的个数为:%d,空格的个数为:%d,其他符号的个数为:%d”,b,c,d,e);
29
30 return 0;
31 }


## **9.输出9\*9口诀。**



1 #include <stdio.h>
2 #include <string.h>
3
4 int main()
5 {
6 int i,j,num;
7 printf(“输出9*9乘法口诀\n”);
8 for(i = 1;i<=9;i++)
9 {
10 for(j = 1;j<=i;j++)
11 {
12 num = i * j;
13 printf(“%d * %d = %d “,i,j,num);
14 }
15 printf(”\n”);
16 }
17
18 return 0;
19 }


## **10.用\*打印菱形图案**



1 #include <stdio.h>
2 #include <string.h>
3
4 int main()
5 {
6 int i,j,k;
7 for(i = 1;i<=4;i++)
8 {
9 for(j = 0;j<4-i;j++)
10 {
11 printf(" “);
12 }
13 for(k = 0;k<(2i)-1;k++)
14 {
15 printf("
”);
16 }
17 printf(“\n”);
18 }
19
20 for(i = 1;i<=3;i++)
21 {
22 for(j = 0;j<i;j++)
23 {
24 printf(" “);
25 }
26 for(k = 0;k<7-(2i);k++)
27 {
28 printf("
”);
29 }
30 printf(“\n”);
31 }
32
33 return 0;
34 }


## **11.题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?有多少个。**



1 #include <stdio.h>
2 #include <string.h>
3
4 int main()
5 {
6 int a[] = {1,2,3,4};
7 int i,j,k,cout = 0;
8 for(i = 0;i<4;i++)
9 {
10 for(j = 0;j<4;j++)
11 {
12 for(k = 0;k<4;k++)
13 {
14 if(i != j && j != k && i != k)
15 {
16 printf(“%d%d%d “,a[i],a[j],a[k]);
17 cout++;
18 }
19 }
20 }
21 printf(”\n”);
22 }
23 printf(“可以组成%d个互不相同且无重复数字的三位数\n”,cout);
24 return 0;
25 }


## **12.求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。**



1 #include<stdio.h>
2
3 int main()
4 {
5 int a,n,s = 0,b;
6 printf(“请输入相加个数n和加数a\n”);
7 scanf(“%d%d”,&a,&n);
8 printf(“s = %d “,a);
9 b = a;
10 for(int i = 0;i<n-1;i++)
11 {
12 s = s + a;
13 a = b + (a * 10);
14 printf(”* %d “,a);
15 }
16 s = s + a;
17 printf(” = %d”,s);
18
19 return 0;
20 }


## **13.一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程 找出1000以内的所有完数。**


**https://blog.csdn.net/m0\_55028858/article/details/125577635**



1 #include<stdio.h>
2
3 int main()
4 {
5 int s;
6 for(int i = 2;i<1000;i++)
7 {
8 s = 0;
9 for(int j = 1;j<i-1;j++)
10 {
11 if(0 == i%j)
12 {
13 s = s + j;
14 }
15 }
16 if(i == s)
17 {
18 printf(“%d是完数\n”,s);
19 }
20 }
21 return 0;
22 }


## **14.一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?**


https://blog.csdn.net/qq\_45385706/article/details/110697089



1 #include<stdio.h>
2
3 int main()
4 {
5 double s = 100,h = s/2,k = 0;
6 for(int i = 0;i<9;i++)
7 {
8 k = k + (2 * h);
9 h = h/2;
10 }
11 k = k + s;
12 printf(“总共经过%lf米,第10次反弹的高度为%lf”,k,h);
13
14 return 0;
15 }


## **15.猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。**


## **以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。**



1 #include<stdio.h>
2
3 int main()
4 {
5 int y = 1;
6 for(int i = 0;i<9;i++)
7 {
8 y = (y + 1) * 2;
9 }
10 printf(“第一天总共有%d颗桃子\n”,y);
11
12 return 0;
13 }


## **16.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。**



1 #include<stdio.h>
2
3 int main()
4 {
5 double x = 2,y = 1,s = 0,x1 = 0;
6 for(int i = 0;i<20;i++)
7 {
8 s = s + (x/y);
9 x1 = x;
10 x = x + y;
11 y = x1;
12 }
13 printf(“前20项的和为%lf\n”,s);
14
15 return 0;
16 }


## **17.一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同**


https://blog.csdn.net/daonanya/article/details/123506362



1 #include<stdio.h>
2
3 int main()
4 {
5 int a = 12321,b,c,d,e;
6 b = a/10000;
7 c = (a%10000)/1000;
8 d = (a%100)/10;
9 e = a%10;
10 if(b == e && c == d)
11 {
12 printf(“是回文数\n”);
13 }
14 else
15 {
16 printf(“不是回文数\n”);
17 }
18
19 return 0;
20 }


## **18.两数之和**


https://blog.csdn.net/azulgrana02/article/details/109644046



1 #include
2 #include
3 #include<unordered_map>
4 using namespace std;
5
6 class node{
7 public:
8 vector twosun(vector& nums,int target)
9 {
10 unordered_map<int,int> record;
11 for(int i = 0;i<nums.size();i++){
12 int num = target - nums[i];
13 if(record.find(num) != record.end()){
14 return {record[num],i};
15 }
16 record[nums[i]] = i;
17 }
18 return {-1,-1};
19 }
20 };
21
22 int main()
23 {
24 node n;
25 vector cur;
26 vector nums = {2,7,11,15};
27 cur = n.twosun(nums,9);
28 for (auto i : cur)
29 cout << i << endl;
30
31 return 0;
32 }


## **19.整数反转**



1 #include
2 #include
3 using namespace std;
4
5 class node{
6 public:
7 int reverse(int x){
8 int ans = 0;
9 while(x){
10 ans = ans*10 + x%10;
11 x /= 10;
12 }
13 return ans;
14 }
15 };
16
17 int main()
18 {
19 node n;
20 cout << n.reverse(-123) << endl;
21
22 return 0;
23 }


## **20.合并区间(力扣56题)**



1 #include
2 #include
3 #include
4 using namespace std;
5
6 class node{
7 public:
8 vector<vector> merge(vector<vector>& cur){
9 vector<vector> ans;
10 sort(cur.begin(),cur.end());
11 int strat = cur[0][0],end = cur[0][1];
12 for(int i = 1;i<cur.size();i++){
13 if(cur[i][0]>end){
14 ans.push_back({strat,end});
15 strat = cur[i][0];
16 end = cur[i][1];
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数嵌入式工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!

img

img

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以+V:Vip1104z获取!!! (备注:嵌入式)

img

最后

资料整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!

43)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!

[外链图片转存中…(img-eVEoHUiU-1712393427844)]

[外链图片转存中…(img-VRhz9An0-1712393427845)]

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以+V:Vip1104z获取!!! (备注:嵌入式)

img

最后

资料整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!

更多资料点击此处获qu!!

  • 9
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值