二级C语言-6-1
(总分72, 做题时间90分钟)
一、选择题
1. 
以下程序运行后的输出结果是
    #define F(X,Y)(X) * (Y)
    main   
    {  int a=3,b=4;
      printf("%d\n",F(a++,b++));
A. 12 
B. 15 
C. 16 
D. 20
A  B  C  D 
    分值: 2
答案:A
[解析] 本题考查带参数的宏定义,参数只是简单的字符替换,而不是参数的传递。本题中用a++替换X,用b++替换Y,再计算(a++)*(b++)的值,即3*4的值,其结果为12。
2. 
有以下程序
    struc t STU{
        char name [10]
        int num;
    void f1(struct STU c)
    {  struct STU  b={"LiSiGuo",2042};
        c=b;
    }
    void f2(struct STU *c)
    {  struct STU  b={"SunDan",2044);
        *c=b;
    }
    main ( )
    { struct  STU  a={"YangSan",2041},b={"WangYin",2043};
        f1 (a); f2 (&b);
        printf ( "%d %d\n" ,a.num,b.num);
    }
    执行后输出结果是
A. 2041 2044     
B. 2041 2043     
C. 2042 2044     
D. 2042 2043
A  B  C  D 
    分值: 1
答案:A
[解析] 本题考核的知识点是结构体类型的综合应用。本题中首先定义了一个结构体类型STU,它由一个字符数组和一个整形变量 num组成。然后定义两个函数n和n。其中n是值传递的,n是地址传递的。主函数中定义两个结构体变量a和b并分别赋初值,接着调用函数f1(a),由于函数f1是值传递,故执行该函数后并没有改变 a的值,在接着调用函数f2(&b),由于该函数是地址传递,执行该函数后将使变量b的值为{“SunDan”, 2044},故函数最后输
出的a.num和b.num的值为 2041和2044。所以,4个选项中选项A符合题意。
3. 
数据的存储结构是指   
A. 数据所占的存储空间 
printf函数属于B. 数据的逻辑结构在计算机中的存放形式 
C. 数据在计算机中的顺序存储方式 
D. 存储在计算机外存中的数据
A  B  C  D 
    分值: 2
答案:B
[解析] 数据的存储结构,又称为数据的物理结构,是数据的逻辑结构在计算机中的存放形式。数据的存储结构有顺序结构、链式结构、散列结构和索引结构等。
4. 
有下列程序:
        main()
        {  int x=5;
              do
              {printf("%d",x-=4);}
              while(!(--x));
      }
    程序的输出结果是(  )。
A. 1       
B. 20       
C. 1 4     
D. 死循环
A  B  C  D 
    分值: 1
答案:C
[解析] 本题考查do…while循环。①执行printf语句,x=x-4 1,输出1,判断while循环的控制条件,--x=0,则(!(--x))非零,循环条件成立,执行下一次循环;②执行printf语句,x=x-4=-4,输出-4,判断while循环的控制条件,--x=-5,则(!(--x))为零,循环条件不成立,结束循环。
5. 
请读程序段:
    char str[]="ABCD",*p=str,
    printf("%d\n",*(p+4));
    程序段的输出结果是______。
A. 68 
B. 0
C. 字符'D'的地址 
D. 不确定的值
A  B  C  D 
    分值: 1
答案:B
[解析] 在对字符数组赋字符串值时,系统会自动在字符串的末尾加上一个字符串结束标志“\0”,故指向字符数组的指针p的*(p+4)的值为“\0”。由于“\0”的编码值就是0,所以本题输出为0。
6. 
已定义以下函数
  fun(int *p)
  { return *p; }
  该函数的返回值是
A)不确定的值
B)形参p中存放的值
C)形参p所指存储单元中的值
D)形参p的地址值
A  B  C  D 
    分值: 1
答案:C
[解析] 在表达式中出现*p,表示引用指针变量所指存储单元的内容。
7. 
软件设计中模块划分应遵循的准则是
A. 低内聚低耦合 
B. 高内聚低耦合 
C. 低内聚高耦合 
D. 高内聚高耦合
A  B  C  D 
    分值: 2
答案:B
[解析] 模块划分应遵循的准则包括模块之间的耦合和内聚。一般来说,要求模块之间的耦合尽可能地低,即模块尽可能独立;模块的内聚程度尽可能地高,即遵循高内聚、低耦合的原则。
8. 
关系表中的每一横行称为—个______。
A. 元组 
B. 字段 
C. 属性 
D. 码
A  B  C  D 
    分值: 2
答案:A
[解析] 在关系数据库中,关系模型采用二维表来表示,简称“表”。二维表是由表框架及表元组组成。在表框架中,按行可以存放数据,每行数据称为元组。
9. 
下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,请选择填
空。
    #include<stdio.h>
    main()
    {  int i=0,j,k;
      do{i++;k=316-13*i}while(______);
      j=k/11;  printf("316=13*%d+11,%d”,i,j);
    }
A. k/11 
B. k%11 
C. k/11==0 
D. k%11==0
A  B  C  D 
    分值: 1
答案:B
[解析] 本题的关键是两个加数分别能被13和11整除。当k%11的值为0时,则退出循环,将执行j=k/11;语句,输出结果,所以该表达式合理的条件是k%11。
10. 
C语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述正确的是______。
A.关键字可用做用户标识符,但失去原有含义 
B.预定义标识符可用做用户标识符,但失去原有含义 
C.在标识符中大写字母和小写字母被认为是相同的字符 
D.用户标识符可以由字母和数字任意顺序组成
A  B  C  D 
    分值: 1
答案:B
[解析] 关键字不可用作C语言的标识符,所以A选项错误。在标识符中大写字母与小写字母作为不同字符处理,所以C选项错误。标识符由下画线、字母或数字组成,且必须以下画线和字母开始,所以D错误。
11. 
有以下程序
    #include<stdlib.h>
    struct NODE
    { int num;struct NODE*next;};
    main()
    { struct NODE*p,*q,*r;
      p=(struct NODE*)malloc(sizeof(struct NODE));
      q=(struct NODE*)malloc(sizeof(struct NODE));
      r=(struct NODE*)malloc(sizeof(struct NODE));
      p->num=10;q->num=20;r->num=30;
      p->next=q;q->next=r;
      printf("%d\n",p->num+q->next->num);}
    程序运行后的输出结果是
A. 10 
B. 20 
C. 30 
D. 40
A  B  C  D 
    分值: 1
答案:D
[解析] 该题中考查的是简单的单链表,下图就是赋完值后的示意图:容易看到p->num=10,而 q->next就是r,所以q->next->num=30,故答案为40。
   
12. 
下面程序的输出是______。
    main()
    {char *s="12134211";
      int v1=0, v2=0,v3=0,v4=0,k;
      for(k=0;s[k];k++)
        switch(s[k])
        {  default,v4++;
          case'1':v1++;
          case'3':v3++;
          case'2':v2++;
        }
        printf("vl=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4);
    }

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。