二级C语言-7-2
(总分73.5, 做题时间90分钟)
一、选择题
1. 
设a和b均为int型变量,且a=6、b=11、c=3,则能使值为3的表达式是   
A. b%(c%4) 
B. b%(c-a%5) 
C. b%a-a%5 
D. (b%a)-(a%4)
A  B  C  D 
    分值: 1
答案:D
[解析] 选项D)括号内的运算分别是b%a=11%6=5和a%c=6%4=2,最后得到5-2=3。
2. 
算法的时间复杂度是指
A. 执行算法程序所需要的时间 
B. 算法程序的长度 
C. 算法执行过程中所需要的基本运算次数 
D. 算法程序中的指令条数
A  B  C  D 
    分值: 1
答案:C
[解析] 算法的复杂度主要包括算法的时间复杂度和算法的空间复杂度。所谓算法的时间复杂度是指执行算法所需要的计算工作量,即算法执行过程中所需要的基本运算的次数;算法的空间复杂度一般是指执行这个算法所需要的内存空间。
3. 
以下程序的运行结果为
    #include"stdio.h"
    main()
    {  int m,n;
      for(m=0,n=10;m<n;m+=3,n--);
      printf("%d,%d\n",m,n);}
A. 6,7 
B. 7,6 
C. 9,7 
D. 7,9
A  B  C  D 
    分值: 1
答案:C
[解析] for后一对括号中的表达式可以是任意有效的C语言表达式。该题目的循环体部分为空语句,循环控制条件为m<n,每一次m增3,n减1,每当循环体执行结束时,循环控制变量m,n就会分别被增3和减1。
4. 
负责数据库中查询操作的数据库语言是______。
A.数据定义语言 
B.数据管理语言 
C.数据操纵语言 
D.数据控制语言
A  B  C  D 
    分值: 1
答案:C
[解析] 数据定义语言:负责数据的模式定义与数据的物理存取构建;数据操纵语言:负责数据的操纵,包括查询及增、删、改等操作;数据控制语言:负责数据完整性、安全性的
定义与检查以及并发控制、故障恢复等功能。
5. 
下列选项中,不是一个算法的基本特征的是   
A. 完整性 
B. 可行性 
C. 有穷性 
D. 拥有足够的情报
A  B  C  D 
    分值: 2
答案:A
[解析] 作为一个算法,一般应该具有下列4个特征:①可行性,即考虑到实际的条件能够达到一个满意的结果:②确定性,算法中的第一个步骤都必须是有明确定义的:③有穷性,一个算法必须在有限的时间内做完;④拥有足够的情报。
6. 
c语言编写递归函数
若有定义“int a=10,b=9,c=8;”,顺序执行下列语句后,变量b中的值是______。
    c=(a-=(b-5));c=a% 11)+(b=3);
A. 2 
B. 3 
C. 4 
D. 5
A  B  C  D 
    分值: 1
答案:B
7. 
以下函数按每珩8个输出数组中的数据
        void fun( iht*w, int n)
        { inti;
          for(i=0;i<n,i++)
          { ______
          printf("%d",w[i]);
          }
          printf("\n");
        }
        下划线处应填入的语句是______。
A. if(i/8=0)printf("\n); 
B. if(i/8=0)continue;       
C. if(i%8=0)printf("\n"); 
D. if(i%8=0)continue;
A  B  C  D 
    分值: 2
答案:C
[解析] 本题主要考查输出换行的问题,要求每行8个输出,因此,下划线处应填的语句是if(i%8=0)printf("\n");选项A相当于空—行,前七个数每输出—个数换行,从第八个数以后不换行输出剩下的数。选项B相当于前八个数不输出,从第九个数开始不换行输出剩下的数。选项D相当于不换行从数组中的第二个数开始输出,凡是i对8取模为0的数,均不输出。所以选项C是正确的。
8. 
有以下等程序
#include <string. h>
void f(char *s, char *t)
{ char  k;
  k=*s; *s=*t; *t=k;
  s++;        t--;
  if(*s)  f(s, t);
}
main ()
{ char stt[10] ="abcdefg", *p;
    p=str+strlen (str)/2+1;
    f (p,p-2);
    print f ( "%s\n", str);
}
A.  abcdefg   
B.  gfedcba   
C.  gbcdefa   
D.  abedcfg
A  B  C  D 
    分值: 1
答案:B
[解析] 本题考查的是递归函数。在一个函数中直接或间接地调用了自身,则称此函数为递归函数。本题定义的函数f()就是一个递归函数。它先交换两个字符指针所指的内容,然后将第1个指针往后移动一位,第2个指针往前移动一位,如果第1个指针所指内容不是字符串
结束标志,则递归调用自身。主函数中首先定义了一个字符数组sTR[10]="abcdefg",然后定义了一个字符指针 p=str+strlen(str)/2+1,即让p指向str+4(或&str[4])的位置.然后调用f(p,p-2);,这使得p所指的str[4]及其以后的2个位置str[5]、str[6]中的内容同p-2所指的3tr[2]及其以前的2个位置str[1]、str[0]中的内容互相交换。即让整个字符串逆序。所以本题应该选择B。
9. 
下列程序的输出结果是
    #include"stdio.h"
    #define N3
    #define M3
    void fun(int a[M][N])
    {  printf("%d\n",*(a[1]+2));}
    main()
    {  int a[M][N];
    int i,j;
    for(i=0;i<M;i++)
    for(j=0;j<N;j++)
    a[i][j]=i+j-(i-j);
    fun(a);}
A. 3 
B. 4 
C. 5 
D. 6
A  B  C  D 
    分值: 2
答案:B
[解析] 若有以下定义:int a[3][4],i,j;且当 0<=i<3,0<=j<4,则可以有以下几种方式来引用数组中的第i行,第j列的元素:
   a[a][j],*(a[i]+j),*(*(a+i)+j),(*(a+i)[j],*(&a [0][0]+4*i+j)”。
10. 
下列叙述中错误的是
A. 在程序中凡是以“#”开始的语句行都是预处理命令行 
B. 预处理命令行的最后不能以分号表示结束 
C. #define MAX是合法的宏定义命令行 
D. C程序对预处理命令行的处理是在程序执行的过程中进行的
A  B  C  D 
    分值: 2
答案:D
[解析] C语言中的预处理命令以符号#开头,这些命令是在程序执行前,即编译时进行处理的。
11. 
以下叙述中正确的是______。
A. 预处理命令行必须位于C源程序的起始位置 
B. 在C语言中,预处理命令行都以"#"开头 
C. 每个C程序必须在开头包含预处理命令行:#include<stdio.h> 
D. C语言的预处理不能实现宏定义和条件编译的功能
A  B  C  D 
    分值: 1
答案:B
评析:选项B正确,原因是这部分语句与C程序其他部分的语句是有区别的,所以在每个预处理语句之前都有一个"#"符号以示区别。C提供三种预处理语句:(1) 宏替换,(2) 文件包含,(3) 条件编译。如果—个文件中要引用另外一个文件时才需要在开头包含预处理命令行:#include<stdio.h>。
12. 
可以在C语言中用做用户标识符的是______。
A. void  define  WORD
B. as_b3  _123    If
C. for  -abc  cas
D. 2c  Do  SIG
A  B  C  D 
    分值: 1

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