"这篇资源主要涉及的是求职笔试中的一道编程问题,问题出现在TC2.0环境下使用scanf函数处理浮点数输入时遇到的错误。此外,还提及了微软面试的一些特点和迷语类试题的例子。"
在求职过程中,笔试是筛选候选人的一个重要环节,特别是对于IT行业的职位来说,编程能力的测试往往必不可少。资源中的问题描述了一个在TC2.0编译环境下运行的C语言程序,该程序旨在从用户那里接收浮点数输入并将其存储在动态分配的内存中。然而,当尝试使用`scanf`函数以 `%f` 格式读取浮点数时,程序会报错:“floating point formats not linked” 并异常终止。
这实际上是一个已知的TC2.0的bug,因为它不支持直接通过`scanf`读取浮点数到数组中。为了解决这个问题,一种常见的方法是引入一个中间变量,先将浮点数输入到这个变量,然后再赋值给数组元素。例如,可以增加一个`float temp`变量,修改代码如下:
```c
#include "stdio.h"
#include "stdlib.h"
main()
{
float *a;
a = (float *)malloc(10 * sizeof(float));
printf("Please input:");
float temp;
scanf("%f", &temp); // 使用临时变量temp
a[0] = temp; // 将temp的值赋给a[0]
printf("What you have input is %f\n", *a);
getch();
free(a);
}
```
此解决方案有效地绕过了TC2.0的这个限制,使程序能正常运行并获取用户输入的浮点数。
同时,资源中也提到了微软面试的一些特点。微软的面试以其严谨著称,竞争激烈,录取比例大约是60:1。面试题型多样化,包括迷语、算法、应用程序和智力题等。给出的迷语例子展示了面试中可能会遇到的逻辑思维题,如:为什么下水道的盖子是圆的?这类问题通常要求应聘者展现出创造性思维和问题解决能力。
微软面试的其他题型,比如算法题,可能会涉及到数据结构、排序、查找等问题;应用程序题可能需要解决实际编程问题,而智力题则测试应试者的逻辑推理和快速计算能力。例如,如何在只允许两次断裂的情况下,将一条金条分给工作七天的工人,或者计算在两辆相对行驶的火车上,一只以特定速度飞行的鸟所行的距离。
对于求职者来说,不仅需要扎实的编程技能,还需要具备良好的问题解决能力和创新思维,这些都是在类似微软这样的顶级公司面试中脱颖而出的关键。