via笔试

  1、A)为什么在c++中引用经c编译器编译的函数要加extern C?

         为了解决名称匹配的问题。

B)、c和c++中的struct有什么不同?c++中的struct和class有什么区别?
C中的 struct不允许有成员函数(不知道还有没有其他不同?)
默认情况下, C++中的struct的成员为public,而class的成员为private,其余完全相同。
2、在两块内存拷贝时应注意什么问题及解决方法?
检查边界(?)
3、化简if(((a|b)||(c&b)||(c&a))&&(a^b))
答: if(a^b)
4、下面两段汇编程序要实现什么?那段比较好?
a)     mov ebx, 0
mov edx, 0
LOOP:
bt eax, edx       ;将eax的第edx位送到ZF
jz NEXT                   ;该位为0,跳转到NEXT
inc ebx                     ;该位为1,ebx计数加一
NEXT:
inc edx                     ;edx加一,取下一位
cmp edx, 20h     ;检查edx是否超过32
jnz LOOP
b)     xor ebx, ebx       ;ebx置0
LOOP:
add eax, eax       ;eax自加,相当于左移1位,放入CF
adc ebx, 0         ;ebx=ebx+0+CF
test eax, eax       ;检查eax是否为0
jnz LOOP
答:统计 eax中1的位数。
5、一个数组下标的问题,很简单
6、下面程序的运行结果是什么?
void fn(char* a)
{
        char var[8];
        strcpy(var, a);
}
void main()
{
        char a[16] = “hi, S3 Graphics”;
        fn(a);
        printf(“%s”,a);
}
答:程序崩溃。这是由于 var溢出,覆盖了一些重要的栈信息。如下图:
 
 
7、union test {
char a;
struct {
       char b:4;
       char c:2;
};
       };
       如果test t={(char)0x55};请写出t.a,t.b和t.c的值?
答:共用体中的不同成员都在低端对齐,结构如下图:
 
    因此值分别为 0x55, 5, 1。
8、求x的值。
int func(int person)
{
     int temp = person + 1;
     int (*pf)(int) = func;
     char c='/2';                          // c的值为2
 
     while(temp%2)
            temp = 1 + (*pf)(temp);
 
     return (temp+1);
}
void main()
{
        int x = func(func(0));
}
答: x为7。
9、写一段求1000以内质数的程序。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值