« | July 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | |
| 公告 |
Work is not about right or wrong, it is
about success or failure. |
Blog信息 |
blog名称:ilife8 日志总数:151 评论数量:182 留言数量:7 访问次数:878868 建立时间:2007年9月12日 |

| |
[面试问题]某牛公司的C语言面试题 软件技术
Tintin 发表于 2007/9/22 19:03:48 |
用C语言(不许用C++)编写一个函数,调用这个函数可以对一个数组进行排序,这个数组可以是整型、浮点型等。函数头(返回类型、函数名、参数列表)自定。
分析:C不支持重载,不能用模板,这个该如何编呢?应该对算法没什么要求的! |
|
回复:某牛公司的C语言面试题 软件技术
Tintin发表评论于2007/9/22 19:50:37 |
传说中的qsort
void qsort( void *base, size_t num, size_t width, int (__cdecl *compare )(const void *, const void *) );ps:我是第一次听说 |
|
回复:某牛公司的C语言面试题 软件技术
Tintin发表评论于2007/9/22 19:49:00 |
easy ,不久前再这里学了可变多个参数的函数,用那个就行了,第一个参数是是int型表示数组长度,第二参数int来标志数据类型,函数体内的switch(第二个参数).第三个参数是指针了,随便传了.用宏估计是不可靠的,那个东西不是动态的.或者做个全局联合变量,调用的函数的时候就给个我上面写的前两个参数就ok,直接在全局变量里找数组.总之我觉得难点不过四怎么把数组指针传进去吧.指向函数的指针应该也可以,不过要强制转化一下参数类型吧(这个得先看下不同参数类型的指针是不是一样大,一样大绝对ok) |
|
回复:某牛公司的C语言面试题 软件技术
Tintin发表评论于2007/9/22 19:48:09 |
用宏:
#include "stdafx.h"
#include "stdio.h"
#define Sort(T, src, len) { \ int i = 0; \ while (i < len - 1) \ { \ int j = i + 1; \ while (j < len) \ { \ if (src[j] < src[i]) \ { \ T t = src[j]; \ src[j] = src[i]; \ src[i] = t; \ } \ j++;\ } \ i++;\ } \} \
int main(){ int int_array[8] = {9, 8, 5, 5, 3, 2, 1, 9}; double flt_array[8] = {9.5, 5.8, 5.4, 5.1, 3.9, 1.2, 0.1, 9.3}; char chr_array[8] = {'d', 'v', 'q', 'd', 't', 't', 'w', 'g'};
int i = 0;
Sort(int, int_array, 8); Sort(double, flt_array, 8); Sort(char, chr_array, 8);
for (i = 0; i < 8; ++i) printf("%d ", int_array[i]); printf("\n");
for (i = 0; i < 8; ++i) printf("%.2f ", flt_array[i]); printf("\n");
i = -1; for (i = 0; i < 8; ++i) printf("%c ", chr_array[i]); printf("\n");
return 0;} |
|
» 1 »
|