2015年计算机二级C语言上机操作题及答案(46)
发布时间:2011/7/14 11:39:32 来源:城市学习网 编辑:ziteng
第一题:请补充fun函数,该函数的功能是:用来求出数组的最大元素在数组中的下标并存放在k所指的存储单元中.
例如,输入如下整数:876 675 896 101 301 401 980 431 451 777,则输出结果为:6, 980.
请勿改动主函数main和其他函数中的任何内容,仅在fun 函数的横线上填入所编写的若干表达式或语句.
#include
#include
void fun(int s, int t, int ___1__)
{
int i, max;
max = s[0];
for (i=0; i if (__2__)
{
max = s[i];
*k = __3__;
}
}
main()
{
int a[10] = {876, 675, 896, 101, 301, 401, 980, 431, 451, 777}, k;
fun(a, 10, &k);
printf("%d, %d\n", k, a[k]);
}
参考答案:
(1) *k
(2) s[i]>max
(3) i [NextPage] 第二题:已知一个数列从第0项开始的前三项分别为0、0、1,以后的各项都是其相邻的前三项之和。下列给定程序中,函数fun的功能是:计算并输出该数列前n项的平方根之和sum。n的值通过形参传入。例如,当n=10时,程序输出结果应为23.197745。
请改正程序中的错误,使程序能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
#include
#include
/********found********/
fun(int n)
{
double sum, s0, s1, s2, s;
int k;
sum = 1.0;
if (n <= 2)
sum = 0.0;
s0 = 0.0;
s1 = 0.0;
s2 = 1.0;
for (k=4; k<=n; k++)
{
s = s0+s1+s2;
sum += sqrt(s);
s0 = s1;
s1 = s2;
s2 = s;
}
/********found********/
return sum
}
main()
{
int n;
printf("Input N=");
scanf("%d", &n);
printf("%lf\n", fun(n));
}
参考答案:
第一处fun(int n)应改为 double fun(int n)
第二处 return sum应改为 return sum; [NextPage] 第三题:学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:按分数的高低排列学生的记录,高分在前。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include
#define N 16
typedef struct
{
char num[10];
int s;
} STREC;
void fun ( STREC a[ ] )
{
}
main ()
{
STREC s[N]= {{"GA005",85}, {"GA003",76}, {"GA002",69}, {"GA004",85},
{"GA001",91}, {"GA007",72}, {"GA008",64}, {"GA006", 87},
{"GA015",85}, {"GA013",91}, {"GA012",64}, {"GA014",91},
{"GA011",66}, {"GA017",64}, {"GA018",64}, {"GA016",72}};
int i; FILE *out;
fun ( s );
printf ("The data after sorted :\n");
for (i=0; i {
if ( (i)%4==0 )
printf ("\n");
printf ("%s M ", s[i].num, s[i].s);
}
printf ("\n");
out=fopen ("out.dat", "w");
for (i=0; i {
if ( (i)%4==0 && i )
fprintf (out, "\n" );
fprintf (out, "M", s[i].s);
}
fprintf ( out, "\n" );
fclose (out );
}
参考答案:
void fun ( STREC a[ ] )
{ int i,j;
STREC t;
for(i=0; i for(j=i; j if(a[i].s { t=a[i];
a[i]=a[j];
a[j]=t;
}
}