海尔嵌入式软件开发工程师笔试 9-27

《嵌入式软件开发笔试与面试手册》https://blog.nowcoder.net/zhuanlan/jvN8gj

《软件开发笔试汇总》https://blog.nowcoder.net/zhuanlan/0oDWVm

题型:编程题、C相关选择题、IOT相关内容

编程题(核心代码模式)

第一题

长数字的可能性

SamwellN个碗排成一条直线,并在每个碗中随机放置几个弹球,使得:

1.一个碗一次最多只能有9个弹球。

2.一个碗可以有0个弹球。

现在,Samwell的朋友在最后一碗里又加了一个弹球。加了这个弹球后,所有碗仍必须符合上述规则。加入弹球遵循与加入遗留弹球相同的规则。

您会得到每个碗中弹球数量的初始列表。找到上次修改的碗的位置。(假设下标从1开始)

:如果出现必须再增加一个碗的情况,则输出0

输入规范:

输入1:N,碗的数量。

输入2:包含每个碗里的弹球数量的数组。

输出规范:

上次修改的碗的位置。

1:

输入1:2

输入2:{9,9}

输出:0

说明:

当我们在最后一个碗中加入1个弹球时,碗的新配置为{0,0}。没有上次修改的碗。

2:

输入1:5

输入2:{1,2,9,9,9}

输出:2

说明:

当我们在最后一个碗中加入1个弹球时,碗的新配置为{1,3,0,0,0}

2号碗是上次修改的。

int lastModified(int N, int bowls[]) {
    int index = N - 1; // 从最后一个碗开始
    int carry = 1; // 表示需要加入的弹球数量

    while (index >= 0 && carry > 0) {
        bowls[index] += carry;
        if (bowls[index] > 9) {
            bowls[index] = 0;
            carry = 1;
        } else {
            carry = 0;
        }
        index--;
    }

    if (carry > 0) {
        return 0;
    } else {
        return index + 2; // 因为下标从1开始,所以需要加2
    }
}

第二题

儿童节

儿童节时,一位老师想给所有学生分发糖果。她有N颗糖果,每颗糖果都有一个特殊值。她希望所有的糖果都有相同的特殊值,所以她决定减小一些糖果的特殊值。然而,不能减小全部糖果的特殊值。

因此,她决定减小尽可能多的糖果特殊值,使得至少K颗糖果具有相同的特殊值并且该值必须尽可能大。求出这个老师能够达到的最大值。

输入规范:

输入1:N,糖果总数

输出2:K,具有相同的特殊值的糖果

输出3:in表示糖果特殊值的数组

输出规范:

返回这个老师能够达到的最大值。

1:

输入1:3

输入2:2

输入3:{26,20,23}

输出:23

说明:

在这里,老师可以将第一个糖果的特殊值减小到23,因此,至少有两颗糖果的特殊值为23.

2:

输入1:6

输入2:4

输入3:{100,20,40,20,50,50}

输出:40

说明:

在这里,我们需要让4颗糖果的特殊值相等。因此,我们可以将值1005050减小到40,并且已经有一颗糖果的特殊值为40。因此,我们得到了4颗值为40的糖果。

int candies(int N, int K, int candies[]) {
    // 冒泡排序,用于降序排序
    for (int i = 0; i < N - 1; i++) {
        for (int j = 0; j < N - i - 1; j++) {
            if (candies[j] < candies[j + 1]) {
                int temp = candies[j];
                candies[j] = candies[j + 1];
                candies[j + 1] = temp;
            }
        }
    }

    int maxValue = 0;
    for (int i = 0; i <= N - K; i++) {
        if (candies[i + K - 1] > maxValue) {
            maxValue = candies[i + K - 1];
        }
    }

    return maxValue;
}

C相关内容

问题1

您会从列出的选项中选择哪项插入到给定程序中的缺失代码位置,使得在传递的输入为12 56 34 22 89时能够输出如下所示的结果?分析给定的选项并选择正确的答案。

输出:56 34 22 89 12

#include <stdio.h>
#include <stdlib.h>
int* Calculate(int* arr,int num){
	int temp=arr[0];

	for(int i=0;i<num;i++){
	// Missing Code
	}

	return arr;
}
int main(){

	int num;	
	printf("Enter no. elements:");
	scanf("%d",&num);
	int* arr=(int*)(malloc(sizeof(int)*num));
	printf("Enter array elements:n");
	for(int i=0;i<num;i++)
		scanf("%d", &arr[i]);
	arr=Calculate(arr,num);
	printf("Result:in");
	for(int i=0;i<num;i++)
		printf("%d ", arr[iJ);

	return 0;
}

选择一个选项

A

if(i==num)

arr[i]=temp;

else

arr[i]=arr[i];

B

if(i==num-1)

arr[i]=temp;

else

arr[i]=arr[i+1];

C

if(i==num+1)

arr[i]=temp+1;

else

arr[i]=arr[i];

D

if(i==num-1)

arr[i]=temp+1;

else

arr[i]=arr[i]+1;

 

问题2

参考给定的代码并找出其正确的输出结果:

#include <stdio.h>
int main(void)
{
	int myarr[6] =(10,20,30,40,50,60];
	for (int i =0;i<6; i++)
	{
		printf("%d ", myarr[i]);
	}
	printf("\n");
	
	myarr[0] =50;
	myarr[2] =60;
	myarr[5]=70;
	
	for (int i =0;i<6;i++)
	{
		printf("%d ",myarr[i]);
		printf("%d ", myarr[i]);
	}
}

分析给定的选项并选择适当的答案。

选择一个选项

A

10 20 30 40 50 60

50 20 60 40 50 70

B

10 20 30 40 50 60

50 50 50 20 20 20 60 60 60 40 40 405050 50 70 70 70

C

10 20 30 40 50 60

20 20 60 60 40 40 70 70

D

10 20 30 40 50 60

50 50 20 20 60 60 40 40 50 50 70 70

 

问题3

如果传递的输入是45,那么给定的C程序的输出是什么?

#include<stdio.h>
int main()
{	
	int num,num1[50],i=0;
	printf("Enter number:");
	scanf("%d", &num) ;
	while(num!=0)
	{
		num1[i] =num%2;
		i++;
		num = num/2;
	}
	
	printf("\nResult =");
	for(i=(i-1);i>=0;i--)
		printf("%d", num1[i]);
	
	return 0;
}

从给定的选项中选择适当的答案。

选择一个选项

Result =101101

Result =101111

Result =111101

Result =111110

 

问题4

以下C语言程序的输出结果是什么?

#include <stdio.h>

int main()
{
	int i,j;
	for(i=1;i<=3;i++){
		for(j=1;j<=3;j++){
			i++;
			if(j==2){
				continue;
			}
			printf("%d",j);
		}
		printf("%d",i);
	}
	return 0;
}

选择一个选项

123

134

124

122

 

问题5

以下那些存储类具有全局作用域?

选择一个选项

Auto

Register

Extern

所有选项均不确

 

问题6

在执行以下这段代码时,会显示哪个给定的值?

#include<stdio.h>

#define MAIN main()

#define BEG {

#define END }

MAIN

BEG

printf("wow");

END

 

选择一个选项

Compile ti

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

本专栏主要发布嵌入式软件开发相关岗位2023年(2024届)的笔试真题(嵌入式软件开发、通用软件开发、C/C++软件开发、算法工程师、数据开发、测试开发等)主要是算法编程题,其中一些岗位笔试含有对应的选择题、填空题、简单题。

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-13 10:48
海尔 嵌入式软件开发 总包25W 硕士985
点赞 评论 收藏
分享
点赞 6 评论
分享
牛客网
牛客企业服务