一起答

2017年计算机二级考试c语言题库试卷(1)

如果您发现本试卷没有包含本套题的全部小题,请尝试在页面顶部本站内搜索框搜索相关题目,一般都能找到。
  1. 若文件指针fp已正确指向文件,ch为字符型变量,以下不能把字符输出到文件中的语句是( )。

    • A.fget(f0,ch);
    • B.foutc(ch,fo);
    • C.fprinff(fp,”%c”,ch);
    • D.fwrite(&ch,sizeof(ch),1,fp);
  2. 下面判断正确的是

    • A.char *a="china";等价于 char *a;*a="china";
    • B.char str[5]={"china"};等价于char str[]={"china"};
    • C.char *s="china";等价于 char *s;s="china";
    • D.char c[4]="abc",d[4]="abc";等价于char c[4]=d[4]="abc";
  3. 树是结点的集合,它的根结点数目是

    • A.有且只有1
    • B.1或多于1
    • C.0或1
    • D.至少2
  4. 以下能正确定义一维数组的选项是

    • A.int num[ ];
    • B.#define N 100 int num[N];
    • C.int num[0..100];
    • D.int N=100; int num[N];
  5. 以下程序的输出结果是

    #include

    void prt (int *x, int*y, int*z)

    {printf("%d,%d,%d\n",++*x,++*y,*(z++));}

    main()

    {int a=10,b=40,c=20;

    prt (&a,&b,&c);prt (&a,&b,&c);}

    • A.11,42, 31 12,22,41
    • B.11,41,20 12,42,20
    • C.11,21,40 11,21,21
    • D.11,41,21 12,42,22
  6. 有以下程序

    #include

    main()

    { char c1,c2,c3,c4,c5,c6;

    scanf(" % c % c % c % c",&c1,&c2,&c3,&c4);

    c5=getchar(); c6=getchar();

    putchar(c1); putchar(c2);

    printf(" % c % c\n",c5,c6);

    }

    程序运行后,若从键盘输入 ( 从第 1 列开始 )

    123< 回车 >

    45678< 回车 >

    则输出结果是

    • A.1267
    • B.1256
    • C.1278
    • D.1245
  7. 设一棵满二叉树共有15个结点,则在该满二叉树中的叶子结点数为(  )。

    • A.7
    • B.8
    • C.9
    • D.10
  8. 有以下程序

    void f(int n,int *r)

    {

    int r1=0;

    if(n%3==0)    r1=n/3;

    else if(n%5==0)    r1=n/5;

    else  f(--n,&r1);      *r=r1;

    }

    main()

    {

    int m=7,r;

    f(m,&r);printf("%d",r);

    }

    程序运行后的输出结果是

    • A.2
    • B.1
    • C.3
    • D.0
  9. 若有以下定义和语句char c1='b',c2='e'printf("%d,%c\n",c2-c1,c2-'a'+A); 则输出结果  ( )

    • A.2,M
    • B.3,E
    • C.2,E
    • D.输出项与对应的格式控制不一致,输出结果不确定
  10. 数据库设计包括两个方面的设计内容,它们是______。

    • A.概念设计和逻辑设计
    • B.模式设计和内模式设计
    • C.内模式设计和物理设计
    • D.结构特性设计和行为特性设计
  11. 设整型数i=5,则printf("%d",i+++++i);的输出为______。

    • A.10
    • B.11
    • C.12
    • D.语法错误
  12. 下列程序的执行结果是 ______。#include<stdio.h>union un{ int i;  char c[2];};void main(){ union un x;  x.c[0]=10;  x.c[1]==1;  printf("\n%d",x.i);}

    • A.266
    • B.11
    • C.265
    • D.138
  13. 若有定义"int*p[3];",则以下叙述中正确的是( )。

    • A.定义了一个基类型为int的指针变量p,该变量具有3个指针
    • B.定义了一个指针数组p,该数组含有3个元素,每个元素都是基类型为int的指针
    • C.定义了—个名为*p的整型数组,该数组含有3个int类型元素
    • D.定义了一个可指向一维数组的指针变量p,所指一维数组应具有3个int类型元素
  14. 下列程序的输出结果是

    #include "stdio.h"

    #define N 3

    #define M 3

    void fun(int a[M][N])

    { printf("%d\n",*(a[1]+2));}

    main()

    { int a[M][N];

    int i,j;

    for(i=0;i

    for(j=0;j

    • a[i][j]=i+j-(i-j);
    • fun(a);}
    • A.3
    • B.4
    • C.5
    • D.6
  15. 下列写法正确的是(  )。

    • A.main () { int i=3,j; j=5 }
    • B.main() { int i=3;
    • C.main ()
    • D.main() {;}
  16. 下列关于字符串的说法中错误的是

    • A.在C语言中,字符串是借助于字符型一维数组来存放的,并规定以字符'\0'作为字符串结束标志
    • B.'\0'作为标志占用存储空间,计入串的实际长度
    • C.在表示字符串常量的时候不需要人为在其末尾加入'\0'
    • D.在C语言中,字符串常量隐含处理成以'\0'结尾
  17. 运行下列程序,若从键盘输入字符“a”,则输出结果是(   )。

    char c;

    c=getchar;

    if(c>=a&&c<=g)c=c+4:

    else if(c>=9&&c<=2)c=c-21:

    else printf("input error! \n");

    putchar(c);

    • A. f
    • B.t
    • C.e
    • D.d
  18. 有以下程序

    main()

    { int i,s=0,t[]={l,2,3,4,5,6,7,8,9};

    for(i=0;i<9;i+=2) s+=*(t+i);

    printf(" % d\n",s);

    }

    程序执行后的输出结果是

    • A.45
    • B.20
    • C.25
    • D.36
  19. 下面程序的运行结果是______。 #include<stdio.h> #include<string.h> fun(char*w,int n) { char t,*s1,*s2; s1=w;s2=w+n-1; while(s1<s2) {t=*s1++;*s1=*s2--;*s2=t;} } main() { char*p; p="1234567"; fun(p,strlen(p)); puts(p); }

    • A.7654321
    • B.1714171
    • C.1711717
    • D.7177171
  20. 若x=10010111,则表达式(3+(int)(x))&(~3)的运算结果是(  )。

    • A.10011000
    • B.10001100
    • C.10101000
    • D.10110000
  21. 以下不能定义为用户标识符的是( )。

    • A.scanf
    • B.Void
    • C.3com
    • D.int
  22. 在一个C程序中

    • A.main函数必须出现在所有函数之前
    • B.main函数可以在任何地方出现
    • C.main函数必须出现在所有函数之后
    • D.main函数必须出现在固定位置
  23. 下列合法的声明语句是(  )。

    • A.int_abc=50;
    • B.double int=3+5e2.5;
    • C.long do=1L;
    • D.float 3_asd=3e-3;
  24. 设x和y均为int型变量,且x=10,y=3,则以下语句的输出结果是 ( )   printf(" %d,%d\n",x - -,- -y);

    • A.10,3
    • B.9,3
    • C.9,2
    • D.10,2
  25. 下列关于C语言用户标识符的叙述中正确的是

    • A.用户标识符中可以出现下划线和中划线(减号)
    • B.用户标识符中不可以出现中划线,但可以出现下划线
    • C.用户标识符中可以出现下划线,但不可以放在用户标识符的开头
    • D.用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头
  26. 字符串"\\"ABCDEF\"\\”的长度是(  )。

    • A.11
    • B.10
    • C.5
    • D.3
  27. 下述程序的输出结果是(   )。

    #include

    void main

    { int b[6]={2,4,6,8,10,12);

    int*p=b,**q=&p;

    printf("%d,",*(p++));

    printf("%d,",**q);

    }

    • A.4,4
    • B.2,2
    • C.4,5
    • D.2,4
  28. 下面程序的输出结果是 ______。  #define a 121  const b=12;  enum c{a1,a2};  main()  {  printf("%d,%d,%d",sizeof(a) ,sizeof(b) ,sizeof(enum c) );  }

    • A.121,0,4
    • B.2,2,2
    • C.0,2,4
    • D.0,2,2
  29. 下列说法错误的是______。

    • A.关系中每一个属性对应一个值域
    • B.关系中不同的属性可对应同一值域
    • C.对应同一值域的属性为不同的属性
    • D.DOM(A)表示属性A的取值范围
  30. 执行下面的程序段后,变量k中的值为(  )。  int k=3, s[2];  s[0]=k;k=s[1]*10;

    • A.不定值
    • B.33
    • C.30
    • D.10
  31. 有下列程序:

    #include <stdio.h>

    #include "string.h"

    void tim(char *s[],int n)

    {

    char *t; int i,j;

    for(i=0;i<n-1;i++)

    for(j=i+1;j<n;j++)

    if(strlen(s[i])>strlen(s[j])) {t=s[i];s[i]=s[j];s[j]=t;}

    }

    main()

    {

    char *ss[]= {"bcc","bbcc","xy","aaaacc","aabcc"};

    fun(ss,5);printf("%s,%s\n",ss[0],ss[4]);

    }

    程序的运行结果是(  )。

    • A.xy,aaaacc
    • B.aaaacc,xy
    • C.bcc,aabcc
    • D.aabcc,bcc
  32. 有以下程序 main() { int m=3,n=4,x; x=-m++; x=x+8/++n; printf("%d\n",x); } 程序运行后的输出结果是______。

    • A.3
    • B.5
    • C.-1
    • D.-2
  33. 栈通常采用的两种存储结构是

    • A.线性存储结构和链表存储结构 
    • B.散列方式和索引方式 
    • C.链表存储结构和数组 
    • D.线性存储结构和非线性存储结构
  34. 有以下程序  main ()  {   char s []= "Yes\n/No", *ps=s;   puts (ps+4);   * (ps+4)=0;   puts (s);  }  程序运行后的输出结果是(选项D中的第一行是空行)

    • A.n/No Yes /No
    • B./No Yes
    • C.n/No Yes /No
    • D./No Yes
  35. 设有如下定义: struct sk { int a;  float b; }data; int *p;  若要使p指向data中的a域,正确的赋值语句是  (  )

    • A.p=&a;
    • B.p=data.a;
    • C.p=&data.a,
    • D.*p=data.a;
  36. 设有定义int n=0,*p=&n,**q=&p;,则下列选项中正确的赋值语句是

    • A.p=1;
    • B.*q=2;
    • C.q=p;
    • D.*p=5;
  37. 阅读以下程序及对程序功能的描述,其中正确的是  #include<stdio.h>  main()  { FILE*in,*out;  charch,infile[10],outfile[10];  printf("Enter the infile name:\n");  scanf("%s",infile);  printf("Enter the outfile name:\n");  scanf("%s",outfile);  if((in=foen(infile

    • A.程序完成将磁盘文件的信息在屏幕上显示的功能
    • B.程序完成将两个磁盘文件合二为一的功能
    • C.程序完成将一个磁盘文件复制到另一个磁盘文件中
    • D.程序完成将两个磁盘文件合并并在屏幕上输出
  38. 以下程序的输出结果是______。  main()  {   int i,k,a[10],p[3]   k=5;   for(i=0;i<10;i++)a[i]=i   for(i=0;i<3;i++)p[i]=a[i*(i+1)];   for(i=0;i<3;i++)k+=p[i]*2;   printf("%d\n",k);  }

    • A.20
    • B.21
    • C.22
    • D.23
  39. 有下列程序: 

     #include <stdio.h>  

    void fun(char *a, char *B)  

    {    

    while(*a=='*')a++;   

     while(*b=*A) 

    {

    b++;a++;

    }  

    }  

    main()  

    {    

    char *s="*****a*b****",t[80];   

     fun(s,t);

    puts(t); 

    程序的运行结果是( )。

    • A.*****a*b
    • B.a*b
    • C.a*b****
    • D.ab
  40. 数据流图中带有箭头的线段表示的是______。

    • A.控制流
    • B.事件驱动
    • C.模块调用
    • D.数据流