C期末题库10

1

/*------------------------------------------------
【程序设计】
--------------------------------------------------

题目:求一个整数的各位数字的立方和

      注:该整数不要超过4位数。

注意:部分源程序给出如下。请勿改动主函数main和其
      它函数中的任何内容,仅在函数fun的花括号中填
      入所编写的若干语句。
*********Begin**********和**********  End  **********不可删除



------------------------------------------------*/

#include <stdio.h>
void TestFunc();
     
int fun(int n)
{
  
  /*********Begin**********/
  
  
  
  
  
  
  /**********  End  **********/
  
}

main()
{
  int k,a;
   scanf("%d",&a);
  k=fun(a);
  printf("k=%d\n",k);
  TestFunc();
}

void TestFunc()
{
  FILE *IN,*OUT;
  int iIN,iOUT,i;
  IN=fopen("22.IN","r");
  if(IN==NULL)
  {
    printf("Please Verify The Currernt Dir..it May Be Changed");
  }
  OUT=fopen("22.out","w");
  if(OUT==NULL)
  {
    printf("Please Verify The Current Dir.. it May Be Changed");
  }
  for(i=0;i<10;i++)
  {
    fscanf(IN,"%d",&iIN);
    iOUT=fun(iIN);
    fprintf(OUT,"%d\n",iOUT);
  }
  fclose(IN);
  fclose(OUT);
}

答案
【参考代码】

int d,k,s=0;
while (n>0)
{d=n%10;
s+=ddd;
n/=10;
}
return s;

===============
【考生代码】
int x,y,z,w;
x=n/1000;
y=n/100%10;
z=n%100/10;
w=n%10;
return xxx+yyy+zzz+www;

2

/*------------------------------------------------
【程序设计】
--------------------------------------------------

功能:fun函数的功能是,求出二维数组tt每列中最大元素,并依次放入pp一维数组中。
*********Begin**********和**********  End  **********不可删除


------------------------------------------------*/

#include<stdio.h>
#define M 3
#define N 4
  
void fun(int tt[M][N],int pp[N])
{
  /**********Begin**********/
  
  
  
  
  
  
  /**********  End  **********/
}
void yzj(); 
main()
{
  int t[M][N]={{22,45,56,30},
  {19,33,45,38},
  {20,22,66,40}};
  int p[N],i,j,k;
  
  printf("The original data is:\n");
  for(i=0;i<M;i++)
  {
    for(j=0;j<N;j++)
      printf("%6d",t[i][j]);
    printf("\n");
  }
  fun(t,p);
  printf("\nThe result is:\n");
  for(k=0;k<N;k++) printf("%4d",p[k]);
  printf("\n");

  yzj();
}
void yzj()     
{     
  int i,j, array[3][4],p[4];
  FILE *rf, *wf ;     
  rf = fopen("in.dat", "r") ;
  wf = fopen("out.dat", "w") ;
  for (i=0; i < 3; i++)     
    for (j=0; j < 4; j++)
      fscanf(rf, "%d", &array[i][j]);     
    fun(array,p);
    for (j=0; j < 4; j++)
    {
      fprintf(wf, "%7d", p[j]);
      fprintf(wf, "\n");     
    }     
    fclose(rf) ;     
    fclose(wf) ;     
}

答案
int i,j;
for(j=0;j<N;j++)
{
pp[j]=tt[0][j];
for(i=1;i<M;i++)
if(tt[i][j]>pp[j])
pp[j]=tt[i][j];

}
3

/*------------------------------------------------------        
【程序改错】
--------------------------------------------------------

题目:函数fun的功能是:输出Fabonacci数列的前20项,要求变
      量类型定义成浮点型,输出时只输出整数部分,输出项
      数不得多于或少于20。
      请改正程序中的4个错误,使它能得出正确的结果。

--------------------------------------------------------
注意:不可以增加或删除程序行,也不可以更改程序的结构。
------------------------------------------------------*/


fun()
{
 int i;
 float f1=1,f2=1,f3;
/**********ERROR**********/
 printf("%8d",f1);
/**********ERROR**********/
 for(i=1;i<=20;i++)
   {
    f3=f1+f2;
/**********ERROR**********/
    f2=f1;
/**********ERROR**********/
    f3=f2;
    printf("%8.0f",f1);
   }
  printf("\n");
}
main()
{
 fun();
}

【改错1】 正确
【学生答案】
printf("%8.0f",f1);
【参考答案】
printf("%8.0f",f1);

==============================
【改错2】 错误
【学生答案】
for(i=1;i<=20;i++)
【参考答案】
for(i=1;i<20;i++)
for(i=1;20>i;i++)
for(i=2;i<=20;i++)
for(i=2;20>=i;i++)
for(i=1;i<=19;i++)
for(i=1;19>=i;i++)

==============================
【改错3】 错误
【学生答案】
f2=f3;
【参考答案】
f1=f2;

==============================
【改错4】 错误
【学生答案】
f1=f2;
【参考答案】
f2=f3;
4

/*------------------------------------------------------    
【程序改错】
--------------------------------------------------------

功能:编写函数求2!+4!+6!+8!+10!+12!+14!。

------------------------------------------------------*/

#include "stdio.h"

long  sum(int n)
{
  /**********ERROR**********/
  int i,j
  long t,s=0;
  /**********ERROR**********/
  for(i=2;i<=n;i++) 
  {
    t=1;
    for(j=1;j<=i;j++)
    t=t*j;
    s=s+t;
  }
  /**********ERROR**********/
  return(t);
}
main()
{
  printf("this sum=%ld\n",sum(14));
}

【改错1】 正确
【学生答案】
int i,j;
【参考答案】
int i,j;

==============================
【改错2】 正确
【学生答案】
for(i=2;i<=n;i=i+2)
【参考答案】
for(i=2;i<=n;i=i+2)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值