考试场次:2013_09月考_9月2日_C++ 试卷名称:2013年09月_C++_CSD/ESD1306(new)
A. Select dept_id,count(dept_id),d.name from s_emp,s_dept d where dept_id=d.id group by dept_id
B. Select dept_id,count(dept_id),sum(d.name) from s_emp,s_dept d where dept_id=d.id group by dept_id
C. Select dept_id,count(dept_id),max(d.name) from s_emp,s_dept d where dept_id=d.id group by dept_id
D. Select dept_id,count(dept_id),count(d.name) from s_emp,s_dept d where dept_id=d.id group by dept_id
正确
:C
2. 打开共享库文件
的是?
A. dlerror
B. dlsym
C. dlopen
D. dlclose
正确答案:C
3. 下面分组语句正确的是?
A. Select name,dept_id from s_dept d,s_emp e where dept_id=id group by dept_id;
B. Select e.name,dept_id from s_dept d,s_emp e where dept_id=d.id group by dept_id;
C. Select e.name,dept_id from s_dept d,s_emp e where dept_id=d.id group by dept_id;
D. Select max(name),dept_id from s_dept d,s_emp e where dept_id=d.id group by dept_id;
正确答案:D
4. 在建
时,经常需要用到约束,请问下面哪个不是常见约束?
A. 主键
B. 非空
C. 回滚
D. 外键
正确答案:C
5. 阅读如下代码:
int fd = open("a.txt", O_WRONLY|O_CREAT|O_TRUNC, 0666);
int flags = fcntl(fd, F_GETFL);
printf("flags=%d\n", flags);
switch((空白处)){
case O_RDONLY: printf("RDONLY\n");break;
case O_WRONLY: printf("WRONLY\n");break;
case O_RDWR: printf("RDWR\n");break;
}
空白处的条件应该是?
A. flags & 5
B. flags
C. flags & 3
D. flags & 4
正确答案:C
6. 关于排序,下列说法错误的是?
A. 排序的关键字是order by
B. 升序是默认排序顺序
C. 降序的关键字是desc
D. 不能使用多字段排序
正确答案:D
7. 下列建表的SQL语句错误的是?
A. Create table test123(
Id number,
Dname varchar2(30)
)
B. Create table test123(
Id number,
Dname varchar2(30),
MyDate date
)
C. Create table test123(
Id number,
Dname char(30)
)
D. Create table test123(
Id number,name varchar2(30),
)
正确答案:B
8. 如果想在代码中禁止使用goto,可以采用的是?
A. #pragma GCC dependency goto
B. #pragma GCC poison goto
C. #pragma pack(2)
D. #pragma GCC goto
正确答案:B
9. 显示所有的工资级别和级别对应的salary和first_name的SQL语句是?
A. Select grade,first_name,salary from s_emp,salgrade where salary(+) between losal and hisal
B. Select grade,first_name,salary from s_emp,salgrade where salary between losal and hisal(+)
C. Select grade,first_name,salary from s_emp,salgrade where salary between(+) losal and hisal
D. Select grade,first_name,salary from s_emp,salgrade where salary(+) between losal and hisal(+)
正确答案: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.
select first_name,salary from s_emp order by salary,first_name
B.
select first_name,salary from s_emp order by salary,first_name asc
C.
select first_name,salary from s_emp order by salary desc,first_name
D. select first_name,salary from s_emp order by salary,first_name desc
正确答案:D
13. Plsql中定义变量,哪个是正确的?
A. Var_i int ;
B. Number Var_i;
C. Var_i number;
D. var_i number not null;
正确答案:C
14. 阅读如下代码:
int sockfd = socket(PF_INET, SOCK_DGRAM, 0);
if(sockfd==-1)perror("socket创建失败"),exit(-1);
//2.准备地址
(空白处)
//3.绑定
int res = bind(sockfd,
(struct sockaddr*)&addr, sizeof(addr));
if(res == -1)perror("绑定失败"),exit(-1);
printf("绑写成功\n");
//4.通信
char buf[100] = {};
int len = read(sockfd, buf, sizeof(buf));
if(len<=0) perror("读取失败"),exit(-1);
printf("读到%d字节的数据,内容是:%s\n",len,buf);
//5.关闭
close(sockfd);
空白出应该填上的代码是?
A. struct sockaddr_un addr;
addr.sin_family = PF_INET;
addr.sin_port = htons(8888);
addr.sin_addr.s_addr = inet_addr("192.168.182.225");
B. struct sockaddr_un addr;
addr.sin_family = PF_INET;
addr.sin_port = htons(8888);
addr.sin_addr.s_addr = "192.168.182.225";
C. struct sockaddr_in addr;
addr.sin_family = PF_INET;
addr.sin_port = htons(8888);
addr.sin_addr.s_addr = inet_addr("192.168.182.225");
D. struct sockaddr_in addr;
addr.sin_family = PF_INET;
addr.sin_port = htons(8888);
addr.sin_addr.s_addr = "192.168.182.225";
正确答案:C
15. 给名字是Smith的员工增加100元的工资的SQL语句是?
A. Update s_emp set salary=salary+100 where last_name=’Smith’
B. Update s_emp set salary=salary+100
C. Update s_emp salary=salary+100 where last_name=’Smith’
D. Update s_emp set salary=100 where last_name=’Smith’
正确答案:A
16. Plsql中定义了一个数字变量 var_sum 对var_sum的操作不正确的是?
A. Var_sum:=100;
B. Select salary into var_sum from s_emp where id=1;
C. Var_sum:=var_sum+100;
D. Var_sum=1000;
正确答案:D
17. 下列关于进程间通信不正确的是?
A. 共享内存是进程间通信最快的方式。
B. 在使用msgsnd发送消息时,如果消息队列满,则发送阻塞。
C. 无名管道的适用范围是父子进程。
D. 若此信号量的值为正,则进程可以使用资源。进程将信号量加1表示使用了资源。
正确答案:D
18.
阅读如下代码:
void* p = sbrk(0);
int r = brk(p+4);
brk(p+8);
brk(p+4);
请问目前占用的内存空间字节是?
A. 16
B. 8
C. 4
D. 0
正确答案:C
19. 把s_emp月薪超过1000的员工列出来的SQL语句是?
A.
select last_name,salary from s_emp where salary>1000
B.
select name,salary from s_emp where salary>1000
C.
select name,salary from s_emp where salary<1000
D. select last_name,salary from s_emp where salary<1000
正确答案:A
20. 下列不是内存区域的是?
A. 代码区
B. 堆区
C. 连接区
D. BSS段
正确答案:C
21. 需要向包含date类型字段mydate的表test中插入date类型,但目前需要插入的值为’2008-12-11’,请问哪个SQL语句是最合适的?
A. insert into test(mydate) values(to_date(‘2008-12-11’,‘YYYY-MM-DD’))
B. insert into test(mydate) values(to_char(‘2008-12-11’,‘YYYY-MM-DD’))
C. insert into test(mydate) values(to_date(‘2008-11-12’,‘YYYY-MM-DD’))
D. insert into test(mydate) values(sysdate)
正确答案:A
22. 以下不属于Linux阵营的Unix操作系统是?
A. Ubuntu
B. Android
C. AIX
D. redhet
正确答案:C
23. 统计每个部门的人数的SQL语句是?
A. select dept_id,max(dept_id) from s_emp group by dept_id
B. select dept_id,avg(dept_id) from s_emp group by dept_id
C. select dept_id,count(dept_id) from s_emp group by dept_id
D. select dept_id,sum(dept_id) from s_emp group by dept_id
正确答案:C
24.
阅读如下代码:
struct sembuf op;
op.sem_num = 0;//对下标为0的信号量操作
(空白处1)
op.sem_flg = 0;//无法完成时阻塞,可以是IPC_NOWAIT
semop(semid, &op, 1);
printf("访问共享资源\n");
sleep(30);
printf("完成共享资源的访问\n");
(空白处2)
semop(semid, &op, 1);
空白处1和空白处2应该填上的代码是?
A. 不需要填写代码
B. op.sem_op = 1;和op.sem_op = 1;
C. op.sem_op = 1;和op.sem_op = -1;
D. op.sem_op = -1;和op.sem_op = 1;
正确答案:D
25. 关于信号,以下说法错误的是?
A. 信号分为可靠信号和不可靠信号
B. 信号的默认处理 ,80%的情况是退出进程
C. 所有信号都可以忽略
D. 当前用户只能给自己的进程发信号,不能给别的用户的进程发信号
正确答案:C
26. 已知表salgrade字段如下:
Hisal - 最高薪水
Losal - 最低薪水
grade - 薪水等级
查询每个员工的 first_name 和salary以及对应的薪水等级的SQL语句是?
A. select first_name,salary,grade from s_emp ,salgrade where salary between hisal and losal
B. select first_name,salary,grade from s_emp ,salgrade where salary between losal and hisal
C. select first_name,salary,grade from s_emp where salary between losal and hisal
D. select first_name,salary,grade from s_emp ,salgrade where salary> losal and
#include
#include
#include
#include
#include
#include
#include
void copyFile(const char*from,const char*to){
//判断一下传进来的参数是不是空
(空白5);
int ff = open(from,O_RDONLY);
if(-1==ff){perror("打开原文件失败\n");return ;}
int ft = open(to,O_RDWR|O_CREAT,0666);
if(-1==ft){perror("打开目标文件失败\n");return ;}
(空白1);
close(ff);
close(ft);
}
void backup(const char*from,const char*to){
//判断一下传进来的参数是不是空
(空白5);
//打开要被复制的文件夹
DIR *q = opendir(from);
if(NULL==q){
perror("打开文件夹失败\n");
return ;
}
//创建一个文件夹
mkdir(to,0777);
struct dirent *p = NULL;
struct stat s;
char pathFrom[256] = {};
char pathTo[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(s.st_mode)){
//判断一下是不是.c/.h文件
char* pff = pf+strlen(pf)-2;
(空白4);
{
copyFile(pathFrom,pathTo);
}else{
continue ;
}
}
else if(S_ISDIR(s.st_mode)){
(空白2);
}
}
closedir(q);
}
int main(int argc,char *argv[]){
(空白3);
return 0;
}
(1). 空白1处:
A.
int len = 0;
char buf[1024] = {};
while((len= read(ff,buf,sizeof(buf)))>0){
write(ft,buf,len);
}
B.
char buf[1024] = {};
while(read(ff,buf,sizeof(buf))>0){
write(ft,buf,sizeof(buf));
}
C.
int len = 0;
char buf[1024] = {};
while((len= write(ff,buf,sizeof(buf)))>0){
read(ft,buf,len);
}
D.
char buf[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;
}else{
backup(pathFrom,pathTo);
}
D.
if("."==p->d_name||".."==p->d_name){
continue;
}else{
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];
int size=0;
pthread_mutex_t lock
= 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);
}
int main()
{
data[size] = "郭镫鸿";
size++;
pthread_t id1, 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);
int i;
for(i=0; i