软考初级程序员上午考试科目为基础知识,题型为客观选择题,共计75道选择题。程序员考试需要在一次考试中各科目都及格才算合格,单科及格成绩不予保留,也不能转移到下次考试时使用。
程序员各科目考试题型
1、计算机硬软件基础知识,考试时间为150分钟,笔试。
2、程序设计,考试时间为150分钟,笔试。
温馨提示:因考试政策、内容不断变化与调整,猎考网提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!
下方免费复习资料内容介绍:希赛2021网络工程师考前必备5页纸(内部资料)
格式:PDF大小:1233.24KB 2023年软件设计师备考知识点集锦
格式:DO大小:11864.19KB
资格考试有疑问、不知道如何总结考点内容、不清楚报考考试当地政策,点击底部咨询猎考网,免费领取复习资料
试题1:
void test1()
{
char string[10]
char* str1 = "0123456789"
strcpy( string, str1 )
}
试题2:
void test2()
{
char string[10], str1[10]
int i
for(i=0i<10i++)
{
str1[i] = 'a'
}
strcpy( string, str1 )
}
试题3:
void test3(char* str1)
{
char string[10]
if( strlen( str1 ) <= 10 )
{
strcpy( string, str1 )
}
}
解答:
试题1字符串str1需要11个字节才能存放下(包括末尾的’\0’),而string只有10个字节的空间,strcpy会导致数组越界
对试题2,如果面试者指出字符数组str1不能在数组内结束可以给3分如果面试者指出strcpy(string, str1)调用使得从str1内存起复制到string内存起所复制的字节数具有不确定性可以给7分,在此基础上指出库函数strcpy工作方式的给10分
对试题3,if(strlen(str1) <= 10)应改为if(strlen(str1) <10),因为strlen的结果未统计’\0’所占用的1个字节。
考查对基本功的掌握:
(1)字符串以’\0’结尾
(2)对数组越界把握的敏感度
(3)库函数strcpy的工作方式,
(4)对strlen的掌握,它没有包括字符串末尾的'\0'。
试题4:
void GetMemory( char *p )
{
p = (char *) malloc( 100 )
}
void Test( void )
{
char *str = NULL
GetMemory( str )
strcpy( str, "hello world" )
printf( str )
}
解答:
试题4传入中GetMemory( char *p )函数的形参为字符串指针,在函数内部修改形参并不能真正的改变传入形参的值,执行完
char *str = NULL
GetMemory( str )
后的str仍然为NULL
试题5:
char *GetMemory( void )
{
char p[] = "hello world"
return p
}
void Test( void )
{
char *str = NULL
str = GetMemory()
printf( str )
}
试题5中
char p[] = "hello world"
return p
的p[]数组为函数内的局部自动变量,在函数返回后,内存已经被释放。这是许多程序员常犯的错误,其根源在于不理解变量的生存期。
试题6:
void GetMemory( char **p, int num )
{
*p = (char *) malloc( num )
}
void Test( void )
{
char *str = NULL
GetMemory( &str, 100 )
strcpy( str, "hello" )
printf( str )
}
试题6的GetMemory避免了试题4的问题,传入GetMemory的参数为字符串指针的指针,但是在GetMemory中执行申请内存及赋值语句
*p = (char *) malloc( num )
后未判断内存是否申请成功,应加上:
if ( *p == NULL )
{
...//进行申请内存失败处理
}
试题7:
void Test( void )
{
char *str = (char *) malloc( 100 )
strcpy( str, "hello" )
free( str )
... //省略的其它语句
}
试题7存在与试题6同样的问题,在执行
char *str = (char *) malloc(100)
后未进行内存是否申请成功的判断另外,在free(str)后未置str为空,导致可能变成一个“野”指针,应加上:
str = NULL
试题6的Test函数中也未对malloc的内存进行释放。
剖析:
试题4~7考查面试者对内存 *** 作的理解程度,基本功扎实的面试者一般都能正确的回答其中50~60的错误。但是要完全解答正确,却也绝非易事。
对内存 *** 作的考查主要集中在:
(1)指针的理解
(2)变量的生存期及作用范围
(3)良好的动态内存申请和释放习惯。
再看看下面的一段程序有什么错误:
swap( int* p1,int* p2 )
{
int *p
*p = *p1
*p1 = *p2
*p2 = *p
}
在swap函数中,p是一个“野”指针,有可能指向系统区,导致程序运行的崩溃。在VC++中DEBUG运行时提示错误“Access Violation”。该程序应该改为:
swap( int* p1,int* p2 )
{
int p
p = *p1
*p1 = *p2
*p2 = p
}
预处理器(Preprocessor)
1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)
#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL
2. 写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。
#define MIN(A,B) ((A) <= (B)?(A) : (B)) 12
一、选择题(每题1分,共20分)1. 下列那种语言是面向对象的(C)
A. C B. PASCAL C. C++ D. FORTRAN77
2.在 Windows9x 下,可以进入 MS-D0S 方式。当在 DOS 提示符下键入 (B ) 命令后,
系统将退出 MS-DOS方式,返回到 WIndows 方式。
A. CLOSE B. EXIT C. QUIT D. RETURN
3.下面哪些是面向对象的基本特性:(A,B,C )
A 多态 B 继承 C 封装 D 接口
4.在C++中经常要进行异常处理,下面哪些是异常处理常用到的关键词:(A,B,C)
A try B catch C throw D break E contiue
5.数据库技术中的“脏数据',是指(D)的数据。
A.错误 B.回返 C.未提交 D.未提交的随后又被撤消
6.TCP/IP是一种(A,B)
A.标准 B.协议 C.语言 D.算法
7. 下面有关计算机 *** 作系统的叙述中,不正确的是( )
A *** 作系统属于系统软件
B *** 作系统只负责管理内存储器,而不管理外存储器
C UNIX 是一种 *** 作系统
D 计算机的处理器、内存等硬件资源也由 *** 作系统管理
8.微机上 *** 作系统的作用是( D)
A 解释执行源程序 B 编译源程序
C 进行编码转换 D 控制和管理系统资源
9.下列存储器中存取速度最快的是(A )
A 内存 B 硬盘 C 光盘 D 软盘
10.在计算机中,—个字节是由多少个二进制位组成的( )
A. 4 B. 8 C. 16 D. 24
11. 存储16×16点阵的一个汉字信息,需要的字节数为( )
A 32 B 64 C 128 D 256
12. 以下选项中合法的字符常量是(C)
A."B" B. '\010' C. 68 D. D
13. 假定x和y为double型,则表达式x=2,y=x+3/2的值是()
A. 3.500000 B. 3 C. 2.000000 D. 3.000000
14. 以下合法的赋值语句是()
A. x=y=100 B. d--C. x+yD. c=int(a+b)
15. 设正x、y均为整型变量,且x=10 y=3,则以下语句
pprintf("%d,%d\n",x--,--y)的输出结果是()
A.10,3 B. 9,3 C. 9,2 D.10,2
16. x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是()
A .INPUT x、y、zB. scanf("%d%d%d",&x,&y,&z)
C. scanf("%d%d%d",x,y,z)D. read("%d%d%d",&x,&y,&z)
17.以下数组定义中不正确的是()
A) int a[2][3]B) int b[][3]={0,1,2,3}
C) int c[100][100]={0}D) int d[3][]={{1,2},{1,2,3},{1,2,3,4}}
18. 以下程序的输出结果是()
main()
{
int a[4][4]={{1,3,5},{2,4,6},{3,5,7}}
printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0]
}
A) 0650 B) 1470 C) 5430 D) 输出值不定
19 以下程序的输出结果是()
main()
{
char st[20]= "hello\0\t\\\"
printf(%d %d \n",strlen(st),sizeof(st))
}
A) 9 9 B) 5 20 C) 13 20 D) 20 20
20. 当调用Windows API函数InvalidateRect,将会产生什么消息()
A:WM_PAINT B:WM_CREATE
C:WM_NCHITTEST D:WM_SETFOCUS
二、填空题(每题3分,共30分)
1.请列举当前一些当前流行的数据库引擎__________
2. 为了将当前盘当前目录中的所有文本文件(扩展名为.TXT)的内容打印输出,正确
的单条DOS命令为______。
3. 计算机网络分为局域网和广域网,因特网属于 广域网。
4. 设y是int型变量,请写出判断y为奇效的关系表达_______。
5. 设有以下程序:
main()
{ int n1,n2
scanf("%d",&n2)
while(n2!=0)
{ n1=n2%10
n2=n2/10
printf("%d",n1)
}
}
程序运行后,如果从键盘上输入1298;则输出结果为____。
6.以下程序运行后的输出结果是______。
main()
{ char s[ ]="9876",*p
for ( p=s pbr>}
7.以下函数的功能是:求x的y次方,请填空。
double fun( double x, int y)
{ int i
double z
for(i=1, z=xibr>return z
}
8.以下程序段打开文件后,先利用fseek函数将文件位置指针定位在文件末尾,然后调
用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。
FILE *myfling f1
myf= ______("test.t","rb")
fseek(myf,0,SEEK_END)f1=ftel(myf)
fclose(myf)
printf("%d\n",f1)
9. 以下程序输出的最后一个值是______。
int ff(int n)
{ static int f=l
f=f*n
return f
}
main()
{ int i
for(I=1I<=5I++ printf("%d\n",ff(i))
)
10. 以下程序运行后的输出结果是_____。
main()
{ int i=10, j=0
do
{ j=j+ii-
while(i>2)
printf("%d\n",j)
}
三、判断题(每题2分,共20分)
1:动态链结库不能静态调用。
2:UDP是面向无连接的网络连接
3:ASP是一种数据库引擎
4:队列是先进后出。
5:Weblogic是分布式应用服务器。
6:TCP,UDP都是传输层的协议。
7: 两个线程不能共存于同一地址空间
8: JAVA是一种跨平台的开发工具
9.在WINDOWS *** 作系统中对外设是以文件的方式进行管理
10. 虚拟内存实际是创建在硬盘上的
四、问答题(每题10分,共30分)
1. 写出从数据库表Custom中查询No、Name、Num1、Num2并将Name以姓名显示、计算出
的和以总和显示的SQL。
Select No、Name、Num1、Num2 from custom
2. 何为“事务处理”,谈谈你对它的理解。
3. 常用的数据结构有哪些?请枚举一些。(不少于5个)
4. 什么是OOP?什么是类?请对比类和对象实例之间的关系。
5. 有一组数字(3,10,6,8,98,22),请编程排序(升降序皆可),语言不限,算法不限,但须注明是何种算法。
wf11119@sina.com
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)