文章标签 ‘面试题’
介绍C++中内存对齐的概念,讨论常见内存对齐面试题的解答,最后提出建议:在提供函数库给其他人时,最好在头文件中用#pragma pack指定内存对齐方式
假设有一个随机函数 int Random(),其产生的数值区间为 0 到8,请利用这个随机函数构造能够产生随机数范围是0到90的随机函数。
这个题目换一种思考方式就可以了,如果 Random 产生数值区间是0到9,那么我们用它来构造随机数,可以这样做:
用 Random 随机产生一个数,代表 个位数
再产生一个数,代表十位数
我们把两个数组合起来,就可以代表0到99中的任何一个数,而且这种组合方式是完全随机的,因此我们就得到了0到99的一个随机函数:
int Random99()
{
return 10*Random() + Random();
}
好吧,现在Random并不是0到9,而是0到8,这也没关系,我们用0-9的随机函数可以构造10进制数字,那为什么不能用0-8的随机函数构造9进制的数呢? 虽然9进制我们没有接触过,但并不代表我们不能使用它啊。一个二位的9进制数,最大可以为:
88,也就是 8 * 9 + 8 = 80,不过90,那么我们用三位的9进制数就可以了,所以我们的随机函数为:
Switch two numbers in place is an old classic algorithm. This article introduces two typical methods to do this work.
请问一下程序输出什么?
这道题目考察变量在内存中如何存储,请参考
C++内存布局
原题如下:
#include<stdio.h>
#include<iostream.h>
void main()
{
char str1[] = "abc";
char str2[] = "abc";
const char str3[] = "abc";
const char str4[] = "abc";
const char* str5 = "abc";
const char* str6 = "abc";
cout << [...]
有一个水果箱(box),箱子里装有水果(fruit)。每一种水果都有不同的重量(weight)和颜色(color),水果有:苹果(apple),梨(pear)。可以向水果箱(box)里添加水果(addFruit),也可以取出水果(getFruit)。请编写C#代码实现上述功能。
printf 函数用于输出内容到显示终端上,是我们在写控制台程序时用得最多的函数,其原型如下:
int printf(const char *format, … );
关于两个参数好像没什么好介绍的,基本上大家都知道一点。不过对于其返回值,好像笔试面试时会问到,但很多人都不会很关注。
printf函数在打印成功时,会返回打印的字符的个数。如果打印失败,则会返回一个负数。如果传入的参数 format 为NULL,则printf函数会返回-1,并将errno设置为EINVAL。
printf 函数家族还有几个兄弟姊妹,只是我们平时给予printf函数的关注太多,而忽略了其他几个版本,printf 函数家族的成员如下:
int printf(
const char *format [,
argument]…
);
int _printf_l(
const char *format,
locale_t locale [,
argument]…
);
int wprintf(
const wchar_t *format [,
argument]…
);
int _wprintf_l(
[...]
