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

一、改错题(18)

    函数void fun(char *Pchar *b)的功能是:将P所指字符串中每三个字符之后插入一

个空格,所得新字符串存放于字符数组b中。

    例如,原始字符串为ABCDEFGH,插入空格后为ABC DEF GH

    含有错误的源程序如下:   

l    #include<stdioh>

2    void fun(char *pchar *b)

3    {

4     int ik=0

5     while(*p)

6     {

7      i=1

8      while(i<3&&*p)

9      {

10       b[k++]=p

11       P++i++

12     }

13     if(*p)

14     {

15       b[k++]=""

16     }

17    }

18    b[k]="\0"

19    }

20    main()

21    {

22    char a[80]b[80]

23    printf("Enter a string")gets(a)

24    fun(ab)

25    printf("\nThe result is")

26    puts(b)

27   }

     【要求】

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

程序中的错误进行修改。

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

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

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

  予评分。

    二、编程题(22)

    1.编写函数void fun(int nint *tint *r),其功能是计算1n之间所有奇数之和,通

过指针t返回.,所有偶数之和通过指针r返回。。

    2.编rmain函数,通过键盘输入一个不大于100的整数,调用fun函数,将指针tr

返回的值写入文件myf2out中。

    【要求】   

    1.将源文件取名为myf2c,输出结果文件取名为myf2out   

    2.数据文件的打开、使用和关闭等操作均用C标准库中缓冲文件系统的文件操作函数

实现。

    3.源程序文件和运行结果文件均须保存在考试软盘的根目录下,供阅卷用。

    4.不要将myf2objmyf2exe保存到考试软盘中。

    答案分析

    一、改错题

    1.第8while(i<3&&*p)    改为    while(i<=3&&*p)

    2.第10b[k++]=p      改为     b[k++]=*p

    3.第15b[k++]=""    改为  b[k++]=''

    4.第18b[k]="\0"    改为  b[k]='\0'

    分析:程序中,第一个循环用于遍历原始字符串,第二个循环用于把连续三个字符写入

数组b中,此循环结束后,先判断是否已到字符串尾部,若不是,则在三个字符之后插入一个

空格;若是,则在新生成的字符串尾部加入结束符。

    二、编程题

    #include<stdioh>

    void fun(int nint *tint *r)

    {

      int i

      *t=0*r=0  

      for(i=1i<=ni++)

      {

        if(i%2)  *t+=i;

        else *r+=i;

 

      }

      main() 

      {

      int x,t,r

      FILE  *out

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

      {

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

        exit(0)

       }

     printf("\nPlease enter a integer numbers");

     scanf("%d"&x)

     fun(x&t&x)   

     fprintf(out"x is:%d,t is:%d, r is %d"mn)

     fclose(out) 

    }