所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7;则按规则移动
后,数据排列为:1、9、2、8、3、7、4、6、5。形参n中存放a所指数组中数据的个数。
注意:规定fun函数中的max存放当前所找的最大值,px存放当前所找最大 值的下标。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!
给定源程序:
# include
#define N 9
void fun(int a[], int n)
{int i,j, max, min, px, pn, t;
for (i=0; i
{
/**********found**********/
max = min = ___1___;
px = pn = i;
for (j=i+1; j
/**********found**********/
if (max<___2___)
{max = a[j]; px = j;}
/**********found**********/
if (min>___3___)
{min = a[j]; pn = j;}
}
if (pn != i)
{t = a[i]; a[i] = min; a[pn] = t;
if (px == i) px =pn;
}
if (px != i+1)
{t = a[i+1]; a[i+1] = max; a[px] = t;}
}
}
main()
{int b[N]={9,1,4,2,3,6,5,8,7}, i;
printf("\nThe original data :\n");
for (i=0; i
fun(b, N);
printf("\nThe data after moving :\n");
for (i=0; i
}
解题答案:
/**********第一空**********/
max = min = a[i];
/**********第二空**********/
/**********第三空**********/
if (min>a[j])
****************************************** [NextPage] 二、改错题:给定程序MODI1.C中函数fun的功能是:用递归算法计算斐波拉契数列中第n 项的值。从第1项起,斐波拉契数列为:1、1、2、3、5、8、13、21、…… 例如,若给n输入7,该项的斐波拉契数值为:13。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 给定源程序:
#include
long fun(int g)
{
/**********found**********/
switch(g); /* switch语句*/
{case 0: return 0;
/**********found**********/
case 1 ;case 2 : return 1 ;
}
return(fun(g-1)+fun(g-2));
}
main()
{long fib; int n;
printf("Input n: "); scanf("%d",&n); printf("n = %d\n",n);
fib=fun(n);
printf("fib = %d\n\n",fib);
}
解题答案:
/**********found**********/
switch(g) /* switch语句*/
/**********found**********/
case 1: return 1; case 2:return 1;
******************************************
[NextPage] 三、程序题:某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。请编写函数fun,它的功能是:求出该学生的平均分放在记录的ave成员中。
例如,学生的成绩是:85.5,76,69.5,85,91,72,64.5,87.5,他的平均分应当
是:78.875。
注意: 部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun部位中填入你编写的若干语句。
给定源程序:
#include
#define N 8
typedef struct
{char num[10];
double s[N];
double ave;
} STREC;
void fun(STREC *a)
{
}
main()
{STREC s={"GA005",85.5,76,69.5,85,91,72,64.5, 87.5};
int i;
void NONO ();
fun(&s);
printf("The %s's student data:\n", s.num);
for(i=0;i
printf("%4.1f\n",s.s[i]);
printf("\nave=%7.3f\n",s.ave);
NONO();
}
void NONO()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *out ;
int i,j ; STREC s[10] = {
{"GA005",85.5,76,69.5,85,91,72,64.5,87.5},
{"GA001",82.5,66,76.5,76,89,76,46.5,78.5},
{"GA002",72.5,56,66.5,66,79,68,46.5,58.5},
{"GA003",92.5,76,86.5,86,99,86,56.5,88.5},
{"GA004",82,66.5,46.5,56,76,75,76.5,63.5},
{"GA006",75.5,74,71.5,85,81,79,64.5,71.5},
{"GA007",92.5,61,72.5,84,79,75,66.5,72.5},
{"GA008",72.5,86,73.5,80,69,63,76.5,53.5},
{"GA009",66.5,71,74.5,70,61,82,86.5,58.5},
{"GA010",76,66.5,75.5,60,76,71,96.5,93.5},
};
out = fopen("out.dat","w");
for(i = 0 ; i < 10 ; i++) {
fun(&s[i]);
fprintf(out, "%7.3f\n", s[i].ave);
}
fclose(out);
}
参考答案:
void fun(STREC *a)
{
int i ;
for(i = 0 ; i < N ; i++)
a->ave = a->ave + a->s[i] ;
a->ave /= N ;
}
| 广告合作:400-664-0084 全国热线:400-664-0084 Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号 珠峰网 版权所有 All Rights Reserved
|