嵌入式班阶段考试试卷(C、C++、Linux部分)
说明:
1. 试卷总分100分。
2. 试卷中代码的运行环境为:Linux 2.6.23环境,平台为32为处理器系统,编译器为GCC4.4.3。
一. 选择题:
1. 下面哪项不是链表优于数组的特点?( )
A. 方便删除 B. 方便插入 C. 长度可变 D. 存储空间小
2. 以下程序的输出结果是( )。
int func(int n)
{ static int m=0;
m=m+n;
return(m); }
main()
{ int i,a=0;
for(i=1;i<=4;i++)
a+=func(i);
printf("%d\n",a); }
A.10 B.15 C.20 D.22
3. 以下程序执行后,a的值是( )
void main()
{
int a,k=4,m=6,*p1=&k,*p2=&m;
a = p1==&m;
printf(“%d\n”,a);
}
A) 4 B) 1 C) 0 D) 运行时出错,a无定值
4. 编译以下程序时,结果是( )。
#include<iostream.h> //第1行
#define aa 123; //第2行
void main(void) //第3行
{cout<<aa<<’\n’;} //第4行
A.编译时第2行出错 B.编译时第4行出错
C.编译时第2行和第4行出错 D.编译时无错误
5. 在linux系统中,所有文件系统的挂载信息存放在配置文件( )中:
A./etc/passwd B./etc/fstab
C./etc/modules.conf D./etc/inittab
6. 你使用命令“vi /etc/inittab”查看该文件的内容,你不小心改动了一些内容,为了防止系统出问题,你不想保存所修改内容,你应该如何操作( )。
A.在末行模式下,键入:wq B.在末行模式下,键入:q!
C.在末行模式下,键入:x! D.在编辑模式下,键入“ESC”键直接退出vi
7. 建立一个新文件可以使用的命令为( )
A.chmod B.more C.cp D.touch
8. GDB中设置断点的命令是( )。
A.bt B.break C.info D.display
9. 系统调用 fork 是用来创建一个子进程,当调用执行成功时,返回值为( )。
A.对父进程返回子进程的 PID,对子进程返回 0
B.对子进程返回父进程的 PID,对父进程返回 0
C.对父进程返1,对子进程返回 0
D.对父进程0,对子进程返回 1
10. 如果采用别的文件名来书写makefile,比如Make.linux,则在运行的时候要采用( )选项。
A.-f B.-c C.-i D.-name
11. 所有的LINUX文件和目录都具有拥有权和许可权,现在我们有一名为fido的文件,并用chmod 551 fido 对其进行了许可权的修改,我们用 ls –al 查看到如下的几个文件许可权信息,问那一个文件的许可权是fido文件的。( )
A.–rwxr-xr-x B.-rwxr—r-- C.-r—r—r-- D.-r-xr-x—x
12. 在下面所列出的服务器类型中那一种可以使用户在异构网络操作系统之间进行文件系统共享的。( )
A.FTP B. Samba C.DHCP D.Squid
13. 下列关于链接描述,错误的是( ) 。
A 硬链接就是让链接文件的i节点号指向被链接文件的i节点
B 硬链接和符号连接都是产生一个新的i节点
C 链接分为硬链接和符号链接
D 硬连接不能链接目录文件
14. 在重新启动Linux系统的同时把内存中的信息写入硬盘,应使用( )命令实现。
A # reboot B # halt C # reboot D # shutdown –r now
15. 在使用匿名登录ftp时,用户名为( )。
A users B anonymous C root D guest
16. 当用命令ls –al查看文件和目录时,欲观看卷过屏幕的内容,应使用组合键( )。
A Shift+Home B Ctrl+ PgUp C Alt+ PgDn D Shift+ PgUp
17. 在/home/stud1/wang目录下有一文件file,使用( )可实现在后台执行命令,此命令将file文件中的内容输出到file.copy文件中。
A cat file >;file.copy B cat >;file.copy C cat file file.copy & D cat file >;file.copy &
18. 关于进程调度命令,( )是不正确的。
A 当日晚11点执行clear命令,使用at命令:at 23:00 today clear
B 每年1月1日早上6点执行date命令,使用at命令:at 6am Jan 1 date
C 每日晚11点执行date命令,crontab文件中应为:0 23 * * * date
D 每小时执行一次clear命令,crontab文件中应为:0 */1 * * * clear
19. 系统中有用户user1和user2,同属于users组。在user1用户目录下有一文件file1,它拥有644的权限,如果user2用户想修改user1用户目录下的file1文件,应拥有( )权限。
A 744 B 664 C 646 D 746
20. 下列程序的输出是什么?( )
#include <iostream>
#include <string>
using namespace std;
int main()
{
int x = 10, y = 10, I;
for(i=0; x>8; y=i++)
{
printf(“%d, %d,”, x--, y);
}
return 0;
}
A 10,0,9,1 B 10,10,9,0 C 10,1,9,2 D 9,10,8,0
21. 下列代码,在编译时哪句会出错?( )
struct Test
{
Test(int){}
Test(){}
void fun(){}
};
int main()
{
Test a(1); //语句1
a.fun(); //语句2
Test b(); //语句3
b.fun(); //语句4
return 0;
}
A 语句1 B 语句2 C 语句3 D 语句4 E 没有错误
22 which definition is correct?( )
A int a[]; B int n=10,a[n]; C int a[10+1]={0}; D int a[3]={1,2,3,4};
23 How many bytes will be occupied for the variable(definition:char **a[3][4])?( )
A 64 B 96 C 48 D 128
二.简答题:(共6题,每题4分,总分24分)
1. 嵌入式系统总是要用户对变量或寄存器进行位操作。给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3。在以上两个操作中,要保持其它位不变。
2. 嵌入式系统经常具有要求程序员去访问某特定的内存位置的特点。在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。编译器是一个纯粹的ANSI编译器。写代码去完成这一任务。
3.写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值(3分)
int a = 4;
(A)a += (a++); (B) a += (++a) ;(C) (a++) += a;(D) (++a) += (a++);
a = ?
4.用变量a给出下面的定义
a) 一个整型数
b)一个指向整型数的指针
c)一个指向指针的的指针,它指向的指针是指向一个整型数
d)一个有10个整型数的数组
e) 一个有10个指针的数组,该指针是指向一个整型数的。
f) 一个指向有10个整型数数组的指针
g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数
h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数
5. 指针和引用的区别?
6.下面程序运行后的输出是什么?
typedef struct
{
int a:2;
int b:2;
int c:1;
}test;
int main()
{
test t;
t.a = 1;
t.b = 3;
t.c = 1;
printf("%d",t.a);
printf("%d",t.b);
printf("%d",t.c);
}
7. 某32位系统下, C程序,请计算sizeof 的值.
char str[] = “http://www.ibegroup.com/”
char *p = str ;
int n = 10;
请计算
sizeof (str ) = ?(1)
sizeof ( p ) = ?(2)
sizeof ( n ) = ?(3)
void Foo ( char str[100]){
请计算
sizeof( str ) = ?(4)
}
void *p = malloc( 100 );
请计算
sizeof ( p ) = ?(5)
8. Void GetMemory(char **p, int num){
*p = (char *)malloc(num);
}
void Test(void){
char *str = NULL;
GetMemory(&str, 100);
strcpy(str, "hello");
printf(str);
}
请问运行Test 函数会有什么样的结果?
(2). void Test(void){
char *str = (char *) malloc(100);
strcpy(str, “hello”);
free(str);
if(str != NULL){
strcpy(str, “world”);
printf(str);
}
}
请问运行Test 函数会有什么样的结果?
(3). char *GetMemory(void){
char p[] = "hello world";
return p;
}
void Test(void){
char *str = NULL;
str = GetMemory();
printf(str);
}
请问运行Test 函数会有什么样的结果?
8. 写出下列代码的输出内容
#i nclude<stdio.h>
int inc(int a)
{
return(++a);
}
int multi(int*a,int*b,int*c)
{
return(*c=*a**b);
}
typedef int(FUNC1)(int in);
typedef int(FUNC2) (int*,int*,int*);
void show(FUNC2 fun,int arg1, int*arg2)
{
INCp=&inc;
int temp =p(arg1);
fun(&temp,&arg1, arg2);
printf("%d\n",*arg2);
}
main()
{
int a;
show(multi,10,&a);
return 0;
}
9. 网络编程中设计并发服务器,使用多进程 与 多线程,请问有什么区别?
10. 以下代码中的两个sizeof用法有问题吗?
void UpperCase( char str[] ) // 将 str 中的小写字母转换成大写字母
{
for( size_t i=0; i<sizeof(str)/sizeof(str[0]); ++i )
if( 'a'<=str[i] && str[i]<='z' )
str[i] -= ('a'-'A' );
}
char str[] = "aBcDe";
cout << "str字符长度为: " << sizeof(str)/sizeof(str[0]) << endl;
UpperCase( str );
cout << str << endl;
11. ISO的七层模型是什么?tcp/udp是属于哪一层?tcp/udp有何优缺点?
三. 编程题(共两题,总分16分)
1. 文件中有一组整数,要求排序后输出到另一个文件中(10分)
2.用Shell编程,判断一文件是不是字符设备文件,如果是将其拷贝到 /dev 目录下。(6分)
3. 编写strcat函数(已知strcat函数的原型是char *strcat (char *strDest, const char *strSrc);
其中strDest 是目的字符串,strSrc 是源字符串。
不调用C 的字符串库函数,请编写函数 strcat