根据给定文件中的内容,我们可以总结出以下几个重要的IT知识点: ### 1. 完成程序绘制图案 #### 题目描述: 给定一个程序框架,要求补全代码以输出特定的图案。 #### 示例代码: ```c #include<stdio.h> #define N 8 int main() { int i, j, k; for (i = 1; i <= N; i++) { for (j = 1; j <= N - i; j++) { printf(" "); } for (k = 1; k <= 2 * i - 1; k++) { if (k == 1 || k == 2 * i - 1 || i == N) { printf("*"); } else { printf("."); } } printf("\n"); } return 0; } ``` #### 解释: - 使用双重循环来控制每一行的输出。 - 第一个循环`for (i = 1; i <= N; i++)`用于控制行数。 - 内部的两个循环分别用于打印每行前面的空格和星号以及点号。 - 特别处理了第一行、最后一行以及每行的第一个和最后一个字符,以确保图案正确输出。 ### 2. 数组降序排序 #### 题目描述: 编写程序对数组进行降序排序。 #### 示例代码: ```c #include<stdio.h> void sort() { int temp; for (int i = 0; i < 9; i++) { for (int j = i + 1; j < 9; j++) { if (array[i] < array[j]) { temp = array[i]; array[i] = array[j]; array[j] = temp; } } } } int main() { int array[] = {45, 56, 76, 234, 1, 34, 23, 2, 3}; sort(); for (int i = 0; i < 9; i++) { printf("%d ", array[i]); } return 0; } ``` #### 解释: - 使用冒泡排序算法实现降序排列。 - 内部双层循环用于比较数组中的元素,如果前一个元素小于后一个元素,则交换它们的位置。 - 排序完成后输出数组中的所有元素,以验证排序结果。 ### 3. 费波那契数列求第10项 #### 题目描述: 编写程序求解费波那契数列的第10项。 #### 示例代码: ```c #include<stdio.h> int Pheponatch(int n) { if (n <= 2) return 1; return Pheponatch(n - 1) + Pheponatch(n - 2); } int main() { printf("The 10th is %d\n", Pheponatch(10)); return 0; } ``` #### 解释: - 使用递归方式计算费波那契数列的第n项。 - 当n等于1或2时,直接返回1(因为费波那契数列的前两项都是1)。 - 对于其他情况,递归调用自身计算前两项的和。 - 输出第10项的值。 ### 4. 程序崩溃分析 #### 题目描述: 给定的程序会在运行时崩溃,需要找出错误并改正。 #### 示例代码: ```c #include<stdio.h> #include<malloc.h> typedef struct { TNode* left; TNode* right; int value; } TNode; TNode* root = NULL; void append(int N) { TNode* NewNode = (TNode*)malloc(sizeof(TNode)); NewNode->value = N; NewNode->left = NULL; NewNode->right = NULL; if (root == NULL) { root = NewNode; return; } TNode* temp = root; while (temp != NULL) { if (N >= temp->value) { if (temp->right == NULL) { temp->right = NewNode; break; } temp = temp->right; } else { if (temp->left == NULL) { temp->left = NewNode; break; } temp = temp->left; } } } int main() { append(63); append(45); append(32); append(77); append(96); append(21); append(17); return 0; } ``` #### 解释: - 原始代码中存在逻辑错误,导致无限循环。 - 修改后的代码中,为新节点分配内存后,还初始化左右子节点为NULL。 - 在遍历过程中,使用`break`语句退出循环,避免无限循环问题。 ### 华为笔试题解析 1. **OSI七层模型**:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。 2. **TCP/IP五层模型**:物理层、数据链路层、网络层、传输层、应用层。 3. **IP协议**:位于网络层,负责分组的路由选择和转发,实现主机之间的数据报传送。 4. **TCP与UDP**:TCP是面向连接的传输层协议,提供可靠的数据传输服务;UDP是无连接的传输层协议,提供不可靠的数据传输服务。 5. **交换机实现原理**:工作在数据链路层,通过学习MAC地址表来决定数据帧的转发路径。 6. **路由器实现原理**:工作在网络层,通过查找路由表来决定数据包的转发路径。 7. **C++中的类与C中的struct区别**:在C++中,类默认的访问权限是私有的(private),而C语言中的struct默认是公有的(public)。 8. **析构函数与虚函数的作用**:析构函数用于释放对象占用的资源;虚函数支持多态性。 9. **全局变量与局部变量的区别**:全局变量在整个程序执行期间一直有效,可以在任何函数中访问;局部变量只在定义它的函数内部有效。 10. **8086系统**:8086是一个16位的系统,它具有20条地址线和16条数据线,可以寻址1MB的内存空间。 ### 联想笔试题解析 1. **atoi函数设计**:可以使用C标准库中的`strtol`函数来实现。 2. **表达式计算**:该表达式的结果取决于运算符优先级,最终输出`32`。 3. **局部变量、全局变量与静态变量**:局部变量在函数内部定义,生命周期仅限于该函数执行期间;全局变量在整个程序范围内有效;静态变量在声明时被初始化一次,之后保持不变。 4. **堆与栈的区别**:栈是在函数调用时自动分配的空间,用于存储局部变量等;堆是在程序运行时动态分配的内存空间,通常用于动态数据结构如动态数组、链表等。 5. **含参数的宏与函数优缺点**:宏展开速度快,但可能导致副作用;函数调用安全,但可能会有性能开销。 ### 普天C++笔试题解析 1. **双向链表节点删除与插入**:需要维护前后指针,更新相邻节点的指针指向。 2. **字符串处理**:使用循环遍历字符串,将每个字符替换为空格。 3. **Windows消息机制**:Windows应用程序的消息传递是基于消息队列的,程序通过`PeekMessage`或`GetMessage`函数从消息队列中获取消息,然后根据消息类型进行相应的处理。 以上就是从给定文件中的题目中提取出来的关键知识点。这些题目覆盖了编程基础、数据结构、网络协议等多个方面,对于准备参加IT行业的笔试和面试的人来说非常有用。
- xielang53422014-09-16招聘的又不一定懂计算机,大部分都是直接下载的,好点的在综合一下
- dooder_daodao2014-02-25不全是it公司的面试题吧,也有其它的一些题目
- Dawn45968752014-03-19it行业面试题,感觉跟很多大公司的题的类型很相像,顶一个
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助