一起答

2013年9月全国计算机等级《二级C语言程序设计》命题预测试卷四

如果您发现本试卷没有包含本套题的全部小题,请尝试在页面顶部本站内搜索框搜索相关题目,一般都能找到。
  1. 请编一个函数fun(oh lr*str),该函数的功能是把字符串中的内容逆置。

    例如,字符串中原有的字符串为asdf9,则调用该函数后,串中的内容为9fdsa。

    请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填人所编写的若干语句。

    试题程序:

    #include

    #include

    #include

    #define N 100

    void fun(char * str)

    {

    }

    void main

    {

    char a[N];

    FILE*out:

    printf("Enter a string:");

    gets(a);

    printf("The origir al string is:");

    puts(a);

    fun(a):

    printf("The string after modified:");

    puts(a);

    strcpy(a,"Welcome!");

    fun(a);

    ut=fopen("outfile.dat","w");

    fprintf(out,"%s".a);

    fclose(out);

    }

  2. 下列给定程序中,函数proc的功能是:根据输入的:个边长(整型值),判断能否构成三角形:若能构成等边三角形,则返回3;若是等腰三角形,则返回2;若能构成三角形则返回l;若不能,则返回0。

    例如,输入3个边长为3,4,5,实际输入时,数与数之间以Enter键分隔而不是逗号。

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

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

    试题程序:

    #include

    #include

    int proc(int a,int b,int c)

    {

    if(a+b>c&&b-c>a&&a+c>b)

    {

    if(a==b&&b==c)

    //****found****

    return 1;

    else if(a==b|| b==C||a==c)

    return 2;

    //****found****

    else return 3;

    }

    else return 0;

    }

    void main

    {

    int a,b,c,shape;

    printf("\nInput a,b,c:");

    scanf("%d%d%d",&a,&b,&c);

    printf("\na=%d.b=%d,c=%d\n",a,b,c);

    shape=proc(a,b.c):

    printf("\n\nThe shape:%d\n",shape);

    }

  3. 给定程序的功能是将n个人员的考试成绩进行分段统计,考试成绩放在a数组中,各分段的人数存到b数组中:成绩为60~69的人数存到b[0]中,成绩为70~79的人数存到b[1]中,成绩为80~89的人数存到b[2]中,成绩为90~99的人数存到b[3]中,成绩为100的人数存到b[4]中,成绩为60分以下的人数存到b[5]中。

    例如,当a数组中的数据是:93、85、77、68、59、43、94、75、98,调用该函数后,b数组中存放的数据应是:1、2、1、3、0、2。

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

    请勿改动main函数和其他函数中的任何内容,仅在横线上填入所编写的若于表达式或语句。

    试题程序:

    #includedstdi0.h>

    void fun(int a[],int b[],int n)

    {

    int i;

    for(i=0;i<6;I++)

    b[i]=0;

    for(i=0:i<【1】;i++)

    if(a[i]<60)

    b[5]++;

    【2】

    b[(a[i]一60)/10]++;

    }

    void main

    {

    int i,a[100]={93,85,77,68,59,43,94,75,98),b[6];

    fun(【3】,9);

    printf("the result is:");

    for(i=0;i<6;i++)

    printf("%d",b[i]);

    printf("\n,");

    }

  4. 三种基本结构中,能简化大量程序代码的是(  )。

    • A.顺序结构
    • B.分支结构
    • C.选择结构
    • D.重复结构
  5. 现有以下结构体说明和变量定义,如图所示,指针p、q、r分别指定一个链表中连续的3个结点。

    struct node

    {bar data;

    struct node*next;}*p,*q,*r;

    现要将q和r所指结点交换前后位置,同时要保持链表的结构,下列不能完成此操作的语句是( )。

    • A.q->next=r->next;P >next=r;r- >next =q;
    • B.q->next=r;q->next=r->next;r->next=q;
    • C.q->next=r->next;r->next=q;P->next=r:
    • D.q->next=q;P->next=r;q->next=r->next;
  6. 下列叙述正确的是(  )。

    • A.C语言中的文件是流式文件,因此只能顺序存取数据
    • B.打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖
    • C.在一个程序中当对文件进了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据
    • D.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失
  7. 下列标识符不是关键字的是( )。

    • A.break
    • B.char
    • C.Swithch
    • D.return
  8. 以下程序的输出结果是(   )。

    main

    { int i=0,S=0;

    for(;;)

    {

    if(i==3 ||i==5)continue;

    if(i==6)break;

    i++;

    s+=i:

    };

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

    }

    • A.10
    • B.13
    • C.21
    • D.程序陷入死循环
  9. 执行语句printf(“%u\n”,+12345)的输出结果是( )。

    • A.12345
    • B.0
    • C.-1
    • D.非定值
  10. 有以下程序,其中函数f的功能是将多个字符串按字典顺序排序(   )。

    #include

    void f(char*p[],int n)

    { char*t;int i,j;

    for(i=0;i

    for(j=i+1;j

    if(strcmp(p[i],p[j]>0){t=p[i];p[i]=p[j];p[j]

    =t;}

    }

    main

    { char *P[5]={"abe","aabdfg","abbd","dcd-

    be","cd"};

    f(p,5);

    printf("%d\n",strlen(p[1]));

    }

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

    • A.2
    • B.3
    • C.6
    • D.4
  11. 下列程序的运行结果是(   )。

    int y=5,x=14;

    y=((x=3*Y,x+1),x-1);

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

    • A. x=27,y=27
    • B.x=12,y=13
    • C.x=15,y=14
    • D.x=y=27
  12. 以下程序的输出结果是( )。

    main

    { char ch[3][4]={"123","456","78"),*p[3];int i;

    for(i=0;i<3;i++)p[i]=ch[i];

    for(i=0;i<3;i++)printf("%s",p[i]);}

    • A.123456780
    • B.123 456 780
    • C.12345678
    • D.147
  13. 设j为Int型变量,则下面for循环语句的执行结果是(   )。

    for(j=10;j>3;j--)

    { if(j%3)j--;

    --j;--j;

    printf("%d",j);

    }

    • A.6 3
    • B.7 4
    • C.6 2
    • D.7 3
  14. 运行下列程序,若从键盘输入字符“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
  15. 设有如图所示二叉树,对此二叉树后序遍历的结果为( )。

    • A.ZBTYCPXA
    • B.ATBZXCYP
    • C.TZBACYXP
    • D.ATBZXCPY
  16. 下列程序的输出结果是( )。

    main

    { int a=6,b=3,C;

    if(a{c=a*b;printf("%d%d,%d\n",b,a,c);)

    else

    {c=a/b;printf("%d,%d,%d\n",b,a,c);)

    }

    • A.3,6,18
    • B.3,6,2
    • C.6,3,18
    • D.6,3,2
  17. 有以下程序:

    #include

    main

    { char p[20]={'a','b','c','d'),q[]="abc",r[]="

    abcde";

    strcpy(p+strlen(q),r);strcat(p,q);

    printf("%d%d\n",sizeof(p),strlen(p));

    }

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

    • A.20 9
    • B.9 9
    • C.20 11
    • D.11 11
  18. 设有程序段:

    int k=12:

    while(k=1)k=k一1;

    则下列描述中正确的是(   )。

    • A.while循环执行10次
    • B.循环是无限循环
    • C.循环体语句一次也不执行
    • D.循环体语句执行一次
  19. 有下列程序: 

    #include

    main

    { int x=0;

    int y=0;

    while(x<7 &&++y)

    { y--;

    x++;}

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

    }

    程序的输出结果是( )。

    • A.0,7
    • B.7,7
    • C.0,6
    • D.1,6
  20. 下面程序的运行结果是(   )。

    #inelude

    void del(char*s)

    { int i,j;

    char*a;

    • a=s:
    • for(i=0,j=0;a[i]!='\0';i++)    { if(a[i]>='0'&&a[i]<='9')    {s[j]=a[i];
    • j++;    }    s[j]='\0';    }    }    main    { char*s="aa89gggh";
    • del(s):    printf("\n%s",s);    }
    • A.1
    • B.2
    • C.3
    • D.4
  21. 对两个数组a和b进行下列初始化:

    char m[]="1234567";

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

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

    • A.数组m与数组n完全相同
    • B.数组m与数组n长度相同
    • C.数组m比数组n长1
    • D.数组m与数组n中都存放字符串
  22. 以下关于字符串的叙述中正确的是( )。

    • A.C语言中有字符串类型的常量和变量
    • B.两个字符串中的字符个数相同时才能进行字符串大小的比较
    • C.可以用关系运算符对字符串的大小进行比较
    • D.空串一定比空格打头的字符串小
  23. 在执行完下列的c语句段之后,则B的值是(   )。

    char a='A';

    int b;

    B=((34&&56)&&(a<'b'));

    • A.0
    • B.1
    • C.TRUE
    • D.FALSE
  24. 在“文件包含”预处理语句的使用形式中,当#include后面的文件名用(双引号)括起时,寻找被包含文件的方式是( )。

    • A.直接按系统设定的标准方式搜索目录
    • B.先在源程序所在的目录搜索,如没找到,再按系统设定的标准方式搜索
    • C.仅仅搜索源程序所在目录
    • D.仅仅搜索当前目录
  25. 设有下列程序段:

    char str[]="HelloWorld":

    char* plr;

    ptr=str:

    执行上面的程序段后,*(ptr+10)的值为(   )。

    • A. '\0 '
    • B.'0'
    • C.不确定的值
    • D.'0'的地址
  26. 下列关于定点数与浮点数的叙述中错误的是( )。

    • A.在实数的浮点表示中,阶码是一个整数
    • B.整数是实数的特例,也可以用浮点数表示
    • C.实数的补码是其对应的反码在最后一位加1
    • D.相同长度的浮点数和定点数,前者可表示数的范围要大于后者
  27. 若有下列定义和语句:

    int u=011,v=0x11,w=11;

    printf("%o,%x,%d\n",u,v,w);

    则输出结果是(   )。

    • A.9,17,11
    • B.9,11,11
    • C.11,11,11
    • D.11,17,11
  28. 标准库函数fgets(s,n,file)的功能是( )。

    • A.从文件file中读取长度为n的字符串存入字符数s由
    • B.从文件file中读取长度不超过n-1个字符的字符放到字符数组S中
    • C.从文件file中读到n个字符串存入字符数组s中
    • D.从文件file中读取长度为n-1个字符的字符串存字符数组S中
  29. 下述程序的输出结果是( )。

    #include

    main

    { int i;

    for(i=l;i<=10;i++)

    { if(i*i>=20)&&(i*i<=100))

    break;

    }

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

    }

    • A.49
    • B.36
    • C.25
    • D.64
  30. 有以下计算公式

    若程序前面已在命令中包含math.h文件,不能够正确

    计算上述公式的程序段是( )。

    • A.if(x>=0)y=sqrt(x);
    • B.y=sqrt(x) if(x<0)y=sqrt(0x);
    • C. else y=sqrt(-x);
    • D x="">=O)y=sqrt(x); If(x
  31. 有以下程序

    #include

    #include

    void fun(char s[][10],int n)

    {

    char t;int i,j;

    for(i=0;i

    for(j=i+1,j

    /*比较字符串的首字符大小,并交换字符串的首字符*/

    if(s[0])>s[i][c]{t=s[i][o];s[i][o]=s[j][o];s [j][0]=t;}

    }

    main

    { char ss[5][10]="bcc","bbcc","xy","aaaacc"," aabcc"}

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

    }

    程序运行结果是( )。

    • A.xy,aaaacc
    • B.aaaacc,xy
    • C.xcc,aabcc
    • D.acc,xabcc
  32. 链表不具有的特点是( )。

    • A.不必事先估计存储空间
    • B.可随机访问任意元素
    • C.插入、删除不需要移动元素
    • D.所需空间与线性表长度成正比
  33. 下列说法不正确的是(  )。

    • A.调用函数时,实参可以是表达式
    • B.调用函数时,实参与形参可以共用内存单元
    • C.调用函数时,将实参的值复制给形参,使实参变量和形参变量在数值上相等
    • D.调用函数时,实参与形参的类型必须一致
  34. 下列程序的运行结果是(   )。

    #include

    void main

    {int s=0,k;

    for(k=7;k>1;k--)

    {switch(k)

    {case 1:

    case 4:

    case 7:

    s++:

    break;

    case 2:

    case 3:

    case 6:break;

    case 0:

    case 5:

    s+=2:

    break;

    }}

    printf("s=%d",s);

    }

    • A. s=3
    • B.s=4
    • C.s=5
    • D.无输出结果
  35. 下列程序的输出结果是(   )。

    main

    { int p[8]={11,12,13,14,15,16,17,18},i=0,j =0;

    while(i++<7)

    if(p[i]%2)j+=p[i];

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

    }

    • A.42
    • B.45
    • C.56
    • D.60
  36. 以下程序的输出结果是( )。

    void prt(int*m.int n)

    {int i;

    for(i=0;i

    main

    { int a[]={1,2,3,4,5),i;

    prt(a,5);

    for(i=0;i<5;i++)

    printf("%d,",a[i]);)

    • A.1,2,3,4,5
    • B.2,3,4,5,6
    • C.3,4,5,6,7
    • D.2,3,4,5,1
  37. C语言的基本单位是( )。

    • A.函数
    • B.过程
    • C.子程序
    • D.子函数
  38. 有以下程序

    #include

    #include 

    typedef strlIct{char name[9];char sex;float score[2];}STU;

    STU f(STU a) 

    { STU b={"Zhao",'m',85.0,90.0);int i;

    strcpy(a name,b.name);

    sex:b.sex;

    for(i=0;i<2;i++)a.score[i]=b.score[i];

    return a;

    }

    main

    {STU c="Qian",'f',95.0,92.0},d;

    d=f(c).printf("%s,%c,%2.0f,%2.0f",d.Name,d.sex,d.score[0],d.score[1]);

    }

    程序的运行结果是( )。

    • A.Qian,f,95,92
    • B.Qian,m,85,90
    • C.Zhao,m,85,90
    • D.Zhao,f,95,92
  39. 下列程序的输出结果是(   )。

    int fl(int x,int y){return x>y?x:y;)

    int f2(int x,int y){return x>y?y:x;}

    main

    { int a=4,b=3,c=5,d=2,e,f,g;

    e=f2(f1(a,b),f1(c,d));

    f=f1(f2(a,b),f2(c,d));

    g=a+b+c+d-e-f;

    printf("%d,%d,%d\n",e,f,g);}

    • A.4,3,7
    • B.3,4,7
    • C.5,2,7
    • D.2,5,7
  40. 一些重要的程序设计语言(in C语言和Pascal语言) 允许过程的递归调用,而实现递归调用中的存储分配通常用(  )。

    • A.栈
    • B.堆
    • C.数组
    • D.链表
  41. 以下程序输出结果是( )。

    main

    { int m=5;

    if(m++>5)printf("%d\n",m):

    else printf("%d\n",m--);

    }

    • A.7
    • B.6
    • C.5
    • D.4
  42. 有下列程序:

    #include

    main

    { int a=6,b=7,m=1;

    switch(a%2)

    { case 0:m++;break; 

    case 1:m++;

    switch(b%2)

    { default:m++;

    case 0:m++;break;

    }

    }

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

    程序的运行结果是( )。

    • A.3
    • B.2
    • C.4
    • D.1
  43. 下列选项中,均属于通用软件的是( )。

    • A.Windows XP、AutoCAD、PowerPoint
    • B.Visual FoxPro、Excel、SPSS
    • C.Word、Photoshop、Excel
    • D.C++、CorelDraw、Firefox 2.0