一起答

2015年全国计算机等级《二级C语言程序设计》冲刺试卷五

如果您发现本试卷没有包含本套题的全部小题,请尝试在页面顶部本站内搜索框搜索相关题目,一般都能找到。
  1. 规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:删除字符串中所有的*号。编写函数时,不得使用C语言提供的字符串函数。

    例如,字符串中的内容为“****A*BC*DEF*G ****”,删除后,字符串中的内容应当是“ABCDEFG”。

    注意:部分源程序给出如下。

    请勿改动maini)函数和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

    试题程序:

    #include

    #include

    void fun(char a)

    {

    void main

    {

    char s[81];

    print{("Enter a string:\n");

    gets(s):

    fun(S);

    printf("The string after deleted:\n");

    puts(s);

    }

  2. 请补充main函数,该函数的功能是:先以只写方式打开文件file.dat,再把字符串S中的字符保存到这个磁盘文件中。请勿改动main函数与其他函数中的任何内容,仅在的横线上填写所需的若干表达式或语句。

    注意:部分源程序给出如下。

    试题程序:

    #include

    #include

    #define N 100

    void main

    {

    FILE*f:

    int i=0:

    char ch;

    char s[N]="Welcome!";

    if((f=fopenl("【1","w"))==NULL)

    {

    printf("cannot open file.dat\n");

    exit(0);

    }

    while(s[i])

    {

    ch=s[i];

    【2

    putchar(ch);

    i++:

    }

    【3

    }

  3. 下列给定程序中,函数ptoc的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本方法是:先对字符串中的头两个元素进行排序,然后把第3个字符插入前两个字符中,插入后前3个字符依然有序;再把第4个字符插入前三个字符中,待排序的字符串已

    在主函数中赋予。

    请修改程序中的错误,使它能得出正确的结果。

    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

    试题程序:

    #include

    #include

    #define M 80

    void proc(char*arr)

    { int i,j,n;char ch;

    n=strlen(arr):

    for(i=1;i

    //****found****

    { c=arr[i];

    j=i-1;

    while((j>=o)&&(ch{

    arr[j+1]=arr[j];

    j--;

    }

    arr[j+1]=ch;

    }

    }

    void main

    {

    char a[M]="QWERTYUIOPASDFGHJKLMNBVCXZ";

    printf("The original string:%s\n",a);

    proc(a);

    printf("The string after sortin9:

    %s\n\n",a);

    }

  4. 下列程序的输出的结果是(   )。

    main

    { double d=3.2;int x,y;

    x=1.2;v=(x+3.8)/5.0;

    printf("%d\n",d*y);

    }

    • A.3
    • B.3.2
    • C.0
    • D.3.07
  5. 下列合法的声明语句是( )。

    • A.int abc=50;
    • B.double int=3+5e2.5;
    • C.long do=1L;
    • D.float 3 asd=3e一3;
  6. 在Internet中,域名服务器的主要功能是实现( ) 的转换。

    • A.IP地址到域名(主机名字)
    • B.域名到IP地址
    • C.主机IP地址和路由器IP地址之间
    • D.路由器IP地址之问
  7. 以下程序的输出结果是( )。

    union myun

    { struct

    {int x,y,z;)u;

    int k:

    }a;

    main 

    { a.u.x=4;a.u.y=5;a.u.z=6;

    k=0;

    printf(%d\n",a.u.x);

    }

    • A.4
    • B.5
    • C.6
    • D.0
  8. 若有说明语句:double*p,a;则通过scanf语句正确给输入项读入数据的程序段是(   )。

    • A.*p=&a;scanf("%1f”,p);
    • B.*p=&a;scanf("%f",p);
    • C.p=&a;scanf("%",*p);
    • D.p=&a;scanf("%1f",p);
  9. 设变量已正确定义,则以下能正确计算f=n!的程序是( )。

    • A.f=0;for(i=1;i<=n;i++)f*=i;
    • B.f=1;for(i=l;i<2n;i++)f*=i;
    • C.f=l;for(i=n;i>1;i++)f*=i;
    • D.f=1; for(i=n;i>=2;i--)f*=i;
  10. 有以下程序:

    main

    { char a='a',b;

    printf("%c,",++a);

    printf("%c\n",b=a++):

    )

    程序运行后的输出结果是( )。

    • A.b,b
    • B.b,c
    • C.a,b
    • D.a,c
  11. 当c的值不为0时,在下列选项中不能正确将c的值赋给变量a、b的是( )。

    • A.
    • A.a=b=c;
    • B.(a=c)
    • C.(a=c)&&(b=c);
    • D.(b=c);
  12. 有以下程序

    #include

    void fun(int*a,int n)/*fun函数的功能是将a所指数组元素从大到小排序*/

    {int t,i,j;

    for(i=0;i

    for(j=i+l;j

    if(a[i]}

    main

    {int c[10]={1,2,3,4,5,6,7,8,9,0),i;

    fun(c+4,6);

    for(i=0;i<10;i++)printf("%d,",c[i]);

    printf("\n");

    }

    程序运行的结果是( )。

    • A.1,2,3,4,5,6,7,8,9,0,
    • B.0,9,8,7,6,5,1,2,3,4,
    • C.0,9,8,7,6,5,4,3,2,1,
    • D.1,2,3,4,9,8,7,6,5,0,
  13. 相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和( )。

    • A.可重用性差
    • B.安全性差
    • C.非持久性
    • D.冗余性
  14. 在下列语句中,其含义为“q是一个函数指针,该指针指向整型数据”的定义语句是(  )。

    • A.int**q;
    • B.int(*q);
    • C.int*q;
    • D.int*q();
  15. 有下列程序:

    fun(int x,int y)

    { static int m=0,i=2;

    i+=m+1;m=i+x+y;return m;

    }

    main( )

    { int j=1,m=1,k;

    k=fun(j,m);print S(”%d,”,k);

    k=fun(j,m);printf(”%d\n”,k);

    执行后的输出结果是( )。

    • A.5,5
    • B.5,11
    • C.11,11
    • D.11,5
  16. C语言可执行程序的开始执行点是( )。

    • A.包含文件中的第一个函数
    • B.程序中第一个函数
    • C.程序中的main( )函数
    • D.程序中第一条语句
  17. 在下列给出的表达式中,与while(E)中的(E)不等价的表达式是( )。

    • A.(!e==0)
    • B.(e>0||e<0)
    • C.(e==0)
    • D.(e!=0)
  18. 下述程序的输出结果是(   )。

    #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
  19. 下列程序的输出结果是( )。

    void fun(int*X,int y)

    { printf("%d%d",*x,*y);*x=3;*y=1;}

    main

    { int x=1,y=2;

    fun(&y,&x);

    printf("%d%d",x,y);

    }

    • A.2 1 4 3
    • B.1 2 1 2
    • C.1 2 3 4
    • D.2 1 1 2
  20. 语句int(*ptr)的含义是(  )。

    • A.ptr是一个返回值为int的函数
    • B.ptr是指向int型数据的指针变量
    • C.ptr是指向函数的指针,该函数返回一个int型数据
    • D.ptr是一个函数名,该函数的返回值是指向int型数据的指针
  21. 当执行以下程序段时,(   )。

    x=-l:

    do{x=x*x;)while(!x);

    • A.循环体将执行一次
    • B.循环体将执行两次
    • C.循环体将执行无限次
    • D.系统将提示有语法错误
  22. 按照“先进后出”原则组织数据的结构是(  )。

    • A.队列
    • B.栈
    • C.双向链表
    • D.二叉树
  23. 下列说法正确的是(  )。

    • A.在C语言中,可以使用动态内存分配技术定义元素个数可变的数组
    • B.在c语言中,数组元素的个数可以不确定,允许随机变动
    • C.在C语言中,数组元素的数据类型可以不一致
    • D.在C语言中,定义一个数组后,就确定了它所容纳的元素的个数
  24. 下述程序的运行结果是(   )。

    #included stdio.h>

    #included strin9.h>

    main

    { char*s1="abDuj";

    char*s2="ABdUG";

    int t;

    t=strcmp(s1,s2);

    printf("%d",t);

    }

    • A.正数
    • B.负数
    • C.零
    • D.不确定的值
  25. 执行下述程序后,输出的结果是(   )。

    #include

    #define S(X)X*X

    void main

    { int a=9,k=3,m=2;

    • a/=S(k+m)/S(k+m);    printf("%d",a);    }
    • A.1
    • B.4
    • C.9
    • D.0
  26. 若有定义语句:“char sE10]="1234567\0\0";”,则strlen(s)的值是( )。

    • A.7
    • B.8
    • C.9
    • D.10
  27. 有下列程序:

    main

    { int y=10;

    do{y--;}while(--y);

    printf("%d\n",--y);

    )

    当执行程序时,输出的结果是(   )。

    • A.-1
    • B.1
    • C.4
    • D.0
  28. 设x为int型变量,则执行以下语句后,x的值为(   )。

    x=10;x=x-=x-x;

    • A.10
    • B.20
    • C.40
    • D.30
  29. 若有定义“int a=5,b=7;”,则表达式a%=(b%2) 运算后,a的值为( )。

    • A.0
    • B.1
    • C.11
    • D.3
  30. 下列字符数组初始化语句中,不正确的是( )。

    • A.char c[]='goodmorning';
    • B.char c[20]="goodmorning";
    • C.char c[]={'a','b ','c ','d');
    • D.char c[]={"ffgoodmorning"};
  31. 若变量a,b已正确定义,且b已正确赋值,则合法的语句是(  )。

    • A.b=double(b);
    • B.(int)a=(int)b;
    • C.a=a++=5;
    • D.a=double(b);
  32. 常采用的两种存储结构是( )。

    • A.顺序存储结构和链式存储结构
    • B.散列方法和索引方式
    • C.链表存储结构和数组
    • D.线性存储结构和非线性存储结构
  33. 有下列程序段:

    int n,t=1,S=0;

    scanf("%d",&n);

    do{s=s+t;t=t-2;while(t!=n);

    为使此程序段不陷入循环,从键盘输入的数据应该是(   )。

    • A.任意正奇数
    • B.任意负偶数
    • C.任意正偶数
    • D.任意负奇数
  34. 函数调用strcat(strcpy(str1,str2),str3)的功能是( )。

    • A.将字符串str1复制到字符串str2中后再连接到字符串str3之后
    • B.将字符串str1连接到字符串str2之后再复制到字符串str3之后
    • C.将字符串str2复制到字符串str1之后再将字符串str3连接到字符串str1之后
    • D.将字符串str2连接到字符串str1之后再将字符串strl复制到字符串str3中
  35. 对两个数组a和b进行下列初始化:

    char m[]1="l234567":

    char n[]={'1','2 ','3','4 ','5','6','7');

    则下列叙述正确的是( )。

    • A.数组m与数组n完全相同
    • B.数组m与数组n长度相同
    • C.数组m比数组n长1
    • D.数组m与数组n中都存放字符串
  36. 执行下列程序中的输出语句后,a的值是(   )。

    main

    { int a;

    printf("%d\n",(a=2*3,a*5,a+7));

    }

    • A.17
    • B.37
    • C.6
    • D.13
  37. 下列关于栈的描述中错误的是( )。

    • A.栈是先进先出的线性表
    • B.栈只能顺序存储
    • C.栈具有记忆作用
    • D.对栈的插入删除操作中,不需要改变栈底指针
  38. 有下列二叉树.对此二叉树前序遍历的结果为( )。

    • A.ACFXDBEYZ
    • B.ABEFXYZCD
    • C.ABCDEFXY7
    • D.ABDYECFXZ
  39. 有以下程序:

    main

    {int a=0,b=0;

    • a=10; /*给a赋值
    • b=20; 给b赋值 */    printf("a+b=%d\n",a+b);//输出计算机结果    }    程序运行后的输出结果是( )。
    • A.a+b=10
    • B.a+b=30
    • C.30
    • D.出错
  40. 以下程序的输出结果是( )。

    main

    { int a=3:

    printf("%d\n",(a+a-=a*a));

    }

    • A.-6
    • B.12
    • C.0
    • D.-12
  41. 执行下面的程序后,a的值为(   )。

    main

    { int a,b;

    for(a=1,b=1;a<=10;a++)

    { if(b%3==l)

    { b+=3;

    continue;}

    b-=5;}}

    • A.7
    • B.8
    • C.9
    • D.10
  42. 若fp是指向某文件的指针,且尚未读到文件末尾,则函数feof(fp)的返回值是(  )。

    • A.EOF
    • B.-l
    • C.非零值
    • D.0
  43. 有定义:“int a=2,b=3,c=4;”,则下列选项中值为0的表达式是(   )。

    • A.(aB.(!a==1)&&(!b==0)  
    • C.a&&b
    • D.a||(b+b)&&(c-a)