知名公司笔试题合集:编程与算法挑战
需积分: 9 15 浏览量
更新于2024-07-28
收藏 277KB PDF 举报
"46家公司笔试题.pdf"
这些题目来自46家知名公司的笔试题库,旨在测试应聘者在计算机科学和编程方面的技能。以下是部分题目及其解析:
1. Sony笔试题:
这是一个C语言的编程题,要求完成一个程序,根据已有的星号模式打印出完整的图案。根据给出的模式,这是一个逐行打印星号的程序。空白处可能需要添加循环和条件判断来控制星号的打印。例如,可以使用两个嵌套的for循环,外层循环控制行数,内层循环控制每行的星号个数。
```c
#include<stdio.h>
#define N 8
int main()
{
int i, j;
for (i = 1; i <= N; i++) {
for (j = 1; j <= i; j++)
printf("*");
printf("\n");
}
return 0;
}
```
2. 数组降序排序:
题目要求实现一个函数,对整型数组进行降序排列。这里可以使用冒泡排序、选择排序或快速排序等经典排序算法。以冒泡排序为例:
```c
#include<stdio.h>
void sort() {
int array[] = {45, 56, 76, 234, 1, 34, 23, 2, 3};
int n = sizeof(array) / sizeof(array[0]);
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - 1 - i; j++) {
if (array[j] > array[j + 1]) {
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
int main() {
sort();
return 0;
}
```
3. 费波那契数列:
费波那契数列是每个数等于前两个数之和。递归方式虽然直观,但对于较大的N可能会导致栈溢出。因此,一般推荐使用循环或者动态规划来计算。以下是使用循环的方式:
```c
#include<stdio.h>
int Pheponatch(int N) {
if (N <= 1)
return N;
int fib[N + 1];
fib[0] = 0;
fib[1] = 1;
for (int i = 2; i <= N; i++)
fib[i] = fib[i - 1] + fib[i - 2];
return fib[N];
}
int main() {
printf("The 10th is %d", Pheponatch(10));
return 0;
}
```
4. 程序错误分析:
这段代码试图定义一个二叉树节点结构体并创建一个全局指针`root`,然后调用`append`函数向树中添加元素。问题是`append`函数没有定义,而且没有初始化`root`。首先,我们需要定义`append`函数,其次,在`main`函数之前,需要将`root`初始化为`NULL`。
```c
#include<stdio.h>
#include<malloc.h>
typedef struct {
TNode* left;
TNode* right;
int value;
} TNode;
TNode* root = NULL;
void append(int N) {
// 定义并实现append函数,如插入节点
}
int main() {
append(63);
append(45);
// ...
}
```
以上是对题目中部分问题的解答,完整的解决方案需要根据具体题目要求补充完整代码。这些题目覆盖了基本的编程概念、数据结构(如数组和二叉树)以及算法(如排序和递归)。通过解决这些题目,应聘者可以展示他们的逻辑思维能力和编程技巧。
2022-07-13 上传
2022-07-13 上传
2022-07-14 上传
2022-07-14 上传
2021-09-27 上传
2021-10-08 上传
2021-04-15 上传
2023-08-28 上传
wangzhenghua123
- 粉丝: 0
- 资源: 11