易截截图软件、单文件、免安装、纯绿色、仅160KB

华为C/C++笔试题3

1. 找错
#define MAX_SRM 256
DSN get_SRM_no()
{
    static int SRM_no;
    int I;
    for(I=0;I<MAX_SRM;I++,SRM_no++)
    {
        SRM_no %= MAX_SRM;
        if(MY_SRM.state==IDLE)
        {
            break;
        }
    }
    if(I>=MAX_SRM)
        return (NULL_SRM);
    else
        return SRM_no;
}
答:
(1). SRM_no没有赋初值
(2). 由于static的声明,使该函数成为不可重入(即不可预测结果)函数,因为SRM_no变量放在程序的全局存储区中,每次调用的时候还可以保持原来的赋值。这里应该去掉static声明。
2. 写出程序运行结果
int sum(int a)
{
    auto int c=0;
    static int b=3;
    c+=1;
    b+=2;
    return(a+b+C);
}
  
void main()
{
    int I;
    int a=2;
    for(I=0;I<5;I++)
    {
        printf("%d,", sum(a));
    }
}
答:8,10,12,14,16
该题比较简单。只要注意b声明为static静态全局变量,其值在下次调用时是可以保持住原来的赋值的就可以。
3.
int func(int a)
{
    int b;
    switch(a)
    {
        case 1: b=30;
        case 2: b=20;
        case 3: b=16;
        default: b=0;
    }
    return b;
}
则func(1)=?
答:func(1)=0,因为没有break语句,switch中会一直计算到b=0。
4.
int a[3];
a[0]=0; a[1]=1; a[2]=2;
int *p, *q;
p=a;
q=&a[2];
则a[q-p]=?


相关文档:

C++中使用sqlite

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include ".\sqlite3_lib\sqlite3.h"
 
static int _callback_exec(void * notused,int argc, char ** argv, char ** aszColName)
{
    int i;
    for ( i=0; i<argc; i++ )
   ......

SQLite C/C++接口介绍

这篇文章是使用SQLite C/C++接口的一个概要介绍和入门指南。
由于早期的SQLite只支持5个C/C++接口,因而非常容易学习和使用,但是随着SQLite功能的增强,新的C/C++接口不断的增加进来,到现在有超过150个不同的API接口。这往往使初学者望而却步。幸运的是,大多数SQLite中的C/C++接口是专用的,因而很少被使用到。尽管有这 ......

C++与C混合编程(转)

(转)C++中extern “C”含义深层探索
 
 
1.引言
  C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象&rdquo ......

安装ubuntu下的c和java开发环境基础库

1、安装基础类库和man帮助文档等
sudo apt-get install  build-essential sun-java6-jdk debian-keyring g++-multilib g++-4.2-multilib gcc-4.2-doc libstdc++6-4.3-dbg equivs glibc-doc manpages-dev libstdc++6-4.3-doc diff-doc binfmt-support sun-java6-source  manpages manpages-posix manpages-posix- ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号