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);