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.03.14159 r * r;
【参考答案】
s=1.0/23.14159 r * r;
s=1/2.03.14159 r * r;

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值