江苏省高校计算机等级考试命题研究院 江苏省高校计算机等级考试辅导
c语言上机模拟

 一、改错题(18)

    函数Void fun(char str[][]int m*pt)的功能是:将数组str中的m(1mlo)个字

符串依次连接起来,组成一个新串,放入pt所指的字符数组中。

    例如,把3个串"abc""CD""EF"连起来,所得新字符串是"abcCDEF"

    含有错误的源程序如下:

  1    #include<stdioh>

  2    #include<stringh>

  3    void fun(char str[][]int m*pt)

  4    {

  5      int kqi

  6      for(k=0k<mk++)

  7      {

  8       q=strlen(str[k])

  9       for(i=Oi<qi++)   

  10          pt[i]=str[ki]

  11      pt+=q

  12      pt[i]='\0

  13      }

  14    }

  15    main()

  16    {

  17    int mh

  18    char s[10][10]P[120]

  19    printf("\nPlease enter m")

  20    scanf("%d"&m)

  21    gets(s)

  22    printf("\nPlease enter%d string\n"m)

  23    for(h=0h<mh++)  gets(s[h])

  24    fun(spm)

  25    printf("\nThe result is%s\n"p)

  26   }

    【要求】

  1•将上述程序录人到文件myflc中,根据题目要求及程序中语句之间的逻辑关系对

程序中的错误进行修改。

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

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

  3.改正后的源程序(文件名myflc)必须放在考试软盘的根目录下,供阅卷用,否则不

  予评分。

  二:编程题(22)

  1.函数void fun(int m, int *k, int xx[])的功能是:将所有大于1小于整数m的非素数存入

 xx所指数组中,非素数的个数通过k传回

  2.编写main函数,从键盘输入m,调用fun函数,将函数fun返回的全部数据写入文件myf2.out,

   例如;若输入10,则输出为4以及4 6 8 9

  要求:

  1.将源文件取名为myf2.c,输出结果为myf2.out

  答案:

    一、改错题   

    1.第3void fun(char str[][]int m*pt)  

           改为void fun(char str[][10]int mchar *pt)

    2•第10pt[i]=str[ki]    改为pt[i]=str[k][i]

    3.12pt[i]='\0';           改为pt[0]='\0';

4.24 fun(s,p,m);         改为fun(s,m,p);

二编程题:

#include <stdio.h>

void fun( int m, int *k, int xx[ ])

{

  int i,j;

  *k=0;

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

  {

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

       if(i%j==0)  break;

     if(j<i) xx[(*k)++]=i;

}

     } 

    main() 

    {

      int mnzz[100]

      FILE  *out

      if((out=fopen("myf2.out""w"))==NULL)

      {

        printf("open file myf2out failed!\n")

        exit(0)

       }

     printf("\nPlease enter n(10<=n<=100)");

     scanf("%d"&n)

     fun(n&mzz)   

     fprintf(out"\n\nThere are%d non-prime numbers less than%d"mn)

     for(n=0n<mn++)

       fprintf(out"\n%4d"zz[n])

     fclose(out)   

    } 

    分析:本题主要考查的是求素数的算法。本题的基本思路是判断从2到指定数m之间

的每个数是素数还是非素数。   

    判断某数是否为素数的算法思想是:判断此数是否只能被1和其自身整除,而不能被其

他任何数整除。若能被1到自身之间的任何一个数整除,则此数为非素数,将此数存放到数’

XX中,并且指针k所指向变量中的数值加1