一起答

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

如果您发现本试卷没有包含本套题的全部小题,请尝试在页面顶部本站内搜索框搜索相关题目,一般都能找到。
  1. 学生的记录由学号和成绩组成,M名学生的数据已在主函数中放人结构体数组stu中,请编写函数proc,它的功能是:把指定分数范围之外的学生数据放在b所指的数组中,分数范围之外的学生人数由函数值返回。

    例如,输入的分数是70和79,则应当把分数低于70和高于79的学生数据输出,不包含70分和79分的学生数据。主函数中把70放在low中,把79放在heigh中。

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

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

    试题程序:

    #include

    #define M 16

    typedef struct

    {

    char num[10];

    int s:

    }

    STREC;

    int proc(STREC*a,STREC*b,int i,int h)

    {

    }

    void main

    {

    STREC stu[M]={{"GA005",55),{"GA003",96},

    {"GA002",80),{"GA004",68),

    {"GA001",88},{"GA007",74},

    {"GA008",85),{"GA006",89},

    {"GA015",90),{"GA013”,53),

    {"GA012",66},{"GA014”,82),

    {"GA011",73},{"GA017",69),

    {"GA018",64),{"GA016",86}};

    STREC h[M];

    int i,n,low,heigh,t;

    printf("Enter 2 integer number low&

    heigh:");

    scanf("%d%d",&low,&heigh);

    if(heigh

    {

    t=heigh:

    heigh=low;

    low=t;

    }

    n=proc(stu,h,low,heigh);

    printf("The student’S data out

    %d--%d:\n",low,heigh);

    for(i=0;i

    printf("%S%4d\n",h[i].num,h[i].s);

    //输出指定分数范围外的学生记录

    printf("\n");

    }

  2. 下列给定的程序中,函数proc的功能是:判断字符ch 是,与str所指字符串中的某个字符相同;若相同,则什么也不做,若不同,则将其插在串的最后。请修改程序中的错误,使它能得出正确的结果。

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

    试题程序:

    #include

    #include

    #include

    #include

    //****found****

    void proc(char str,char ch)

    {

    while(*str &&*str!=ch)str++;

    //****found****

    if(*str==ch)

    { str[0]=ch;

    //****found****

    str[1]='0':

    }

    }

    void main

    {

    char str[81],ch;

    system("CLS");

    printf("\nPlease enter a string:");

    gets(str);

    printf("\n Please enter the character to

    search:");

    ch=getchar;

    proc(str,ch);

    printf("\nThe result is%s\n",str);

    }

  3. str是一个由数字和字母字符组成的字符串,由变量num传入字符串长度。请补充函数proc,该函数的功能是:把字符串str中的数字字符转换成数字并存放到整型数组bb中,函数返回数组bb的长度。

    例如,str="abc3de987f9621",结果为:3987621。

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

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

    试题程序:

    #include

    #define M 80

    int bb[M];

    int proc(char str[],int bb[],int num)

    {

    int i,n=0;

    for(i=0;i

    {

    if(【1】)

    {

    bb[n]=【2】:

    n++:

    }

    }

    return 【3】 ;

    }

    void main

    {

    char str[M];

    int mum=0,n,i;

    printf("Enter a strin9:\n");

    gets(str);

    while(str[num])

    num++:

    n=proc(str,bb,num);

    printf("\nbb=");

    for(i=0;i

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

    }

  4. 有以下程序:

    #include<

    struct stu { int num;char name[10];int age;} 

    void fun(struct stu*p) 

    { printf("%s\n",(*p).name);} 

    main 

    { struct stu students[3]={{9801,"Zhang".20}, {9802,"Wang",19},{9803,"Zhao",1 8}} 

     fun(students+2); } 

    输出的结果是(  )。

    • A.Zhang
    • B.Zhao
    • C.Wang
    • D.18
  5. 下列程序执行后的输出结果是(  )。 

    main 

    { int x='f';

     printf("%c\n",'A'+(x-'a'+1));

    }

    • A.G
    • B.H
    • C.I
    • D.J
  6. 若有定义:“int a[2][3];”,则对a数组的第i行第j 列元素的正确引用为( )。

    • A.*(*(a+i)+j)
    • B.(a+i)[j]
    • C.*(a+i+j)
    • D.*(a+i)+j
  7. 有以下程序 

    #include

    main 

    { FILE *fp;

     int a[10]={1,2,3,0,0},i; 

     fp=fopen("d2.dat,"wb"); 

     fwrite(a,sizeof(int),5,fp); 

     fwrite(a,sizeof(int),5,fp); 

     fclose(fp); 

     fp=fopen("d2.dat","rb"); 

     fread(a.sizeof(int),10,fp); 

     fclose(fp); 

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

    程序的运行结果是( )。

    • A.1,2,3,0,0,0,0,0,0,0,
    • B.1,2,3,1,2,3,0,0,0,0,
    • C.123,0,0,0,0,123,0,0,0,0,
    • D.1,2,3,0,0,1,2,3,0,0,
  8. 有下列程序: 

    main 

    { int k=5;

     while(--k)

      printf("%d",k=1); 

     printf("\n"); } 

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

    • A.1
    • B.2
    • C.4
    • D.死循环
  9. 下列程序执行后的输出结果是(  )。 

    main 

    { int a[3][3],*p,i; 

     p=&a[0][0]; 

     for(i=0;i<9;i++) p[i]=i+1; 

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

    • A.3
    • B.6
    • C.9
    • D.随机数
  10. 表达式“~0x11”的值是(  )。

    • A.0xFFEE
    • B.0x71
    • C.0x0071
    • D.0xFFF1
  11. 有下列程序: 

    main 

    { int i,j,x=0;

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

     { x++; 

      for(j=0;j<=3;j++) 

      { if(j==2) continue;

       x++;} 

      x++;} 

     printf("x=%d\n",x);} 

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

    • A.x=4
    • B.x=8
    • C.x=6
    • D.x=12
  12. 以下程序的输出结果是( )。 

    main( ) 

    { int num=0; 

     while(num<=2) 

     { num++; 

      printf(”%d\n”,num); } 

    }

    • A.1
    • B.1 2 3
    • C.1 2 3 4
    • D.1 2 2 3
  13. 假定所有变量均已正确说明,下列程序段运行后x 的值是( )。 

    • a=b=c=0;    x=12; 
    • if(!a) x--; 
    • else x=5;
    • if(c) x=3; 
    • else x=4;
    • A.11
    • B.4
    • C.12
    • D.3
  14. 如果进栈序列为el、e2、e3、e4,则可能的出栈序列是(  )。

    • A.e3、el、e4、e2
    • B.e2、e4、e3、e1
    • C.e3、e4、e2
    • D.任意顺序
  15. 以下程序的输出结果是( )。 

    main 

    { int a=1,b; 

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

     { if(a>=8) break; 

      if(a%2==1){a+=5;continue;} 

    • a=3;}     printf("%d\n",b);}
    • A.3
    • B.4
    • C.5
    • D.6
  16. 下面程序的功能是输出以下形式的金字塔图案:

    main 

    { int i,j; 

     for(i=1;i<=4;i++) 

      { for(j=1;j<=4-i;j++) printf(""); 

        for(j=1;j<=____;j++) printf("*"); 

       printf("\n"); } 

    } 在下划线处应填入的是( )。

    • A.i
    • B.2*i一1
    • C.n=2*i+1
    • D.i+2
  17. 下列叙述中正确的是(  )。

    • A.用E—R图能够表示实体集之间一对一的联系、一对多的联系、多对多的联系
    • B.用E—R图只能表示实体集之间一对一的联系
    • C.用E—R图只能表示实体集之间一对多的联系
    • D.用E—R图表示的概念数据模型只能转换为关系数据模型
  18. 以下程序运行后,输出结果是(  )。 

    #include

    #define PT 5.5 

    #define S(x)PT*x*X 

    main 

    { int a=1,b=2;

     printf("%4.1f\n",s(a+b));}

    • A.49.5
    • B.9.5
    • C.22.0
    • D.45.0
  19. 在C语言程序中可用做用户标识符的是( )。

    • A.void 123 BBN
    • B.aa _abc cas
    • C.as+b3 -123 If
    • D.6f Do SIG
  20. 执行语句“for(i=1;i++<4;);”后,变量i的值是(  )。

    • A.3
    • B.4
    • C.5
    • D.不定
  21. 有以下结构说明和变量定义,指针p、q、r分别指向链表中的3个连续结点。 struct node { int data;struct node*next;)*p,*q,*r;现要将q所指结点从链表中删除,同时要保持链表的连续,以下不能按要求完成操作的语句是(  )。

    • A.p->next=q->next;
    • B.P-next=P->next->next;
    • C.p->next=r;
    • D.p=q->next;
  22. 有下列程序: 

    main 

    { int x=5; 

     do 

     { printf("%d",X-=4);} 

     while(!(--x)); 

    } 程序的输出结果是( )。

    • A.1
    • B.2 0
    • C.1 -4
    • D.死循环
  23. 有以下程序: 

    #include

    main 

    { int i=0,a=0; 

     while(i<20) 

      { for(;;) 

       { if((i%10)==0) break;

        else i--;}  

       i+=11;

       +=i;} 

     printf("%d\n",a);} 

    程序的输出结果是(  )。

    • A.62
    • B.63
    • C.33
    • D.32
  24. 有以下结构体说明和变量的定义,且指针P指向变量a,指针q指向变量b,则不能把结点b连接到结点a之后的语句是(  )。 

    struct node {char data; struct node*next;}a,b,*p=&a,*q=&b;

    • A.a.next=q;
    • B.P.next=&b;
    • C.p->next=&b;
    • D.(*p).next=q;
  25. 若有定义“int b[8],*p=b;”,则p+6表示( )。

    • A.数组元素b[6]的值
    • B.数组元素b[6]的地址
    • C.数组元素b[7]的地址
    • D.数组元素b[o]的值加上6
  26. 若变量e为char类型,能正确判断出C为小写字母的表达式是( )。

    • A.'a'<=c<='z' c="">='a')
    • C.(′a′=c)
    • D.(c<='z')
    • E.('a'<=c)and('z'>c)
    • F.(c>='a')&&(c<='z')
  27. 下述程序执行的输出结果是( )。 

    #include

    main 

    { char a[2][4]; 

     strcpy(a,"are");

     strcpy(a[1],"you"); 

    • a[0][3]='&';     printf("%s\n",a);}
    • A.are&you
    • B.you
    • C.are
    • D.&
  28. 函数fseek的正确调用形式是(  )。

    • A.fseek(位移量,起始点,文件类型指针);
    • B.fseek(文件类型指针,位移量,起始点);
    • C.fseek(文件类型指针,起始点,位移量);
    • D.fseek(起始点,位移量,文件类型指针);
  29. 有以下程序: 

    main 

    { int a=0,b=l0,c=0,d=0; 

     if(a==1) {b=1;c=2;} 

     else d=3; 

     printf("%d,%d,%d,%d\n",a,b,C,d); } 

    程序输出( )。

    • A.0,1,2,0
    • B.0,0,0,3
    • C.1,1,2,0
    • D.编译有错
  30. 已知数据表A中每个元素距其最终位置不远,为了节省时间,应采用的算法是( )。

    • A.堆排序
    • B.直接插入排序
    • C.快速排序
    • D.直接选择排序
  31. 算法的时间复杂度是指(  )。

    • A.执行算法程序所需要的时间
    • B.算法程序的长度
    • C.算法执行过程所需要的基本运算次数
    • D.算法程序中的指令条数
  32. 下列特征中不是面向对象方法的主要特征的是( )。

    • A.多态性
    • B.继承
    • C.封装性
    • D.模块化
  33. 有下列程序: fun(int x,int y) { static int m=0,i=2; i+=++m;m=i+x+y;return m; } main { int j=1,m=1,k; k=fun(j,m);printf("%d,",k); k=fun(j, m);printf(”%d\n”,k); } 执行后的输出结果是(  )。

    • A.5.5
    • B.5,11
    • C.11,11
    • D.11,5
  34. 有下列程序: 

    int fun(int x[],int n) 

    { static int sum=0,i; 

     for(i=0;i

      sum+=x[i]; 

     return sum;} 

    main 

    { int a[]={1,2,3,4,5),b[]={6,7,8,9},s=0;

     s=fun(a,5)+fun(b,4);

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

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

    • A.45
    • B.50
    • C.60
    • D.55
  35. 在面向对象方法中,( )描述的是具有相似属性与操作的一组对象。

    • A.属性
    • B.事件
    • C.方法
    • D.类
  36. 有下列程序: 

    int fun(int n) 

    { if(n==1) return 1; 

     else return(n+fun(n-1)); } 

    main 

    { int x; 

     scanf("%d",&x);

     x=fun(x);

     printf("%d\n",x);}

    执行程序时,给变量x输入10,程序的输出结果是( )。

    • A.55
    • B.54
    • C.65
    • D.45
  37. 下列程序输出结果是(  )。 

    #include

    main 

    { char a[]={'a','b','C','d','e','f','\0');

     int i,j; 

     i=sizeof(a); 

     j=strlen(a); 

     printf("%d,%d",i,j); }

    • A.7,7
    • B.7,6
    • C.6,6
    • D.6,7
  38. 已知函数fread的调用形式为“fread(buffer,size,count,fp);”,其中buffer代表的是(  )。

    • A.存放读入数据项的存储区
    • B.一个指向所读文件的文件指针
    • C.一个指针,是指向输入数据存放在内存中的起始地址
    • D.一个整型变量,代表要读入的数据项总数
  39. 若有定义语句:int a[3][6];,按在内存中的存放顺序,a数组的第10个元素是( )。

    • A.a[o][4]
    • B.a[1][3]
    • C.a[o][3]
    • D.a[1][4]
  40. 有以下程序: 

    main 

    { int k=5;  

     while(--k)printf("%d",k-=3); 

     printf("\n"); } 

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

    • A.1
    • B.2
    • C.4
    • D.死循环
  41. 有以下程序: 

    fun(int x,int y) {return(x+y);} 

    main 

    { int a=1,b=2,c=2,sum; 

     sum=fun((a++,b++,a+b),c++); 

     printf("%d\n",sum); } 

    执行后的结果是(  )。

    • A.6
    • B.7
    • C.8
    • D.9
  42. 以下程序的输出结果是(  )。 

    main() 

    { int i; 

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

     switch(i)

     { case 0:printf("%d",i); 

      case 2:printf("%d",i); 

      default:printf("%d",i); } 

    }

    • A.000102
    • B.000020
    • C.000122
    • D.000111
  43. 有以下程序 

    #include

    main () 

    { int a=1,b=2,c=3,x; 

     x=(a^b)&c;

     printf("%d",x); } 

    程序的运行结果是( )。

    • A.0
    • B.1
    • C.2
    • D.3