江苏省高校计算机等级考试命题研究院 江苏省高校计算机等级考试辅导
2013秋江苏省计算机二级C上机真题第1套

2013秋江苏省高校计算机等级考试

二级  C语言上机试卷第1

    (本试卷完成时间为70分钟)

 一、改错题(16分)

    【程序功能】

    统计一组单词(本题中含2个单词)中的每个单词在一篇文章中各自出现的次数,单词中的字母字符区分大小写。

    【测试数据与运行结果】

    测试数据:

    文章正文: The Olympic Games will be held just outside the capital and the whole area will be called 'Olympic City'.

    被统计的一组单词:Olympic, will

    屏幕输出:Olympic2

             wi11:2

    【含有错误的源程序】

    以下源程序已保存在Tmyf1.c文件内,考生可直接打开该文件调试程序。

1    #include< stdio.h>

2    #include< conio.h>

3    #include< string.h>

4    #include< ctype.h>

5    void count( char str[] ,char substr[][10] ,int ct[],int n)

6    {

7    int i,j,k =0,m =0;

8    char t[];

9    for(i=0;str[i];i++)

10   {

11     for(j=i;isalpha(str[j]);i++)

12     {

13      t[m]=str[j];

14      j++;m++;

15     }

16     t[m]=’/0';

17     for(k=0;k<n;k++)

18      if( t == substr[k])

19        ct[k]++;

20     m=0;

21    }

22   }

23   int  main()

24   {

25    char line[]="The Olympic Games will be held just outside the capital and the whole area will be

26       called 'Olympic City,.”;

27    char word[][10]={”Olympic”,”will”};

28    int ic[2]={0};

29    count(line[] ,word[][],c,2);

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

31      printf("\n%8s:%2d",word[i],c[i]);

32    getch();

33    return 0;

34    }

    【要求】

    1.打开T盘中myfl.c文件或将上述程序录入到myfl.c文件中,根据题目要求及程序中

语句之间的逻辑关系对程序中的错误进行修改。

    2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预

处理命令,但不能增加其他语句,也不能删去整条语句。

    3.改正后的源程序(文件名myfl.c)保存在T盘中供阅卷使用,否则不予评分。

    二、编程题(24分)

    【程序功能】

    找出[ab]区间内所有满足以下条件的整数:(1)该数是素数;(2)该数的十进制表示是

4位数并且是降序数(即从高位到低位的各位数字依次减小或不增加的整数)。例如,4211既是素数又是4位降序数,因此4211是满足上述条件的整数。

    【编程要求】

    1.编写函数int decend(long n1long n2long x[])。函数功能:找出[n1n2]区间内满足上述条件的所有整数并依次存放到x指向的一维数组中,函数返回满足条件的整数个数。

    2.编写main函数。函数功能:声明变量ab及一维数组c,键盘输入ab的值,调用decend函数找出[ab]区间内所有满足上述条件的整数并保存到c数组,输出c数组中的结果数据到屏幕及文件myf2.out中,最后将考生本人的准考证号输出到文件myf2.out中。

    【测试数据与运行结果】

    测试数据:a =1000 b=5000

    屏幕输出:2111  2221  3221  3331  4111  4211  4421  4441

    【要求】

    1.源程序文件名为myf2.c,输出结果文件名为myf2.out

    2.数据文件的打开、使用、关闭均用C语言标准库中的文件操作函数实现。

    3.源程序文件和运行结果文件均需保存在T盘中供阅卷使用。

    4.不要复制扩展名为objexe的文件到T盘中。

 

    参考答案

一、改错题

8  char t[];    改为t[10]

16  t[m]='/0';    改为'\0'

18  if(t== substr[k])    改为  !strcmp(tsubstr[k])strcmp(t, substr[k] ==0)

29  count (line[] ,word[][],c,2);  改为  (line, word,c2)

二、编程题

    #include <stdio.h>

    #include <stdlib.h>

    #include <conio.h>

    int prime(long n)

    {

      int i =2;

      while( n%i&&i<=n/2)i++;

      if(i<n/2)  return 0;

       else return 1;

    }

    int decend( long n1 ,long n2,  long x[])

    {

      long int i,y;  

      int a[4] ,k,j =0;

      for(i=n1;i<=n2;i++)

        if( prime(i))

        {k=0;y=i;

         while(y){a[k++]=y% 10;y/= 10;}

         if(k==4)

         {  k--;

            while(k>0&&a[k]>=a[k-1])k--;

            if(k==0)

              x[j++]=i;

         }

        }

       return j;

    }

    int  main()

    {  FILE *fp;

    int k,i;

    long a,b,c[100];

    printf( "a,b: ");

    scanf("%ld%ld",&a,&b);

    fp=fopen( "myf2.out","w");

    if( fp==NULL)

    {printf( "Create  File myf2. out failed !  \n") ;    exit(0) ;}

     k = decend( a,b,c) ;

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

     {

       printf("%10ld",c[i] ) ;

       fprintf(fp,"%lOld",c[i] ) ;

      }

     fprintf( fp,  "my examination number is 00123456789\n") ;

     fclose ( fp) ;

     getch( ) ;

     return 0;

    }