Advertisement

C期末题库5

阅读量:

1

复制代码
    /*------------------------------------------------
    【程序设计】
    --------------------------------------------------
    
    功能:编写函数求1~50中奇数的平方和。结果为20825.000000。
    
    注意:部分源程序给出如下。请勿改动主函数main和其
      它函数中的任何内容,仅在函数fun的花括号中填
      入所编写的若干语句。
    *********Begin**********和**********  End  **********不可删除
    
    ------------------------------------------------*/
    #include "stdio.h"
    
    float sum(int n)
    {
      /*********Begin**********/
      
      
      
      
      
      
      /**********  End  **********/
    }
    void TestFunc()
    {
      FILE *IN,*OUT; 
      int i;
      float o;
      IN=fopen("in.dat","r");
      if(IN==NULL)
      {
    printf("Read File Error");
      }
      OUT=fopen("out.dat","w");
      if(OUT==NULL)
      {
    printf("Write File Error");
      }
      fscanf(IN,"%d",&i);
      o=sum(i);
      fprintf(OUT,"%f\n",o);
      fclose(IN);
      fclose(OUT);
    }
    main()
    {
      printf("sum=%f\n",sum(50));
      TestFunc(); 
    }
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    代码解释

答案
【参考代码】

float s=0;
int i;
for(i=1;i<=n;i=i+2)
s=s+i*i;
return(s);

===============
【考生代码】
int i;
float s=0;
for(i=1;i<=50;i++)
if(i%2!=0)
s+=i*i;
return s;

2

复制代码
    /*------------------------------------------------
    【程序设计】
    --------------------------------------------------
    
    题目:编写函数fun,求任一整数m的n次方。
    注意:部分源程序给出如下。请勿改动主函数main和其
      它函数中的任何内容,仅在函数fun的花括号中填
      入所编写的若干语句。
    *********Begin**********和**********  End  **********不可删除
    
    
    ------------------------------------------------*/
    
    #include "stdio.h"
    void TestFunc();
    
    long fun(int m,int n)
    {
      /**********Begin**********/
      
      
      
      
      
      
      /**********  End  **********/
    }
    
    void main()
    { 
      int m,n;
      long  s;
      long fun(int,int);
      printf("输入m和n的值:");
      scanf("%d,%d",&m,&n);
      s=fun(m,n);
      printf("s=%ld\n",s);
      TestFunc();
    }
    
    void TestFunc()
    {
      FILE *IN,*OUT;
      int n;
      int i[2];
      long o;
      IN=fopen("in.dat","r");
      if(IN==NULL)
      {
    printf("Read File Error");
      }
      OUT=fopen("out.dat","w");
      if(OUT==NULL)
      {
    printf("Write File Error");
      }
      for(n=0;n<2;n++)
      {    
    fscanf(IN,"%d",&i[n]);
      }
      o = fun(i[0],i[1]);
      fprintf(OUT,"%ld\n",o);
      
      fclose(IN);
      fclose(OUT);
    }
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    代码解释

答案
【参考代码】

long int x=1;
int i;
for(i=1;i<=n;i++)
x=x*m;
return x;

===============
【考生代码】
int i,s=1;
for(i=1;i<=n;i++)
s*=m;
return s;

3

复制代码
    /*------------------------------------------------------    
    【程序改错】
    --------------------------------------------------------
    
    题目:给定程序MODI1.C中函数fun的功能是:
      首先把b所指字符串中的字符按逆序存
      放, 然后将a所指字符串中的字符和b
      所指字符串中的字符,按排列的顺序交
      叉合并到c所指数组中,过长的剩余字符
      接在c所指数组的尾部。 例如,当a所指
      字符串中的内容为"abcdefg",b所指字符
      串中的内容为"1234"时,c所指数组中的内
      容应该为"a4b3c2d1efg";而当a所指字符串
      中的内容为"1234",b所指字符串中的内容
      为"abcdefg"时,c所指数组中的内容应该
      为"1g2f3e4dcba"。
    --------------------------------------------------------
    注意:不可以增加或删除程序行,也不可以更改
      程序的结构。
    ------------------------------------------------------*/
    #include <conio.h>
    #include <stdio.h>
    #include <string.h> 
    void fun( char *a, char *b, char *c )
    {
    int i , j; char ch;
    i = 0; j = strlen(b)-1;
    /**********Error**********/
    while ( i > j )
    { ch = b[i]; b[i] = b[j]; b[j] = ch;
    i++; j--;
    }
    /**********Error**********/
    while ( *a &&*b )
    /**********Error**********/
    { If ( *a ){ *c = *a; c++; a+; }
    if ( *b ){ *c = *b; c++; b++; }
    }
    *c = 0;
    }
    
    main()
    {
    char s1[100],s2[100],t[200];
    clrscr();
    printf("\nEnter s1 string : ");scanf("%s",s1);
    printf("\nEnter s2 string : ");scanf("%s",s2);
    fun( s1, s2, t );
    printf("\nThe result is : %s\n", t );
    }
    
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    代码解释

答案
改错1】 正确
【学生答案】
while ( i < j )
【参考答案】
while(i<j)

==============================
【改错2】 正确
【学生答案】
while ( *a ||*b )
【参考答案】
while ( *a || *b )

==============================
【改错3】 正确
【学生答案】
{ if ( *a ){ *c = *a; c++; a++; }
【参考答案】
{ if ( *a ){ *c = *a; c++; a++; }

==============================

4

复制代码
    /*------------------------------------------------------    
    【程序改错】
    --------------------------------------------------------
    
    功能:求二分之一的圆面积,函数通过形参得到圆的半径,函数
      返回二分之一的圆面积。
    例如:输入圆的半径值:19.527 输出为:s = 598.950017。
    
    ------------------------------------------------------*/
    
    #include "stdio.h"
    #include "conio.h"
    
    /**********ERROR**********/
    float fun( r)
    {
      float s;
      /**********ERROR**********/
      s=1/2*3.14159* r * r;
      /**********ERROR**********/
      return r;
    }
    
    main()
    {
      float x;
      clrscr( );
      printf ( "Enter x: ");
      scanf ( "%f", &x );
      printf (" s = %f\n ", fun ( x ) );
      
    }
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    代码解释

答案
【改错1】 正确
【学生答案】
float fun(float r)
【参考答案】
float fun(float r)

==============================
【改错2】 错误
【学生答案】
s=1.0/2.0 3.14159 r * r;
【参考答案】
s=1.0/2 3.14159 r * r;
s=1/2.0 3.14159 r * r;

==============================
【改错3】 正确
【学生答案】
return s;
【参考答案】
return s;

全部评论 (0)

还没有任何评论哟~