加载中…
个人资料
青雪落幕
青雪落幕
  • 博客等级:
  • 博客积分:0
  • 博客访问:32,178
  • 关注人气:12
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

华为竞赛题

(2011-01-03 19:32:20)
标签:

杂谈

2009年华为软件设计大赛两道编程题

编程题(共2题,第1题40分,第2题30分。请上机编写程序,按题目要求提交文件。本试题采用自动测试用例进行评分,测试用例不对考生公开?,凡不满足提交要求导致不能编译或用例不通过,不予评分)。

1. 报数游戏
问题描述:
设有N个人围坐一圈并按顺时针方向从1到N编号,从第S个人开始进行1到M报数,报数到第M个人时,此人出圈,再从他的下一个人重新开始1到M的报数,如此进行下去直到所有的人都出圈为止。现要打印出出圈次序。 
要求实现函数:
void circle_sort (int n, int s, int m, int *p)
输入:n 游戏总人数  s 报数的起始编号  m 报数的数值   
输出:p 指向长度为n的数组,出圈次序保存在p指向的数组中
示例
   n=7 s=2 m=3  出圈次序为:4 7 3 1 6 2 5
   n=3 s=1 m=2  出圈次序为:2 1 3 


2. 实现子串查找程序
问题描述:
判断一个字符串(dst)是否是另一个字符串(src)的子串;
输出子串在母串中的第一次出现的起始位置;
匹配的时候不区分大小写;
不能使用库函数(使用库函数按0分计算);
要求实现函数:
unsigned int str_str(char * src, char *dst);
返回:如果dst是src的子串 则返回起始位置       如果不是 则返回0
输入:src 指向母串的指针; dst 指向子串的指针
示例
src->akrsd5859  dst->rsd
则返回3
src->Rstsawerst36ds  dst->rst
则返回8
src->dfsge         dst-> dfsgesa
则返回0


2010年华为软件设计大赛试卷

类别:软件C++语言 初级

 

 

 

编程题(共3题,第1题20分,第2题30分,第3题50分。请上机编写程序,按题目要求提交文件。[详见考试说明]

本试题采用自动测试用例进行评分,测试用例不对考生公开,凡不满足提交要求导致不能编译或用例不通过,不予评分)。

 

1. 字符统计

    * 问题描述:

实现一个函数,要求输入一个字符串,分别统计出其中 “英文字母”、“数字”、“空格”、“其它字符”的个数。

    * 要求实现函数:

void count(const char *input, unsigned int * letters, unsigned int * numbers, unsigned int * blanks, unsigned int * others)

输入:input 输入的字符串

输出:letters 输出其中的“英文字母”个数, numbers输出其中的“数字”个数,blanks输出其中的“空格”个数,others输出其中的“其他字符”个数

    * 示例

        输入:input=“aBc 12%”;输出:letters=3, numbers=2, blanks=1, others=1

  输入:input=“1”;输出:letters=0, numbers=1, blanks=0, others=0

 

 

2. 数制转换

    * 问题描述:

在32位处理器上,将任一整数转换为二进制形式。

    * 要求实现函数:

void DecToBin (unsigned int iDec, char pBin[32])

输入:iDec 需要转换的十进制整数

输出:pBin 转换为二进制后的字符串,高位在左边,不足32位补0

    * 示例

输入:123  输出:{“00000000000000000000000001111011”}

 

 

3. 打鱼还是晒网

    * 问题描述:

中国有句俗话叫“三天打鱼两天晒网”,某人从1990年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天是“打鱼”还是“晒网”?

(需要考虑闰年:年数“能被4除尽且不能被100除尽”或“直接能被400除尽”看做闰年,如2000年是闰年,而1900年不是)

    * 要求实现函数:

int isWorking(unsigned int year, unsigned int month, unsigned int day);

输入:year,month,day 分别为年,月,日

返回:int类型,如果是“打鱼”,就返回1;如果是“晒网”,就返回0

    * 示例

输入:year=1990,month=1,day=5;函数返回:0

 



#include "func.h"
#include <stdio.h>
#include <stdlib.h>

void count(const char *input, unsigned int * letters, unsigned int * numbers, unsigned int * blanks, unsigned int * others)
{
    *letters=0;
 *numbers=0;
 *blanks=0;
 *others=0;
 int i;
 for(i=0;input[i]!='\0';++i)
 {
  if((input[i]>='a'&&input[i]<='z')||(input[i]>='A'&&input[i]<='Z'))
   ++(*letters);
  else if(input[i]>='0'&&input[i]<='9')
   ++(*numbers);
  else if(input[i]==' ')
   ++(*blanks);
  else
   ++(*others);
 }
}

void DecToBin(unsigned int iDec, char pBin[32])
{
 int index=0,i;
 char ans[50];
 for(i=0;i<50;++i)
  ans[i]='0';
    while(iDec)
 {
  ans[index++]=iDec%2+'0';
  iDec/=2;
 }
 int x=0;
 for(i=31;i>=0;--i)
  pBin[x++]=ans[i];
 pBin[32]='\0';
}

int isWorking(unsigned int year, unsigned int month, unsigned int day)
{
 int ans=0;
 int rn[]={1,31,29,31,30,31,30,31,31,30,31,30,31};
 int pn[]={1,31,28,31,30,31,30,31,31,30,31,30,31};
 int i;
 for(i=1990;i<year;++i)
 {
  if((i%400)==0||(i%4==0&&i%100!=0))
   ans+=366;
  else
   ans+=365;
 }
 for(i=1;i<month;++i)
 {
  if((year%400)==0||(year%4==0&&year%100!=0))
   ans+=rn[i];
  else ans+=pn[i];
 }
 ans+=day;
 while(ans>5)
  ans-=5;
 if(ans<=3)
  return 1;
 else
  return 0;
}





void TestEntry()
{printf("%d\n",isWorking(1990,1,5));
   

   

   
   
类别:软件C++

第一部分:客观题

客观题部分,共30分,建议这部分答题用40分钟。

一、   单选题 (每题1分,共10题)
1、 下列那种不是任务间通讯的方式____
A)信号量
B)消息队列
C)共享内存
D)中断

2、 以下叙述中不正确的是____
A)在不同的函数中可以使用相同名字的变量
B)函数中的形式参数是局部变量
C)在一个函数内定义的变量只在本函数范围内有效
D)在一个函数内的复合语句中定义的变量在本函数范围内有效(复合语句指函数中的成对括
号构成的代码)

3、 若整型变量a的值为50,则c语言表达式a>>2的值为____
A)50
B) 25
C) 12.5
D) 12

4、 下面方法中,哪一个不能很好解决死锁问题?____
A) 给每一个进程不同的优先级,并按照优先级的大小决定在资源队列中的顺序。
B) 让进程开始运行时获得全部的资源,在不能获得全部资源时重新启动。
C) 给资源编号,并要求进程按照编号的顺序申请资源。
D) 提供超时机制,在进程进入资源等待后一段随机时间内重起进程。

5、 下面的程序是对二叉树的前序遍历,请写出下面空格中的语句____
其中,Visit函数表示访问节点数据。
void PreOrder(BinaryTreeNode *t)
{
    // 对* t进行前序遍历
    if (t)
    {
        (_1_);
        (_2_);
        (_3_);
    }
}
A) PreOrder(t->LeftChild)   Visit(t)   PreOrder(t->RightChild)
B) PreOrder(t->LeftChild)   PreOrder(t->RightChild)   Visit(t)
C) Visit(t)   PreOrder(t->RightChild)   PreOrder(t->LeftChild)
D) Visit(t)   PreOrder(t->LeftChild)   PreOrder(t->RightChild)

6、 已知int a[]={10,9,8,7,6}; int *p = a;则(*(p+1))*(p+2)[2]的值是____
A)72
B)80
C)54
D)有语法错误

7、 下面关于new 和delete操作符的说法,哪个是不正确的____
A)使用new操作符,可以动态分配全局堆中的内存资源
B)若p的类型已由A*强制转换为void *,那么执行语句delete p;时,类A的析构函数不会
被调用
C)new和delete通常成对地使用
D)执行语句A * p=new A[100];时,类A的构造函数只会被调用1次

8、        如下代码,正确的是____
class CExample
{
public:
    static void Func( void* pobj );
private:
    char m_cTest;
};
A) void CExamle::Func( void* pobj )
{
    m_cTest = ( char )0;
}
B) 在Func内部不能访问类的私有成员m_cTest;
C) void CExample::Func( void* pobj )
{
    CExample *pThis;
    pThis = dynamic_cast< CExample* >( pobj );
    ASSERT( NULL != pThis );
    pThis->m_cTest = ( char )0;
}
D) void CExample::Func( void* pobj )
{
    CExample::m_cTest = ( char )0;
}

9、        对于下面的类CA,在32位计算机、4字节对齐的情况下,sizeof(CA) = ____
class CA
{
public:
    CA();
    virtual ~CA();
private:
    int m_iTime;   
public:
    int GetTime();
    int SetTime(int iTime);
};
A)16
B)12
C)8
D)4

10、    对于下面的代码,描述正确的是____
class A
{
public:
    virtual void test();
};
class B: public A
{
public:
    void test();
    ...
};
class C: public B
{
public:
    void test();
    ...
};

A) B类的test函数是虚函数,而C类的也是
B) B类的test函数不是虚函数,C类的是
C) B类的test函数是虚函数,而C类的不是
D) C类的test函数不是虚函数


二、   多选题 (每题2分,共10题,少选可得1分)
11、 关于变量定义,下列说法正确的有____
A)公共变量是增大模块间耦合的原因之一,故应减少没必要的公共变量以降低模块间的耦
合度
B)命名中若使用特殊约定或缩写,则要有注释说明
C)变量名的命名要清晰、明了,有明确含义
D)除非必要,不要用数字或较奇怪的字符来定义标识符

12、 请找出以下程序中的错误,不考虑命名规范和排版的问题____
long strlen(char *p )
{
ASSERT(p);
long i = 0;
while (*p)
{
i++;
    p++;
}
return i;
}

ShowErrMsg(char *msg)
{
int nCount = 1;                         -------A
if (msg == NULL) return;
char *pBuf = (char *)malloc(256);       -------B
if (pBuf == NULL) return;
if ( strlen(msg) > 256 )                               
{
strncpy(pBuf, msg, 256);
    pBuf[256] = ‘\0’;
}
else
{
strcpy( pBuf, msg);                 -------C
}
printf( "No. %d: This message is: %s\n", nCount, pBuf );
nCount++;
pBuf = NULL;                            -------D
}

13、 下列代码中对const关键字的使用是正确并有意义的____
class SomeClass
{
private:
int m_nValue;
char* m_pszName;
public:
SomeClass(int id);
int GetValue() const;   //---------------- A
void SetValue(const int value);   //------ B
const char* GetName(); //---------------- C
void SetName(const char* pszName);   //--- D
void DoSomething(char* const p); //------ E
}

14、 多任务系统中,任务所具有的基本状态有____
A)就绪
B)执行
C)阻塞
D)挂起

15、 下列说明哪些是正确的____
A)一个类必须至少提供一个构造函数
B)缺省构造函数是指不用指定任何实参就能被调用的构造函数,这并不意味着它不能接受
实参
C)父类的构造函数肯定在子类的构造函数之前被调用
D)如果一个类不显式地提供缺省构造函数则编译器会自动生成一个以初始化其数据成员
E)子类的析构函数中要调用父类的析构函数以确保父类的成员被释放
F)构造和析构函数中不应该调用虚函数

16、 在一个老版本代码中已经声明了myfunc函数:int myfunc(int a,double b),小李在
开发新版本时增加了如下几个函数声明,请问哪些不是对老版本函数的重载声明____
A)int myfunc(int c, double d)
B)int myfunc(int a,double b=0.5)
C)double myfunc(int , double )
D)int myfunc(double b,int a)

17、 类B的析构函数不为virtual,类D是类B的子类,并且是public继承的,B和D都定义了
缺省的构造函数,下面正确代码段有____
A)B* pb = new B;delete pb;
B)D* pd = new D;delete pd;
C)B* pb = new D;delete pb;
D)D d;B* pb = &d;

18、 假定类CA的声明如下, 下面哪些语句声明了a是CA的对象____
class CA
{
public:
CA ();
CA (int iValue);
... ...
};

A)CA a;
B)CA a();
C)CA a(100);
D)CA a = 100;

19、 下面关于指针和引用的说法正确的是____
A)指针变量存放的是内存地址,并且可以置为0
B)定义引用变量时,必须同时指明具体被引用的对象或变量
C)使用取地址操作符,可以取得指针变量自身的地址,但取不到引用变量自身的地址
D)类中的数据成员可以是指针变量,但不能是引用变量

20、              下列代码中正确的有____
A)char* p = malloc(100); free(p);
B)char* p = malloc(100); delete p;
C)char* p = new char[100]; delete p;
D)char* p = new char[100]; delete[] p;
E)char p[100]; delete[] p;
F)char p[100]; delete p[100];

 
三、 编程题(共2题,第1题40分,第2题30分。请上机编写程序,按题目要求提交文件。本
试题采用自动测试用例进行评分,测试用例不对考生公开?,凡不满足提交要求导致不能编
译或用例不通过,不予评分)。

1. 报数游戏
问题描述:
设有N个人围坐一圈并按顺时针方向从1到N编号,从第S个人开始进行1到M报数,报数到第M
个人时,此人出圈,再从他的下一个人重新开始1到M的报数,如此进行下去直到所有的人都
出圈为止。现要打印出出圈次序。 
要求实现函数:
void circle_sort (int n, int s, int m, int *p)
输入:n 游戏总人数 s 报数的起始编号 m 报数的数值   
输出:p 指向长度为n的数组,出圈次序保存在p指向的数组中
示例
        n=7 s=2 m=3 出圈次序为:4 7 3 1 6 2 5
   n=3 s=1 m=2 出圈次序为:2 1 3

2. 实现子串查找程序
问题描述:
判断一个字符串(dst)是否是另一个字符串(src)的子串;
输出子串在母串中的第一次出现的起始位置;
匹配的时候不区分大小写;
不能使用库函数(使用库函数按0分计算);
要求实现函数:
unsigned int str_str(char * src, char *dst);
返回:如果dst是src的子串 则返回起始位置
      如果不是 则返回0
输入:src 指向母串的指针; dst 指向子串的指针
示例
src->akrsd5859 dst->rsd
则返回3
src->Rstsawerst36ds dst->rst
则返回8
src->dfsge         dst-> dfsgesa
则返回0


第一部分:客观题

客观题部分,共30分,建议这部分答题用40分钟。

一、   单选题 (每题1分,共10题)

1、以下叙述中不正确的是______。?

A) 在不同的函数中可以使用相同名字的变量

B) 函数中的形式参数是局部变量

C) 在一个函数内定义的变量只在本函数范围内有效

D).在一个函数内的复合语句中定义的变量在本函数范围内有效(复合语句指函数中的成对括号构成的代码)?

2、下列全局变量定义中,正确的是:______。

A) char abc [] [];

B) char abc [] [NUM];

C) char abc [NUM] [];

D) char abc [0];

3、关于断言,错误的说法是:______。

A) 我们可以使用断言来发现软件问题。

B) 在正式发布的软件版本中也要保留断言,以便于定位问题。

C) 断言不能用于对外部输入数据的判断,只能用于程序内部逻辑的判断。

D) 不能用断言来代替错误处理。

4、关于函数参数,正确的说法是______。

A) 防止将函数的参数作为工作变量。

B) 应该为函数功能的扩展预留尽可能多的参数接口。

C) 通常函数内部会对函数参数进行合法性检查,为了提高效率,函数调用者不需要再次进行参数合法性检查。

D) 不要输入指针变量。

5、关于函数实现,下面不正确的说法是______。

A) 为简单功能编写函数。

B) 函数的功能应该是可以预测的,也就是只要输入数据相同就应产生同样的输出。

C) 防止把没有关联的语句放到一个函数中。

D) 为了增强函数的可用性,应尽量设计多用途面面俱到的函数。

6、关于函数,不正确的说法是______。

A) 如果多段代码重复做同一件事情,那么在函数的划分上可能存在问题。

B) 功能不明确较小的函数,特别是仅有一个上级函数调用它时,应考虑把它合并到上级函数中,而不必单独存在。

C) 对所调用函数的错误返回码可以根据需要决定是否处理。

D) 对于提供了返回值的函数,在引用时最好使用其返回值。

7、编程中下面说法错误的是______。

A) 编程时,要防止差1错误。如:把“<=”误写成“<”或“>=”误写成“>”。

B) 系统运行之初,要初始化有关变量及运行环境,防止未经初始化的变量被引用,但可以使用操作系统的默认初始化值。

C) 有可能的话,if语句尽量加上else分支,对没有else分支的语句要小心对待;switch语句必须有default分支。

D) 要时刻注意易混淆的操作符,如C/C++中的“=”与“==”、“|”与“||”、“&”与“&&”等。当编完程序后,应从头至尾检查一遍这些操作符,以防止拼写错误。

8、如果有下列定义:?

?char acX[ ]= "abcdefg";?

?char acY[ ]= {'a','b','c','d','e','f','g'};?

?下面四个说法中正确的是:______。

?A) 数组acX和数组acY等价

B) 数组acX和数组acY的长度相同

?C) 数组acX的长度大于数组acY的长度

D) 数组acX的长度小于数组Y的长度

9、假设执行语句 S 的时间为 O(1) ,则执行下列程序短的时间为______。

for(i=1;i<=n;i++) ? {

for(j=i;j<=n;j++) {

S;

}

}

A) O(n)

B) O(n2)

C) O(n*i)

D) O(n+1)

?

10、设有 98 个已排序列元素,采用二分法查找时,最大比较次数是______。

A) ?49  

B) ?15   

C) ?20   

D) ?7 ?

二、   多选题 (每题2分,共10题,少选可以得1分)

11、 关于全局变量的注释,哪些描述是正确的?______。

A) 全局变量要有较详细的注释

B) 注释包括功能、取值范围等

C) 如果全局变量的命名是充分自注释的,则可以不加注释

D) 注释可以包括使用方法

12、 关于变量,正确的说法是:______。

A) 在对变量声明的同时,应对其含义、作用及取值范围进行注释说明,同时若有必要还应说明与其它变量的关系;

B) 对公共变量赋值时,若有必要应进行合法性检查,以提高代码的可靠性、稳定性;

C) 构造仅有一个函数可以修改,而其余函数只读的全局变量,可防止函数的不可重入性;

D) 不同的编译器对变量的默认初始化是不同的。为了避免不同编译器引起的差别,对变量,尤其是指针变量,强烈推荐在使用前将其初始化。

13、 下面关于资源分配的说法正确的是:______。

A) 只引用属于自己的存贮空间。

B) 防止引用已经释放的内存空间。

C) 过程/函数中分配的内存,在过程/函数退出之前要释放。

D) 过程/函数中申请的(为打开文件而使用的)文件句柄,在过程/函数退出之前要关闭。

14、 如果不使用常量,直接在程序中填写数字或字符串,将会有什么麻烦?______。

A) 程序的可读性(可理解性)变差。程序员自己会忘记那些数字或字符串是什么意思,用户则更加不知它们从何处来、表示什么。

B) 如果要修改数字或字符串,则会在很多地方改动,既麻烦又容易出错。

C) 在程序的很多地方输入同样的数字或字符串,难保不发生书写错误。

D) 程序无法编译。

15、 关于宏define SQUARE(a)((a)*(a))正确的用法是______。

A) b = SQUARE( a++ );

B) b = SQUARE( a ) ; a++ ;

C) b = SQUARE( a --) ; a-- ;

D) b = SQUARE( a) ; a-- ;

16、 以下对结构(struct)和联合(union)的说法正确的有:______。

A) 结构和联合都是由多个不同的数据类型成员组成;?

B) 在任何同一时刻, 联合中只存放了一个被选中的成员;?

C) 在任何同一时刻,都可以访问结构和联合的所有成员;? ?

D) 对于结构和联合的不同成员赋值是互不影响的。 ?

17、 关于编译预处理程序的功能包括但不限于:?______。

A) 宏定义;?

B) 条件编译;?

C) 在源代码中插入预定义的环境变量;?

D) 打开或关闭某个编译选项。?

18、 下列extern "C" 的用法,哪些是正确的:______。

A) 在C++中引用C语言中的函数和变量;?

B) 引用其它文件定义的函数和变量;?

C) C++实现的DLL,导出动态连接符号给C语言代码使用;?

D) 引用其它C程序定义的函数和变量。

19、 下面哪些是sprintf函数正常使用出现情况:______。 ?

A) 输出缓冲区太短,出现溢出;

B) 参数多于格式符的数目;

C) 多线程同时用不同缓冲区调用sprintf;

D) %s格式符对应了空指针。

20、              关于关于数组和指针描述正确的是:______。?

A) 数组可以在静态存储去或者栈上创建?;

B) 指针可以随意指向任意类型的内存单元?;

C) 用sizeof运算符可以计算出数组的容量(字节数),而不能用sizeof()计算出指针p所指向的内存容量;?

D) 当指针p指向常量字符串时,也可以向字符串数组那样修改其中的某个字符。?

三、             编程题(共2题,第1题40分,第2题30分。请上机编写程序,按题目要求提交文件。本试题采用自动测试用例进行评分,测试用例不对考生公开?,凡不满足提交要求导致不能编译或用例不通过,不予评分;)。

1. 电路板布线问题

问题描述:
对于一个有N个引脚的电路板,我们需要在这些引脚之间连线。现在对于给定的连接引脚的方法,需要程序判断,这组方法是否会产生线段之间的交叉。
输入:
N 电路板的引脚数量; (1,2), (3,4) , ...... 连线的方式。(1,2)表示1、2号引脚存在连线。

要求实现函数:
         unsigned int Lay_line(int n, unsigned int *p)

         不产生交叉返回0 ; 产生交叉返回 1

         输入参数:n:电路板引脚个数;

                   p:指向一个数组(长度固定为64),表示电路板引脚连接方式;

                   输入:1 4 2 3 0 (0表示布线结束)

表示该连接方案有两个连接

1号 4号管脚连接 2号3号管角连接

示例
N = 4; (a1,a4), (a2,a3) 程序输出"0"

N = 4; (a3,a1), (a4,a2) 程序输出"1"

N = 4; (a2,a1), (a2,a3) 程序输出"0"

注:没有布线(输入数据为0) 意味着没有连线 可认为没有交叉
2. 括号匹配判断

问题描述:
检查字符串表达式中的括号是否匹配;
左括号数目同有括号数目不相等即为不匹配;
去除多余的左括号或者右括号,优先保留先出现的括号;
匹配后去除无效的括号:如:((表达式)) 应为(表达式);
只考虑小括号,不考虑先出现右括号的情况;
要求实现函数: (字符串最长长度为60;表达式正确性不需要考虑)
void Bracket(char* src, char* dst);

如果匹配则通过dst输出原串;

如果不匹配则根据要求去处多于括号后通过dst输出匹配后的串

示例
输入:12+(345*25-34)   输出:12+(345*25-34)

输入:12+(345*(25-34)   输出: 12+(345*25-34)

输入:(12+345)*25)-34   输出: (12+345)*25-34

输入:(543+(256-43)*203))+24

                        输出:(543+(256-43)*203)+24

输入:((1+2)*((34-2))+((2*8-1)

                        输出:((1+2)*(34-2)+2*8-1)

 

据说这是华为2005年中心平台开发部的Java比武大赛中的必做题,当时难倒了不少人。你能够给出最佳答案吗?把你的代码帖出来,看看谁的算法最简单最高效。

  要求:

  /////////////////////input.txt样例 ////////////////////////////////
  1+3/7*2=
  4+25-8=
  5%2+5-2*84o**5-8=6
   5%2+5-2*84o**5-8这样的表达式,计算 1000次这个表达式的值,在屏幕中输出结计算结果和所用时间。

  5. 要求最多在180分钟内完成。


一个画图程序 要求打印出

Java 代码

   1. int i=5; 
   2. 1 
   3. 16 17 18 19 6 
   4. 15 24 25 20 7 
   5. 14 23 22 21 8 
   6. 13 12 11 10 9 
   7.  
   8. int i=6 
   9. 1  
  10. 20 21 22 23 24 
  11. 19 32 33 34 25 
  12. 18 31 36 35 26 
  13. 17 30 29 28 27 10 
  14. 16 15 14 13 12 11

<span style="font-size: small;">public static void main(String args[]){
   int N=5;
   int a[][]=new int[N][N];
   int i=0,j=0;
   int count=1;
   for(i=0;i<N;i++){
    for(j=0;j<N;j++){
     a[i][j]=0;
    }
   }
   i=0;
   j=0;
      for(int k=0;k<=N/2;k++){
       i=k;
       j=k;
    for(i=k;i<N-k;i++){
     a[j][i]=count;
     count++;
    }
    i=N-k-1;
    for(j=k+1;j<N-k;j++){
     a[j][i]=count;
     count++;
    }
    j=N-k-1;
    for(i=N-k-2;i>=k;i--){
     a[j][i]=count;
     count++;
    }
    i=k;
    for(j=N-k-2;j>=1+k;j--){
     a[j][i]=count;
     count++;
    }
      }
  
   for(i=0;i<N;i++){
    for(j=0;j<N;j++){
       System.out.print(a[i][j]+" ");
    }
    System.out.println();
   }
}</span>

class snakePrint {
 static int length = 7;
 static int value = 1;
 static int[][] snake = new int[length][length];
 static Direction lastDirection = Direction.Right;

 static enum Direction {
  Right, Down, Left, Up;
 }

 public static void initialArray() {
  int row = 0, line = 0;
  for (int c = 0; c < length * length; c++) {
   snake[row][line] = value;
   lastDirection = findDirection(row, line);
   switch (lastDirection) {
    case Right:
     line++;
     break;
    case Down:
     row++;
     break;
    case Left:
     line--;
     break;
    case Up:
     row--;
     break;
    default:
     System.out.println("error");
   }
   value++;
  }
 }

 static Direction findDirection(int row, int line) {
  Direction direction = lastDirection;
  switch (direction) {
   case Right: {
    if ((line == length - 1) || (snake[row][line + 1] != 0))
     direction = direction.Down;
    break;
   }
   case Down: {
    if ((row == length - 1) || (snake[row + 1][line] != 0))
     direction = direction.Left;
    break;
   }
   case Left: {
    if ((line == 0) || (snake[row][line - 1] != 0))
     direction = direction.Up;
    break;
   }
   case Up: {
    if (snake[row - 1][line] != 0)
     direction = direction.Right;
    break;
   }
  }
  return direction;
 }

 public static void main(String[] args) {
  initialArray();

  // display.....
  for (int i = 0; i < length; i++) {
   for (int j = 0; j < length; j++) {
    System.out.print(snake[i][j] + "  ");
   }
   System.out.println();
  }
 }
}

第一部分:选择题 
  QUESTION   NO:  
  1、public   class   Test  
          public   static   void   changeStr(String   str){ 
                  str="welcome"; 
         
          public   static   void   main(String[]   args)  
                  String   str="1234"; 
                  changeStr(str); 
                  System.out.println(str); 
         
 
  Please   write   the   output   result   : 
  
  QUESTION   NO:2 
  1.   public   class   Test  
  2.   static   boolean   foo(char   c)  
  3.   System.out.print(c); 
  4.   return   true; 
  5.  
  6.   public   static   void   main(   String[]   argv   
  7.   int    =0; 
  8.   for    foo('A');   foo('B')&&(i<2);   foo('C')){ 
  9.   i++  
  10.   foo('D'); 
  12.  
  13.  
  14.  
  What   is   the   result? 
  A.   ABDCBDCB 
  B.   ABCDABCD 
  C.   Compilation   fails. 
  D.   An   exception   is   thrown   at   runtime. 
  
  QUESTION   NO:  
  1.   class   
  2.   protected   int   method1(int   a,   int   b)    return   0;  
  3.  
  Which   two   are   valid   in    class   that   extends   class   A?   (Choose   two) 
  A.   public   int   method1(int   a,   int   b)    return   0;  
  B.   private   int   method1(int   a,   int   b)    return   0;  
  C.   private   int   method1(int   a,   long   b)    return   0;  
  D.   public   short   method1(int   a,   int   b)    return   0;  
  E.   static   protected   int   method1(int   a,   int   b)    return   0;  
  
  QUESTION   NO:  
  1.   public   class   Outer{ 
  2.   public   void   someOuterMethod()  
  3.   //   Line  
  4.  
  5.   public   class   Inner{} 
  6.   public   static   void   main(   String[]argv   
  7.   Outer     new   Outer(); 
  8.   //   Line  
  9.  
  10.  
  Which   instantiates   an   instance   of   Inner? 
  A.   new   Inner();   //   At   line  
  B.   new   Inner();   //   At   line  
  C.   new   o.Inner();   //   At   line  
  D.   new   Outer.Inner();   //   At   line   8//new   Outer().new   Inner() 
  
  QUESTION   NO:  
  Which   method   is   used   by    servlet   to   place   its   session   ID   in    URL   that   is   written   to   the   servlet’s   response   output   stream? 
  A.   The   encodeURL   method   of   the   HttpServletRequest   interface. 
  B.   The   encodeURL   method   of   the   HttpServletResponse   interface. 
  C.   The   rewriteURL   method   of   the   HttpServletRequest   interface. 
  D.   The   rewriteURL   method   of   the   HttpServletResponse   interface. 
  
  QUESTION   NO:  
  Which   two   are   equivalent?   (Choose   two) 
  A.   <%=   YoshiBean.size%> 
  B.   <%=   YoshiBean.getSize()%> 
  C.   <%=   YoshiBean.getProperty("size")%> 
  D.   <jsp:getProperty   id="YoshiBean"   param="size"/> 
  E.   <jsp:getProperty   name="YoshiBean"   param="size"/> 
  F.   <jsp:getProperty   id="YoshiBean"   property="size"/> 
  G.   <jsp:getProperty   name="YoshiBean"   property="size"/> 
  
  QUESTION   NO:  
  Which   of   the   following   statements   regarding   the   lifecycle   of    session   bean   are   correct?   
  1.     java.lang.IllegalStateException   is   thrown   if   SessionContext.getEJBObject()   is   invoked   when    stateful   session   bean   instance   is   passivated.   
  2.     SessionContext.getRollbackOnly()   does   not   throw   an   exception   when    session   bean   with   bean-managed   transaction   demarcation   is   activated.   
  3.     An   exception   is   not   thrown   when   SessionContext.getUserTransaction()   is   called   in   the   afterBegin   method   of    bean   with   container-managed   transactions.   
  4.     JNDI   access   to   java:comp/env   is   permitted   in   all   the   SessionSynchronization   methods   of    stateful   session   bean   with   container-managed   transaction   demarcation.   
  5.     Accessing   resource   managers   in   the   SessionSynchronization.afterBegin   method   of    stateful   session   bean   with   bean-managed   transaction   does   not   throw   an   exception. 
  
  
  第二部分:概念题 
  1.         描述Struts体系结构?对应各个部分的开发工作主要包括哪些? 
  
  
  
  
  
  
  
  
  
  
  
  
  
  2.         XML包括哪些解释技术,区别是什么? 
  
  
  
  
  
  
  3.         JSP有哪些内置对象和动作?它们的作用分别是什么? 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  4、SQL问答题 
  SELECT    FROM   TABLE 
  和 
  SELECT    FROM   TABLE   
  WHERE   NAME   LIKE   '%%'   AND   ADDR   LIKE   '%%'   
  AND   (1_ADDR   LIKE   '%%'   OR   2_ADDR   LIKE   '%%'   
  OR   3_ADDR   LIKE   '%%'   OR   4_ADDR   LIKE   '%%'    
  的检索结果为何不同? 
  
  
  
  5、SQL问答题 
  表结构: 
  1、         表名:g_cardapply 
  字段(字段名/类型/长度): 
  g_applyno                 varchar       8;//申请单号(关键字) 
  g_applydate           bigint           8;//申请日期 
  g_state                 varchar           2;//申请状态 
  2、         表名:g_cardapplydetail 
  字段(字段名/类型/长度): 
  g_applyno                 varchar           8;//申请单号(关键字) 
  g_name                 varchar           30;//申请人姓名 
  g_idcard                 varchar           18;//申请人身份证号 
  g_state                 varchar           2;//申请状态 
  其中,两个表的关联字段为申请单号。 
  题目: 
  1、         查询身份证号码为440401430103082的申请日期 
  2、         查询同一个身份证号码有两条以上记录的身份证号码及记录个数 
  3、         将身份证号码为440401430103082的记录在两个表中的申请状态均改为07 
  4、         删除g_cardapplydetail表中所有姓李的记录 
 

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有