华清远见嵌入式学院第一学期期中考试
一、选择题(20题,44分)
1. 常见的Linux发行版本有很多,下面不是Linux发行版本的是(  )。
[A] Red Hat Linux  [B] Ubuntu Linux  [C] X Window  [D] SuSE Linux     
2. 下面不是对Linux操作系统特点描述的是(  )。
[A] 良好的可移植性  [B] 单用户  [C] 多用户  [D] 多任务
3. 下面(  )命令不能用来显示文件的内容。
[A] more  [B] less [C] find  [D] cat
4. 查看创建目录命令mkdir的帮助文档,可以使用命令(  )。
[A] mkdir  h  [B] help  mkdir  [C] mkdir  -p  [D] man  mkdir
5. 假设目录中存在若干文件file_num.txt(num表示文件编号,1~10),使用以下(    )通配符可以挑选出其中的编号为1、3、5的文件。
[A] file_*.txt  [B] flie_?.txt  [C] file_[135].txt  [D] file_[^135].txt
6. 文件权限 r-x-wxr--对应的八进制表示形式为(  )
  [A]  0536      [B]  0654      [C]  0656    [D] 0534   
7. 在C语言中要求运算数必须是整型的运算符是(  )
[A] /    [B] ++    [C] !=    [D] %
8. C语言中,逻辑“真”等价于(  )
[A] 大于零的数  [B] 大于零的整数 [C] 非零的数  [D] 非零的整数
9. 目前流行的两种软件包管理机制,Debian使用(  )软件包,Redhat使用(  )软件包。
[A] tgz    [B] rpm    [C] tar    [D] deb
10. 下面函数的功能是(  )。
int fun (char*x)
{
char*y=x;
while(*y++);
return(y-x-1);
}
[A] 求字符串的长度
[B] 比较两个字符串的大小
[C] 将字符串x复制到字符串y
[D] 将字符串x连接到字符串y后面
11. C语言程序的三种基本程序是(  )
[A] 顺序结构,选择结构,循环结构
[B] 递归结构,循环结构,转移结构
[C] 嵌套结构,递归结构,顺序结构
[D] 循环结构,转移结构,顺序结构
12. 执行下面语句后的输出结果为(  )。
int i = -1;
      if (i < =0)
          printf(“****\n”);
            i = 2;
        else
          printf(“%%%%\n”);
[A] ****    [B] %%    [C] %%%%    [D] 有语法错误。不能正确执行
13. 下面的程序运行结果为(    )。
int main(void)
            {
int x = 3, y = 1, z = 0;
                if(x = y + z)
                      printf(****);
                else
                    printf(####);
        }
[A] 语法有错误,不能编译  [B] ****  [C] ####    [D] 能编译,不能连接
14. 下述程序的输出结果是(    )。
int main(void)
{
int Y=100;
while(Y--);
printf(Y=%d,Y);
}
[A] Y=0    [B] Y=1    [C] Y=-1    [D] Y=随机数
15. 结构体DATA定义如下,则sizeof(struct DATA)的值为(  )。
struct DATA
{
float f1;
int i;
char c2;
};
[A] 6    [B] 8    [C] 12    [D] 16
16. 下述程序第二次的输出结果为(  )。
int main(void) 
      { 
          extern  int  a; 
          int  b=0; 
          static int  c; 
          a+=3;  //a =8
          other();  // a = 13 b=5
          b+=3;  b  =3;
          other(); 
    }     
      int  a=5; 
              other() 
              { 
                  int  b=3; 
                  static  int  c=2; 
                  a+=5; b+=5; c+=5;  //a = 13 b = 8, c =7  //18 13
                  printf("%d,%d,%d\n",a,b,c); 
                  c=b;    c = 8
              }
[A] 13,0,13    [B] 18,8,13    [C] 13,8,13    [D] 18,8,0
17. 以下程序的功能是将字符串s中所有的字符c删除,那么空白处缺少的语句为:(    )。
#include <stdio.h>
int main(void)
{
    char s[80] ;
    int i, j ;
    gets(s) ;
    for ( i = j = 0 ; s [i] != \0’ ; i++ )
        if ( s [i] != c )
                        ;
    s [ j ] = \0’ ;
    puts ( s ) ;
    return 0 ;
}
[A]  s [ j++] = s [ i ]            [B]    s [ ++j ] = s [ i ]
[C] s [ j ] = s [ i ]; j++        [D]    s [ j ] = s [ i ]
18. 下面程序的功能是将已按升序排好序的两个字符串a和b中的字符,按升序归并到字符串c中,请为程序中的空白处选择适当的语句。 
        #include <stdio.h>
        int main(void)
        {
            char a[ ] = acegikm;
            char b[ ] = bdfhjlnpq;
            char c[80], *p;
            int i = 0, j= 0, k = 0;
            while( a[i] != \0 && b[j] != \0 )
            {
                if ( a[i] < b[j] )  { (    ) }
                else { (   ) }
                k++;
            }
            c[k] = \0;
            if ( )  p = b + j;
            else  p = a + i;
            strcat ( c , p );
            puts ( c );
        }
[A] c[k] = a[i]; i++;            [B] c[k] = b[j]; i++;
  [C] c[k] = a[i]; j++;            [D] c[k] = a[j]; j++;
② [A] c[k] = a[i]; i++;            [B] c[k] = b[j]; i++;
  [C] c[k] = a[i]; j++;            [D] c[k] = b[j]; j++;
[A] a[i] = \0                    [B] a[i] != \0
  [C] b[j] = \0                    [D] b[j] != \0
19. 在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是(  )。
[A]  extern    [B]  register    [C]  auto    [D]  static
20. 以下程序的运行结果为(  )。
        void sub(int x, int y, int *z)
            { *z = y – x ; }
            int main(void)
            {
                int a,b,c ;
                sub(10, 5, &a) ;
                sub(7, a, &b) ;
                sub(a, b, &c) ;
                printf( “%4d,%4d, %4d\n,a,b,c);
            }
[A] 5,  2,  3    [B]  -5, -12,  -7    [C]  -5, -12, -17    [D] 5,  -2,  -7
二、判断题(6题,每题2分,共12分)
1. FAT32是Linux系统中广泛使用的一种文件格式。( F  )
2. Linux系统的文件组织结构犹如倒置的树。(  T )
3. Linux操作系统将所有硬件都视为文件来处理,包括硬盘分区、CD-ROM、软驱以及其他USB移动设备等,将其挂载到文件系统目录树中的一个子目录中。( T  )
4. Shell是一个命令编译器,将用户命令编译成二进制程序,交给操作系统执行。( F  )
5. 在默认情况下,所定义的Shell变量的作用域是局部有效。( T  )
6. 使用DHCP服务配置动态IP的过程,就犹如一个租借过程。( T  )
三、填空题(6题,第5题4分,其余每题2分,共14分)
  1. 条件“2 < x < 3或x < -10”的C语言表达式为( (x>2 && x<3 ) ||x<10)                              )
2. 若有以下定义和语句,则*p[0]引用的是a数组元素中的(  NO.0    ),*(p[1]+1)引用的是a数组元素中的(    NO.3      )
int *p[3], a[6], i;
for( i = 0; i < 3; i++) p[i] = &a[2*i];
3. 若有以下输入(<CR>代表回车换行符),则下面程序的运行结果为(    7    )linux换行按哪个键。
1,2<CR>
int main(void)
{
    int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
    int (*p)[4], i, j;
    p = a;
    scanf(%d,%d,&i,&j);
    printf(%d\n, *(*(p+i)+j));
    return 0;
}
4. shell脚本的本质是(  命令行解释器              )。
5. gcc的编译步骤按先后顺序分别为(  预处理,编译,链接,运行                      )。