编程题:
57.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。
例如,输入的分数是60和69, 则应当把分数在60到69的学生数据进行输出,包含60分和69分的学生数据。主函数中将把60放在low中,把69放在heigh中。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的
若干语句。
#include
#define N 16
typedef struct
{
char num[10];
int s;
} STREC;
int fun ( STREC *a, STREC *b, int l, int h )
{
}
main ()
{
STREC s[N]= {{“GA005″,85}, {“GA003″,76}, {“GA002″,69}, {“GA004″,85},
{“GA001″,96}, {“GA007″,72}, {“GA008″,64}, {“GA006″, 87},
{“GA015″,85}, {“GA013″,94}, {“GA012″,64}, {“GA014″,91},
{“GA011″,90}, {“GA017″,64}, {“GA018″,64}, {“GA016″,72}};
STREC h[N],tt;
FILE *out;
int i,j,n, low, heigh, t;
printf ( “Enter 2 integer number low & heigh : “);
scanf (“%d%d”, &low, &heigh );
if ( heigh < low )
{
t=heigh;
heigh=low;
low=t;
}
n=fun (s, h, low , heigh );
printf ( “The student ‘s data between %d—-%d : \n”, low, heigh );
for (i=0; i
printf (“%s %4d\n”, h[i]. num, h[i]. s);
printf ( “\n” );
out=fopen (“out18.dat”, “w”);
fprintf ( out, “%d\n”, n );
n=fun ( s, h, 80, 98 );
for (i=0; i
for (j=i+1; j
if(h[i].s>h[j].s)
{
tt=h[i] ;
h[i]=h[j];
h[j]=tt;
}
for(i=0;i
fprintf (out, “%4d\n”, h[i]. s);
fprintf ( out, “\n” );
fclose ( out );
}
60.请编写函数fun,该函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。
例如,若一维数组中的数据是:
2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10。
删除后,数组中的内容应该是:
2 3 4 5 6 7 8 9 10。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
# include
# define N 80
int fun(int a[], int n)
{
}
main()
{
int a[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10}, i,n=20;
printf(“The original data :\n”);
for(i=0; i
printf(“%3d”,a[i]);
n=fun(a,n);
printf(“\n\nThe data after deleted :\n”);
for(i=0;i
printf(“%3d”,a[i]);
printf(“\n\n”);
}
改错题:
90.下列给定程序中,函数fun的功能是:计算n的5次方的值(规定n的值大于2、小于8),通过形参指针传回主函数;并计算该值的个位、十位、百位上数字之和作为函数值返回。例如,7的5次方是16807,其低3位数的和值是15。
请改正函数fun中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include
#include
int fun(int n ,int *value)
{
int d,s,i;
/********found********/
d=0;
/********found********/
s=1;
for(i=1; i<=5; i++)
d=d*n;
*value=d;
for(i=1; i<=3; i++)
{
s=s+d%10;
/********found********/
s=s/10;
}
return s;
}
main()
{
int n, sum, v;
do
{
printf(“\nEnter n(2
scanf(“%d”,&n);
}
while(n<=2 || n>=8);
sum=fun(n,&v);
printf(“\n\nThe result:\n value=%d sum=%d\n\n”,v,sum);
}
93.下列给定程序中,函数fun的功能是:用下面的公式求π的近似值,直到最后一项
的绝对值小于指定的数(参数num)为止:
π 1 1 1
-≈ 1- - + - – - +…
4 3 5 7
例如,程序运行后,输入0.0001,则程序输出3.1414。
请改正程序中的错误,使它能输出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include
#include
float fun(float num)
{
int s;
float n,t,pi;
t=1;
pi=0;
n=1;
s=1;
/********found********/
while (t>=num)
{
pi=pi+t;
n=n+2;
s=-s;
/********found********/
t=s%n;
}
pi=pi*4;
return pi;
}
main( )
{
float n1,n2;
clrscr();
printf(“Enter a float number: “);
scanf(“%f”, &n1);
n2=fun(n1);
printf(“%6.4f\n”, n2);
}