考试场次:2013_09月考_9月2日_C++试卷名称:2013年09月
_C++_CSD/ESD1306(new)
1.统计每个部门的人数并要求显示部门名称的SQL语句是?
dept_id,count(dept_id),oms_emp,s_deptdwhere
dept_id=pbydept_id
dept_id,count(dept_id),sum()froms_emp,s_deptd
wheredept_id=pbydept_id
dept_id,count(dept_id),max()froms_emp,s_deptd
wheredept_id=pbydept_id
dept_id,count(dept_id),count()froms_emp,s_deptd
wheredept_id=pbydept_id
正确答案:C
2.打开共享库文件函数的是?
r
e
正确答案:C
3.下面分组语句正确的是?
name,dept_idfroms_deptd,s_empewheredept_id=idgroup
bydept_id;
,dept_idfroms_deptd,s_empe
wheredept_id=pbydept_id;
,dept_idfroms_deptd,s_empe
wheredept_id=pbydept_id;
max(name),dept_idfroms_deptd,s_empewhere
dept_id=pbydept_id;
正确答案:D
4.在建表时,经常需要用到约束,请问下面哪个不是常见约束?
A.主键
B.非空
C.回滚
D.外键
正确答案:C
5.阅读如下代码:
intfd=open("",O_WRONLY|O_CREAT|O_TRUNC,0666);
intflags=fcntl(fd,F_GETFL);
printf("flags=%dn",flags);
switch((空白处)){
caO_RDONLY:printf("RDONLYn");break;
caO_WRONLY:printf("WRONLYn");break;
caO_RDWR:printf("RDWRn");break;
}
空白处的条件应该是?
&5
&3
&4
正确答案:C
6.关于排序,下列说法错误的是?
A.排序的关键字是orderby
B.升序是默认排序顺序
C.降序的关键字是desc
D.不能使用多字段排序
正确答案:D
7.下列建表的SQL语句错误的是?
tabletest123(
Idnumber,
Dnamevarchar2(30)
)
tabletest123(
Idnumber,
Dnamevarchar2(30),
MyDatedate
)
tabletest123(
Idnumber,
Dnamechar(30)
)
tabletest123(
Idnumber,namevarchar2(30),
)
正确答案:B
8.如果想在代码中禁止使用goto,可以采用的是?
A.#pragmaGCCdependencygoto
B.#pragmaGCCpoisongoto
C.#pragmapack(2)
D.#pragmaGCCgoto
正确答案:B
9.显示所有的工资级别和级别对应的salary和first_name的SQL语句是?
grade,first_name,salaryfroms_emp,salgradewhere
salary(+)betweenlosalandhisal
grade,first_name,salaryfroms_emp,salgradewheresalary
betweenlosalandhisal(+)
grade,first_name,salaryfroms_emp,salgradewheresalary
between(+)losalandhisal
grade,first_name,salaryfroms_emp,salgradewhere
salary(+)betweenlosalandhisal(+)
正确答案:A
10.
下列内存区域中,一般不用来存放变量的是:
A.
栈区
B.
代码区
C.
BSS段
D.
堆区
正确答案:B
11.
关于动态库和静态库,下列说法错误的是?
A.打包静态库用的是ar命令。
B.打包共享库用的是gcc-share
C.静态库和共享库都必须配置环境变量才能使用
D..a文件是静态库,而.so文件是共享库
正确答案:C
12.把工资大于1000的first_name,salary显示出来,按工资排序,工资相同
按first_name降序的SQL语句是?
A.
lectfirst_name,salaryfroms_emporderbysalary,first_name
B.
lectfirst_name,salaryfroms_emporderbysalary,first_nameasc
C.
lectfirst_name,salaryfroms_emporderbysalary
desc,first_name
first_name,salaryfroms_emporderby
salary,first_namedesc
正确答案:D
中定义变量,哪个是正确的?
_iint;
Var_i;
_inumber;
_inumbernotnull;
正确答案:C
14.阅读如下代码:
intsockfd=socket(PF_INET,SOCK_DGRAM,0);
if(sockfd==-1)perror("socket创建失败"),exit(-1);
//2.准备地址
(空白处)
//3.绑定
intres=bind(sockfd,
(structsockaddr*)&addr,sizeof(addr));
if(res==-1)perror("绑定失败"),exit(-1);
printf("绑写成功n");
//4.通信
charbuf[100]={};
intlen=read(sockfd,buf,sizeof(buf));
if(len<=0)perror("读取失败"),exit(-1);
printf("读到%d字节的数据,内容是:%sn",len,buf);
//5.关闭
clo(sockfd);
空白出应该填上的代码是?
sockaddr_unaddr;
_family=PF_INET;
_port=htons(8888);
_addr.s_addr=inet_addr("192.168.182.225");
sockaddr_unaddr;
_family=PF_INET;
_port=htons(8888);
_addr.s_addr="192.168.182.225";
sockaddr_inaddr;
_family=PF_INET;
_port=htons(8888);
_addr.s_addr=inet_addr("192.168.182.225");
sockaddr_inaddr;
_family=PF_INET;
_port=htons(8888);
_addr.s_addr="192.168.182.225";
正确答案:C
15.给名字是Smith的员工增加100元的工资的SQL语句是?
s_emptsalary=salary+100wherelast_name=’Smith’
s_emptsalary=salary+100
s_empsalary=salary+100wherelast_name=’Smith’
s_emptsalary=100wherelast_name=’Smith’
正确答案:A
中定义了一个数字变量var_sum对var_sum的操作不正确的是?
_sum:=100;
salaryintovar_sumfroms_empwhereid=1;
_sum:=var_sum+100;
_sum=1000;
正确答案:D
17.下列关于进程间通信不正确的是?
A.共享内存是进程间通信最快的方式。
B.在使用msgsnd发送消息时,如果消息队列满,则发送阻塞。
C.无名管道的适用范围是父子进程。
D.若此信号量的值为正,则进程可以使用资源。进程将信号量加1表示使
用了资源。
正确答案:D
18.
阅读如下代码:
void*p=sbrk(0);
intr=brk(p+4);
brk(p+8);
brk(p+4);
请问目前占用的内存空间字节是?
A.16
B.8
C.4
D.0
正确答案:C
19.把s_emp月薪超过1000的员工列出来的SQL语句是?
A.
lectlast_name,salaryfroms_empwheresalary>1000
B.
lectname,salaryfroms_empwheresalary>1000
C.
lectname,salaryfroms_empwheresalary<1000
last_name,salaryfroms_empwheresalary<1000
正确答案:A
20.下列不是内存区域的是?
A.代码区
B.堆区
C.连接区
段
正确答案:C
21.需要向包含date类型字段mydate的表test中插入date类型,但目前需
要插入的值为’2008-12-11’,请问哪个SQL语句是最合适的?
intotest(mydate)values(to_date(‘2008-12-
11’,‘YYYY-MM-DD’))
intotest(mydate)values(to_char(‘2008-12-
11’,‘YYYY-MM-DD’))
intotest(mydate)values(to_date(‘2008-11-
12’,‘YYYY-MM-DD’))
intotest(mydate)values(sysdate)
正确答案:A
22.以下不属于Linux阵营的Unix操作系统是?
d
正确答案:C
23.统计每个部门的人数的SQL语句是?
dept_id,max(dept_id)froms_empgroupbydept_id
dept_id,avg(dept_id)froms_empgroupbydept_id
dept_id,count(dept_id)froms_empgroupbydept_id
dept_id,sum(dept_id)froms_empgroupbydept_id
正确答案:C
24.
阅读如下代码:
structmbufop;
_num=0;//对下标为0的信号量操作
(空白处1)
_flg=0;//无法完成时阻塞,可以是IPC_NOWAIT
mop(mid,&op,1);
printf("访问共享资源n");
sleep(30);
printf("完成共享资源的访问n");
(空白处2)
mop(mid,&op,1);
空白处1和空白处2应该填上的代码是?
A.不需要填写代码
_op=1;和_op=1;
_op=1;和_op=-1;
_op=-1;和_op=1;
正确答案:D
25.关于信号,以下说法错误的是?
A.信号分为可靠信号和不可靠信号
B.信号的默认处理,80%的情况是退出进程
C.所有信号都可以忽略
D.当前用户只能给自己的进程发信号,不能给别的用户的进程发信号
正确答案:C
26.已知表salgrade字段如下:
Hisal-最高薪水
Losal-最低薪水
grade-薪水等级
查询每个员工的first_name和salary以及对应的薪水等级的SQL语句是?
first_name,salary,gradefroms_emp,salgradewheresalary
betweenhisalandlosal
first_name,salary,gradefroms_emp,salgradewheresalary
betweenlosalandhisal
first_name,salary,gradefroms_empwheresalarybetween
losalandhisal
first_name,salary,gradefroms_emp,salgradewheresalary>
losaland
正确答案:B
27.把s_emp中的月薪在900和1500之间的人列出来的SQL语句是?
A.
lectfirst_name,salaryfroms_empwhere1500
B.
lectfirst_name,salaryfroms_empwheresalaryin(900,1500)
C.
lectfirst_name,salaryfroms_empwhere
salarybetween900and1500
first_name,salaryfromempwhere
salarybetween900and1500
正确答案:C
28.
intfd=open("",O_RDWR|O_CREAT|O_TRUNC,0666);
请问是采用何种方式打开的?
A.创建新文件,并且权限是666
B.采用可读可写方式,如文件存在截断后打开,不存在新建权限为666的
新文件
C.可写方式,文件权限改为666
D.只读方式,如文件存在截断后打开,不存在新建权限为666的新文件
正确答案:B
29.
阅读如下代码:
key_tkey=ftok(".",200);
if(key==-1)perror("key生成失败"),exit(-1);
intshmid=(空白处);
if(shmid==-1)
perror("创建共享存储段失败"),exit(-1);
printf("创建共享存储段成功n");
void*p=shmat(shmid,0,0);
if(p==(void*)-1)
perror("挂接内存段失败"),exit(-1);
printf("已挂接到共享存储段n");
int*pi=p;
*pi=12345678;
if(shmdt(p)==-1)perror("脱接失败"),exit(-1);
空白出应该填上的代码是?
(key,4,0666|IPC_CREAT|IPC_EXCL)
(key,3,0666|IPC_CREAT|IPC_EXCL)
(shmid,IPC_SET,4)
(shmid,IPC_SET,0666|IPC_CREAT|IPC_EXCL)
正确答案:A
30.查找和Smith一个title的所有员工的名字的SQL语句是?
last_namefroms_empwheretitle=(lecttitlefroms_emp
wherelast_name=’Smith’)
last_namefroms_empwheretitle=(lecttitlefroms_emp
wherelast_name=”Smith”)
last_namefroms_empwheretitle=(lectlast_name,title
froms_empwherelast_name=’Smith’)
last_namefroms_empwheretitle=(lecttitlefroms_emp
last_name=’Smith’)
正确答案:A
31.
阅读如下代码:
void*task(void*p){
int*pi=(int*)p;
printf("*pi=%dn",*pi);
*pi=200;
}
intmain()
{
pthread_tid1;
intx=100;
if(pthread_create(&id1,0,task,&x)){
printf("createthreaderror...n");
return-1;
}
printf("x=%dn",x);
return0;
}
打印出数字为?
A.*pi=100x=100
B.*pi=200x=100
C.*pi=200x=200
D.*pi=100x=200
正确答案:D
32.下列关于进程描述符说法错误的是?
获取进程ID。
d获取父进程ID。
获取有效用户ID。
获取实际组ID。
正确答案:C
33.阅读如下代码:
pid_tpid=fork();
if(pid==0){//子进程
printf("子进程开始运行,即将进入睡眠n");
sleep(3);
printf("子进程运行结束n");
exit(100);//不能超过255
}
//父进程
printf("父进程运行,子进程的PID=%dn",pid);
printf("父进程等待子进程结束...n");
intresult;
pid_tres=wait(&result);
printf("等到结束的子进程是%dn",res);
printf("result=%dn",result);
if((空白处1)){
printf("子进程是正常结束的n");
//取返回值
printf("子进程返回值:%dn",
(空白处2));
}
空白处1和空白处2分别应该填入的代码是?
T(result)和WEXITSTATUS(result)
TATUS(result)和WIFEXIT(result)
TATUS(result)和WIFEXITED(result)
TED(result)和WEXITSTATUS(result)
正确答案:D
34.
下列哪段代码能正确的打开文件,要求如果文件存在就打开,并清除文件原有内容,不存在就创建,同时
具备读写权限?
A.
intfd=open("",O_RDONLY|O_CREAT|O_TRUNC,0666);
if(fd==-1){
perror("创建文件失败");
exit(-1);
}
B.
intfd=open("",O_RDWR|O_CREAT|O_EXCL,0666);
if(fd==-1){
perror("创建文件失败");
exit(-1);
}
C.
intfd=open("",O_RDWR|O_TRUNC,0666);
if(fd==-1){
perror("创建文件失败");
exit(-1);
}
D.
intfd=open("",O_RDWR|O_CREAT|O_TRUNC,0666);
if(fd==-1){
perror("创建文件失败");
exit(-1);
}
正确答案:D
35.阅读如下代码:
intfd[2]={};
pipe(fd);
intpid=fork();
if(pid==0){//子进程
(空白处1)
while(1){
intx;
if(read(fd[0],&x,sizeof(x))<=0)break;
printf("%d",x);
fflush(0);
}
clo(fd[0]);
exit(0);
}
(空白处2)
inti;
for(i=0;i<100;i++){
write(fd[1],&i,sizeof(int));
usleep(200000);
}
clo(fd[1]);
空白处1和空白处2应该填上的代码是?
A.什么都不需要填
(fd[1]);和clo(fd[0]);
(fd[0]);和clo(fd[1]);
(fd[1]);和clo(fd[1]);
正确答案:B
36.阅读如下代码,完成下面5题:
#include"stdafx.h"
#include"windows.h"
#include"stdio.h"
voidVirtualInfo(){
CHAR*pszBuffer=(CHAR*)VirtualAlloc(NULL,1024*1024*1024,
MEM_RESERVE,PAGE_READWRITE);
VirtualFree(pszBuffer,0,MEM_DECOMMIT);
}
voidVirtual_Commit(){
CHAR*pszBuff=(CHAR*)VirtualAlloc(NULL,4096,MEM_COMMIT,
PAGE_READWRITE);
strcpy(pszBuff,"HelloVirtualCommit");
printf("%sn",pszBuff);
VirtualFree(pszBuff,0,MEM_RELEASE);
}
voidVirtual_Rerve(){
CHAR*pszBuff=(CHAR*)VirtualAlloc(NULL,4096,MEM_RESERVE,
PAGE_READWRITE);
VirtualAlloc(pszBuff,1024,MEM_COMMIT,PAGE_READWRITE);
strcpy(pszBuff,"HelloVirtualRelea");
printf("%sn",pszBuff);
VirtualFree(pszBuff,0,MEM_RELEASE);
}
intmain(intargc,char*argv[])
{
VirtualInfo();
Virtual_Commit();
Virtual_Rerve();
return0;
}
(1).关于这段代码完成的功能最准确的描述是?
A.这段代码是关于虚拟内存管理的
B.这段代码是关于堆内存管理的
C.这段代码是关于栈内存管理的
D.这段代码是关于内存映射文件的
正确答案:A
(2).
CHAR*pszBuffer=
(CHAR*)VirtualAlloc(NULL,1024*1024*1024,MEM_RESERVE,
PAGE_READWRITE)赋值函数如果改为VirtualAlloc(NULL,
1024*1024*1024,MEM_COMMIT,PAGE_READWRITE),有何区别:
A.没有区别
_RESERVE只要地址,不要物理内存,而MEM_COMMIT是都占用
_RESERVE是释放内存,而MEM_COMMIT是申请内存
_RESERVE只要物理内存,不占用地址,而MEM_COMMIT是都占用
正确答案:B
(3).VirtualFree(pszBuffer,0,MEM_DECOMMIT)函数如果改为
VirtualFree(pszBuffer,0,MEM_RELEASE),有何区别:
A.没有区别
_DECOMMIT是再次内存申请,MEM_RELEASE释放内存
_DECOMMIT只释放内存,不释放地址,MEM_RELEASE地址和内存都释放
_DECOMMIT只释放地址,不释放内存,MEM_RELEASE地址和内存都释放
正确答案:C
(4).函数Virtual_Commit对于内存的使用方式是:
A.内存地址和物理内存一起申请,并同时释放
B.内存地址和物理内存一起申请,但分别释放
C.内存地址和物理内存分别申请,但同时释放
D.内存地址和物理内存分别申请,分别释放
正确答案:A
(5).函数Virtual_Rerve对于内存的使用方式是:
A.内存地址和物理内存一起申请,并同时释放
B.内存地址和物理内存一起申请,但分别释放
C.内存地址和物理内存分别申请,但同时释放
D.内存地址和物理内存分别申请,分别释放
正确答案:C
37.
#include
#include
#include
#include
#include
#include
#include
#include
voidcopyFile(constchar*from,constchar*to){
//判断一下传进来的参数是不是空
(空白5);
intff=open(from,O_RDONLY);
if(-1==ff){perror("打开原文件失败n");return;}
intft=open(to,O_RDWR|O_CREAT,0666);
if(-1==ft){perror("打开目标文件失败n");return;}
(空白1);
clo(ff);
clo(ft);
}
voidbackup(constchar*from,constchar*to){
//判断一下传进来的参数是不是空
(空白5);
//打开要被复制的文件夹
DIR*q=opendir(from);
if(NULL==q){
perror("打开文件夹失败n");
return;
}
//创建一个文件夹
mkdir(to,0777);
structdirent*p=NULL;
structstats;
charpathFrom[256]={};
charpathTo[256]={};
strcat(strcpy(pathFrom,from),"/");
strcat(strcpy(pathTo,to),"/");
char*pf=pathFrom+strlen(pathFrom);
char*pt=pathTo+strlen(pathTo);
while(NULL!=(p=readdir(q))){
strcpy(pf,p->d_name);
strcpy(pt,p->d_name);
lstat(pathFrom,&s);
if(S_ISREG(_mode)){
//判断一下是不是.c/.h文件
char*pff=pf+strlen(pf)-2;
(空白4);
{
copyFile(pathFrom,pathTo);
}el{
continue;
}
}
elif(S_ISDIR(_mode)){
(空白2);
}
}
clodir(q);
}
intmain(intargc,char*argv[]){
(空白3);
return0;
}
(1).空白1处:
A.
intlen=0;
charbuf[1024]={};
while((len=read(ff,buf,sizeof(buf)))>0){
write(ft,buf,len);
}
B.
charbuf[1024]={};
while(read(ff,buf,sizeof(buf))>0){
write(ft,buf,sizeof(buf));
}
C.
intlen=0;
charbuf[1024]={};
while((len=write(ff,buf,sizeof(buf)))>0){
read(ft,buf,len);
}
D.
charbuf[1024]={};
while(write(ff,buf,sizeof(buf))>0){
read(ft,buf,len);
}
正确答案:A
(2).空白2处:
A.
backup(pathFrom,pathTo);
B.
if(0==strcmp(".",p->d_name)||0==strcmp("..",p->d_name)){
backup(pathFrom,pathTo);
}
C.
if(0==strcmp(".",p->d_name)||0==strcmp("..",p->d_name)){
continue;
}el{
backup(pathFrom,pathTo);
}
D.
if("."==p->d_name||".."==p->d_name){
continue;
}el{
backup(pathFrom,pathTo);
}
正确答案:C
(3).空白3处:
A.
backup(argv[0],argv[1]);
B.
backup(argv[1],argv[2]);
C.
backup(argv[2],argv[3]);
D.
backup();
正确答案:B
(4).空白4处:
A.
if(0==strcmp(".c",pff))
B.
if(0==strcmp(".h",pff))
C.
if(0==strcmp(".c",pff)&&0==strcmp(".h",pff))
D.
if(0==strcmp(".c",pff)||0==strcmp(".h",pff))
正确答案:D
(5).空白5处:
A.
if(NULL==from||'0'==from[0]||NULL==to||0==strlen(to)){
return;
}
B.
if((NULL==from||'0'==from[0])&&(NULL==to||0==strlen(to))){
return;
}
C.
if('0'==from[0]||NULL==from||0==strlen(to)||NULL==to){
return;
}
D.
if((NULL==from||'0'==from[0])&&(NULL==to||0==strlen(to))){
return;
}
正确答案:A
38.
阅读如下代码,完成下面5题:
#include
#include
char*data[5];
intsize=0;
pthread_mutex_tlock
=PTHREAD_MUTEX_INITIALIZER;
void*task1(void*p){
pthread_mutex_lock(&lock);
data[size]="杨键";
sleep(1);
size++;
pthread_mutex_unlock(&lock);
}
void*task2(void*p){
pthread_mutex_lock(&lock);
data[size]="闵卫";
sleep(1);
size++;
pthread_mutex_unlock(&lock);
}
intmain()
{
data[size]="郭镫鸿";
size++;
pthread_tid1,id2;
pthread_create(&id1,0,task1,0);
pthread_create(&id2,0,task2,0);
pthread_join(id1,0);
pthread_join(id2,0);
pthread_mutex_destroy(&lock);
inti;
for(i=0;i
printf("%s",data[i]);
}
printf("n");
}
(1).关于这段代码完成的功能最准确的描述是?
A.多进程中的进程间通信
B.多线程的交互
C.多线程中使用信号量
D.多线程中使用互斥锁保护临界资源
正确答案:D
(2).pthread_mutex_tlock=PTHREAD_MUTEX_INITIALIZER;如果不对
lock进行赋值,那么需要用一个函数进行初始化,该函数是:
d_mutex_create
d_mutex_init
d_mutex_lock
d_mutex_add
正确答案:B
(3).pthread_mutex_lock(&lock);是对代码进行加锁,如果不加锁会有什么问
题:
A.没有问题
元素个数会出现问题
数组中的数据会出现问题,有可能丢失数据
D.数据郭镫鸿会出现问题
正确答案:C
(4).pthread_mutex_unlock(&lock);是对代码进行解锁,如果不解锁会有什么
问题:
A.没有问题
B.代码的执行效率会降低,只有一个线程完全结束了另外一个线程才能继
续运行
C.多线程的执行会变成串行,主线程会优先执行完毕
D.多线程出现死锁现象,有一个线程会无法执行锁定代码
正确答案:D
(5).pthread_join(id1,0);代码实现的功能是:
A.让主线程等待线程1的结束后才能继续运行
B.让所有线程等待线程1的结束后才能运行
C.让主线程等待线程1零秒后继续运行
D.让所有线程等待线程1零秒后继续运行
正确答案:A
本文发布于:2023-01-04 09:31:00,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/89983.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |