一、英语题:
1)、Windows provides a user-friendly graphical(1) including pop-up menus,csrollbars,dialogue boxes,icons and etc.
A.display B.surface C.interface D.help
2)、Bitmap images use a grid of small squars known as (2) to represent images.
A.pixels B.points C.elements D.dots
3) 、With(3)you can communicate in real time with people all around the world.
A.E-Mail B.WWW C.FTP D.webchar
4) 、Office(4)is the application of the computer and communications technology to improve the productivity of office workers.
A.Tool B.Automation C.Device D.FAX
5) 、(5)means the conducting of business communication and transction over network and through computers.
A.E-Mail B.E-Gevemment C.E-text D.E-Commerce
6) 、The line of computing jobs waiting to be run on a computer system might be a (6).The jobs are serviced in the order of their arrival,that is,the first in is the first out.
A queue B stack C array D record
7)、 The (7) is a collection of modules serving as interface between hardware and software to provide a software platform.
A computer B processor C application D operating system
8)、 C++ fully supports (8)programming.
A visual B object-oriented C logic D natural language
9)、The Internet is an open system,and most information is available to everyone. It is very important to add (9)to existing system for protecting the secret information.
A Web pages B modem C security D network
10)、 A (10)system placed between the company network and the outside world may limit outside access to the internal network
A firewall B modem C gateway D key
二、程序流程图:
1)、阅读以下说明和流程图,填补流程图中的空缺(1)~(5),将解答填入答题纸的对应栏内。
【说明】求连接函数f(x)的根(方程f(x)=0的解)的最简单方法是二分法。为此,首先需要在若干点上检查函数的符号,如果发现f(a)与f(b)符号相反(a
三、基础题
1)、头文件中的 ifndef/define/endif 干什么用?(3分)
2)、写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个(3分)
3)、1,5,5,5,加减乘除,怎么出24点?(5分)
4)、以下为Windows NT下的32位C++程序,请计算sizeof的值(6分)
void Func ( char str[100] )
{
sizeof( str ) = (1);
}
void *p = malloc( 100 );
sizeof ( p ) = (2);
5)、请写出下列代码的输出内容 (8分)
#include
int main(void)
{
int a,b,c,d;
a=20;
b=a++;
c=++a;
d=10*a++;
printf("a, b,c,d:%d,%d,%d,%d",a, b,c,d);
return 0;
}
6)、分别给出BOOL,int,float,指针变量 与“零值”比较的 if 语句(假设变量名为var)(10分)
四、编程题(10分)
1)编写strcpy函数(10分)
已知strcpy函数的原型是char *strcpy(char *strDest, const char *strSrc); 其中strDest是目的字符串,strSrc是源字符串。
Ⅰ:不调用C++/C的字符串库函数,请编写函数 strcpy
char *strcpy(char *strDest, const char *strSrc)
Ⅱ、strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?
2)单片机模拟开关灯编程(用C语言或者汇编编写)(10分)
㈠、要求:如图下图所示,监视开关K1(接在P3.0端口上),用发光二极管L1(接在单片
机P1.0端口上)显示开关状态,如果开关合上,L1亮,开关打开,L1熄灭。
㈡、电路原理图:(接口的定义:AT89X51.H)
㈢、系统板上硬件连接:
①把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模块” 区域中的L1端口上;
②把“单片机系统”区域中的P3.0端口用导线连接到“四路拨动开关”区域中的K1端口上;
㈣、程序设计内容:
①开关状态的检测过程
单片机对开关状态的检测相对于单片机来说,是从单片机的P3.0端口输入信号,而输入的信号只有高电平和低电平两种,当拨开开关K1拨上去,即输入高电平,相当开关断开,当拨动开关K1拨下去,即输入低电平,相当开关闭合。单片机可以采用JB BIT,REL或者是JNB BIT,REL指令来完成对开关状态的检测即可。
②输出控制
如图3所示,当P1.0端口输出高电平,即P1.0=1时,根据发光二极管的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平,即P1.0=0时,发光二极管L1亮;我们可以使用SETB P1.0指令使P1.0端口输出高电平,使用CLR P1.0指令使P1.0端口输出低电平。
㈤、程序流程图:
Ⅰ、按以上要求编写程序(用C语言或者汇编语言编写):
3)用汇编语言编写程序(10分):
Ⅰ、写一个程序完成功能:读键盘,并把所按键盘显示出来,在检测到按下SHIFT键后,就结束运行。要求:调用键盘I/O程序的2号功能取得变换键状态字节,进而判断是否按下了SHIFT键。在调用0号功能读键盘之前,先调用1号功能判断键盘是否有键可读,否则针导致不能及时检测到用户按下的SHIFT。
请写汇编语言代码:
五、逻辑推理题(20分)
1)、小明一家过一座桥,过桥时是黑夜,所以必须有灯。现在小明过桥要1秒,
小明的弟弟要3秒,小明的爸爸要6秒,小明的妈妈要8秒,小明的爷爷要12秒。每 次此桥最多可过两人,而过桥的速度依过桥最慢者而定,而且灯在点燃后30秒就会 熄灭。问:小明一家如何过桥?(10分)
2)、如果你有无穷多的水,一个3夸脱的和一个5夸脱的提桶,你如何准确称出 4夸脱的水?(10分)
答案:
仅供参考
一、英语题
(1)C, (2)A, (3)D, (4)A, ( 5)A,
(6)A, (7)D, (8)B, (9)C, (10)A.
二、程序流程图
(1) (a+b)/2
(2) f((a+b)/2)或f(x)
(3) fabs(y)
(4) b
(5) a
三、基础题
1) 防止该头文件被重复引用
2) #define MIN(A,B) ((A)
3) (5-(1/5))*5
4) (1) sizeof(str) = 4
(2) sizeof(p) = 4
5) a=23
b=20
c=22
d=220
6) BOOL型变量:if(!var)
int型变量: if(var==0)
float型变量:
const float EPSINON = 0.00001;
if ((x >= - EPSINON) && (x
指针变量: if(var==NULL)
剖析:
考查对0值判断的“内功”,BOOL型变量的0判断完全可以写成if(var==0),而int型变量也可以写成if(!var),指针变量的判断也可以写成if(!var),上述写法虽然程序都能正确运行,但是未能清晰地表达程序的意思。
一般的,如果想让if判断一个变量的“真”、“假”,应直接使用if(var)、if(!var),表明其为“逻辑”判断;如果用if判断一个数值型变量(short、int、long等),应该用if(var==0),表明是与0进行“数值”上的比较;而判断指针则适宜用if(var==NULL),这是一种很好的编程习惯。
浮点型变量并不精确,所以不可将float变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“
四、编程题
1):不调用C++/C的字符串库函数,请编写函数 strcpy
char *strcpy(char *strDest, const char *strSrc)
assert((strDest!=NULL) && (strSrc !=NULL)); // 2分
char *address = strDest; // 2分
while((*strDest++ = * strSrc++) != '\0' ) // 2分
return address ; // 2分
}
Ⅱ:strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?
答:为了实现链式表达式。 // 2分
2)(10分) 汇编源程序:
ORG 00H
START: JB P3.0,LIG
CLR P1.0
SJMP START
LIG: SETB P1.0
SJMP START
END
C语言源程序:
#include
sbit K1=P3^0;
sbit L1=P1^0;
void main(void)
{
while(1)
{
if(K1==0)
{
L1=0; //灯亮
}
else
{
L1=1; //灯灭
}
}
}
3)(10分)
;程序名:
;功 能:读键盘,并把所按键盘显示出来,在检测到按下SHIFT键后,就结束运行 ;常量定义:
L_SHIFT = 00000010B
R_SHIFT = 00000001B
CSEG SEGMENT
ASSUME CS:CSEG
START: MOV AH,2 ;取变换鍵状态字节 INT 16H
TEST AL,L_SHIFT+R_SHIFT ;判是否按下SHIFT键 JNZ OVER ;按下,转
MOV AH,1
INT 16H ;是否有键可读
JZ START ;没有,转
MOV AH,0
INT 16H
MOV DL,AL
MOV AH,6
INT 21H
JMP START
OVER: MOV AH,4CH
INT 21H
CSEG ENDS
END START
五、逻辑推理题(20分)
1):
方法1:
小明(1秒)与弟弟(3秒)过桥->用时3秒,小明返回1秒(共4秒) 妈妈(8秒)与爷爷(12秒)过桥->用时12秒,弟弟返回3秒(共15秒) 小明(1秒)与爸爸(6秒)过桥->用时6秒,小明返回1秒(共7秒) 小明(1秒)与弟弟(3秒)过桥->用时3秒(共3秒)
只要小于30秒就OK。
2):
方法1:
3夸脱装满;3夸脱-〉5夸脱(全注入);
3夸脱装满;3夸脱-〉5夸脱(剩1夸脱);
5夸脱倒掉;3夸脱-〉5夸脱(注入1夸脱);
3夸脱装满;3夸脱-〉5夸脱;
完成(另:可用回溯法编程)
方法2:
5夸脱装满;5夸脱-〉3夸脱(3注满);
3夸脱倒掉;5夸脱-〉3夸脱(这时3只有2夸脱);
5夸脱装满;5夸脱-〉3夸脱(注入1夸脱,3注满);
完成
一、英语题:
1)、Windows provides a user-friendly graphical(1) including pop-up menus,csrollbars,dialogue boxes,icons and etc.
A.display B.surface C.interface D.help
2)、Bitmap images use a grid of small squars known as (2) to represent images.
A.pixels B.points C.elements D.dots
3) 、With(3)you can communicate in real time with people all around the world.
A.E-Mail B.WWW C.FTP D.webchar
4) 、Office(4)is the application of the computer and communications technology to improve the productivity of office workers.
A.Tool B.Automation C.Device D.FAX
5) 、(5)means the conducting of business communication and transction over network and through computers.
A.E-Mail B.E-Gevemment C.E-text D.E-Commerce
6) 、The line of computing jobs waiting to be run on a computer system might be a (6).The jobs are serviced in the order of their arrival,that is,the first in is the first out.
A queue B stack C array D record
7)、 The (7) is a collection of modules serving as interface between hardware and software to provide a software platform.
A computer B processor C application D operating system
8)、 C++ fully supports (8)programming.
A visual B object-oriented C logic D natural language
9)、The Internet is an open system,and most information is available to everyone. It is very important to add (9)to existing system for protecting the secret information.
A Web pages B modem C security D network
10)、 A (10)system placed between the company network and the outside world may limit outside access to the internal network
A firewall B modem C gateway D key
二、程序流程图:
1)、阅读以下说明和流程图,填补流程图中的空缺(1)~(5),将解答填入答题纸的对应栏内。
【说明】求连接函数f(x)的根(方程f(x)=0的解)的最简单方法是二分法。为此,首先需要在若干点上检查函数的符号,如果发现f(a)与f(b)符号相反(a
三、基础题
1)、头文件中的 ifndef/define/endif 干什么用?(3分)
2)、写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个(3分)
3)、1,5,5,5,加减乘除,怎么出24点?(5分)
4)、以下为Windows NT下的32位C++程序,请计算sizeof的值(6分)
void Func ( char str[100] )
{
sizeof( str ) = (1);
}
void *p = malloc( 100 );
sizeof ( p ) = (2);
5)、请写出下列代码的输出内容 (8分)
#include
int main(void)
{
int a,b,c,d;
a=20;
b=a++;
c=++a;
d=10*a++;
printf("a, b,c,d:%d,%d,%d,%d",a, b,c,d);
return 0;
}
6)、分别给出BOOL,int,float,指针变量 与“零值”比较的 if 语句(假设变量名为var)(10分)
四、编程题(10分)
1)编写strcpy函数(10分)
已知strcpy函数的原型是char *strcpy(char *strDest, const char *strSrc); 其中strDest是目的字符串,strSrc是源字符串。
Ⅰ:不调用C++/C的字符串库函数,请编写函数 strcpy
char *strcpy(char *strDest, const char *strSrc)
Ⅱ、strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?
2)单片机模拟开关灯编程(用C语言或者汇编编写)(10分)
㈠、要求:如图下图所示,监视开关K1(接在P3.0端口上),用发光二极管L1(接在单片
机P1.0端口上)显示开关状态,如果开关合上,L1亮,开关打开,L1熄灭。
㈡、电路原理图:(接口的定义:AT89X51.H)
㈢、系统板上硬件连接:
①把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模块” 区域中的L1端口上;
②把“单片机系统”区域中的P3.0端口用导线连接到“四路拨动开关”区域中的K1端口上;
㈣、程序设计内容:
①开关状态的检测过程
单片机对开关状态的检测相对于单片机来说,是从单片机的P3.0端口输入信号,而输入的信号只有高电平和低电平两种,当拨开开关K1拨上去,即输入高电平,相当开关断开,当拨动开关K1拨下去,即输入低电平,相当开关闭合。单片机可以采用JB BIT,REL或者是JNB BIT,REL指令来完成对开关状态的检测即可。
②输出控制
如图3所示,当P1.0端口输出高电平,即P1.0=1时,根据发光二极管的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平,即P1.0=0时,发光二极管L1亮;我们可以使用SETB P1.0指令使P1.0端口输出高电平,使用CLR P1.0指令使P1.0端口输出低电平。
㈤、程序流程图:
Ⅰ、按以上要求编写程序(用C语言或者汇编语言编写):
3)用汇编语言编写程序(10分):
Ⅰ、写一个程序完成功能:读键盘,并把所按键盘显示出来,在检测到按下SHIFT键后,就结束运行。要求:调用键盘I/O程序的2号功能取得变换键状态字节,进而判断是否按下了SHIFT键。在调用0号功能读键盘之前,先调用1号功能判断键盘是否有键可读,否则针导致不能及时检测到用户按下的SHIFT。
请写汇编语言代码:
五、逻辑推理题(20分)
1)、小明一家过一座桥,过桥时是黑夜,所以必须有灯。现在小明过桥要1秒,
小明的弟弟要3秒,小明的爸爸要6秒,小明的妈妈要8秒,小明的爷爷要12秒。每 次此桥最多可过两人,而过桥的速度依过桥最慢者而定,而且灯在点燃后30秒就会 熄灭。问:小明一家如何过桥?(10分)
2)、如果你有无穷多的水,一个3夸脱的和一个5夸脱的提桶,你如何准确称出 4夸脱的水?(10分)
答案:
仅供参考
一、英语题
(1)C, (2)A, (3)D, (4)A, ( 5)A,
(6)A, (7)D, (8)B, (9)C, (10)A.
二、程序流程图
(1) (a+b)/2
(2) f((a+b)/2)或f(x)
(3) fabs(y)
(4) b
(5) a
三、基础题
1) 防止该头文件被重复引用
2) #define MIN(A,B) ((A)
3) (5-(1/5))*5
4) (1) sizeof(str) = 4
(2) sizeof(p) = 4
5) a=23
b=20
c=22
d=220
6) BOOL型变量:if(!var)
int型变量: if(var==0)
float型变量:
const float EPSINON = 0.00001;
if ((x >= - EPSINON) && (x
指针变量: if(var==NULL)
剖析:
考查对0值判断的“内功”,BOOL型变量的0判断完全可以写成if(var==0),而int型变量也可以写成if(!var),指针变量的判断也可以写成if(!var),上述写法虽然程序都能正确运行,但是未能清晰地表达程序的意思。
一般的,如果想让if判断一个变量的“真”、“假”,应直接使用if(var)、if(!var),表明其为“逻辑”判断;如果用if判断一个数值型变量(short、int、long等),应该用if(var==0),表明是与0进行“数值”上的比较;而判断指针则适宜用if(var==NULL),这是一种很好的编程习惯。
浮点型变量并不精确,所以不可将float变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“
四、编程题
1):不调用C++/C的字符串库函数,请编写函数 strcpy
char *strcpy(char *strDest, const char *strSrc)
assert((strDest!=NULL) && (strSrc !=NULL)); // 2分
char *address = strDest; // 2分
while((*strDest++ = * strSrc++) != '\0' ) // 2分
return address ; // 2分
}
Ⅱ:strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?
答:为了实现链式表达式。 // 2分
2)(10分) 汇编源程序:
ORG 00H
START: JB P3.0,LIG
CLR P1.0
SJMP START
LIG: SETB P1.0
SJMP START
END
C语言源程序:
#include
sbit K1=P3^0;
sbit L1=P1^0;
void main(void)
{
while(1)
{
if(K1==0)
{
L1=0; //灯亮
}
else
{
L1=1; //灯灭
}
}
}
3)(10分)
;程序名:
;功 能:读键盘,并把所按键盘显示出来,在检测到按下SHIFT键后,就结束运行 ;常量定义:
L_SHIFT = 00000010B
R_SHIFT = 00000001B
CSEG SEGMENT
ASSUME CS:CSEG
START: MOV AH,2 ;取变换鍵状态字节 INT 16H
TEST AL,L_SHIFT+R_SHIFT ;判是否按下SHIFT键 JNZ OVER ;按下,转
MOV AH,1
INT 16H ;是否有键可读
JZ START ;没有,转
MOV AH,0
INT 16H
MOV DL,AL
MOV AH,6
INT 21H
JMP START
OVER: MOV AH,4CH
INT 21H
CSEG ENDS
END START
五、逻辑推理题(20分)
1):
方法1:
小明(1秒)与弟弟(3秒)过桥->用时3秒,小明返回1秒(共4秒) 妈妈(8秒)与爷爷(12秒)过桥->用时12秒,弟弟返回3秒(共15秒) 小明(1秒)与爸爸(6秒)过桥->用时6秒,小明返回1秒(共7秒) 小明(1秒)与弟弟(3秒)过桥->用时3秒(共3秒)
只要小于30秒就OK。
2):
方法1:
3夸脱装满;3夸脱-〉5夸脱(全注入);
3夸脱装满;3夸脱-〉5夸脱(剩1夸脱);
5夸脱倒掉;3夸脱-〉5夸脱(注入1夸脱);
3夸脱装满;3夸脱-〉5夸脱;
完成(另:可用回溯法编程)
方法2:
5夸脱装满;5夸脱-〉3夸脱(3注满);
3夸脱倒掉;5夸脱-〉3夸脱(这时3只有2夸脱);
5夸脱装满;5夸脱-〉3夸脱(注入1夸脱,3注满);
完成