2015年计算机二级C语言上机操作题及答案(57)
发布时间:2011/7/17 18:24:24 来源:城市学习网 编辑:ziteng
第一题:请补充fun函数,该函数的功能是:计算并输出下列多项的值.
S=1+ 例如,若主函数从键盘给n输入50后,则输出为S=1.960784
请勿改动主函数main和其他函数中任何内容.仅在fun函数中的横线上填入所编写的若干表达式或语句。
#include
double fun(int n)
{
int i, j;
double sum = 0.0, t;
for (i=1; i<=n; i++)
{
t = 0.0;
for (j=1; j<=i; j++)
t += j;
sum += 1.0/t;
}
return sum;
}
main()
{
int n;
double s;
printf("\nInput n: ");
scanf("%d", &n);
s = fun(n);
printf("\n\ns=%f\n\n", s);
}
答案:
第一处:double
第二处:j
第三处:1.0/t或(double)1/t [NextPage] int i, j;
char ch;
i = 0;
j = strlen(b)-1;
/********found********/
while (i > j)
{
ch = b[i];
b[i] = b[j];
b[j] = ch;
i++;
j--;
}
while (*a || *b)
{
if (*a)
{
*c = *a;
c++;
a++;
}
if (*b)
{
*c = *b;
c++;
b++;
}
}
/********found********/
c = 0;
}
main()
{
char s1[100], s2[100], t[200];
printf("\nEnter s1 string : ");
scanf("%s", s1);
printf("\nEnter s2 steing : ");
scanf("%s", s2);
fun(s1, s2, t);
printf("\nThe result is : %s\n", t);
}
答案:
while (i > j)改为while (j >i)或while (i < j)[NextPage] 第三题:学生的记录由学号和成绩组成,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 M\n", h[i]. num, h[i]. s);
printf ( "\n" );
out=fopen ("out.dat", "w");
n=fun ( s, h, 80, 98 );
fprintf ( out, "%d\n", n );
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, "M\n", h[i]. s);
fprintf ( out, "\n" );
fclose ( out );
}
答案:
int fun(STREC *a,STREC *b,int l,int h)
{
int i,j=0;
for(i=0;iif(a[i].s>=l&&a[i].s<=h)
{
b[j]=a[i];
j++;
}
return j;
}