请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
注意:源程序存放在考生文件夹下BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
#include
#define N 5
#define M 8
void fun(char (*ss)[M])
{char *ps[N],*tp; int i,j,k;
for(i=0; i for(i=0; i /**********found**********/ k= __1__ ; for(j=i+1; j /**********found**********/ if(strlen(ps[k]) < strlen(__2__)) k=j; /**********found**********/ tp=ps[i]; ps[i]=ps[k]; ps[k]= __3__ ; } printf("\nThe string after sorting by length:\n\n"); for(i=0; i } main() {char ch[N][M]={"red","green","blue","yellow", "black"}; int i; printf("\nThe original string\n\n"); for(i=0;i fun(ch); } 解题答案: /**********第一空**********/ k= i ; /**********第二空**********/ if(strlen(ps[k]) < strlen(ps[j])) k=j; /**********第三空**********/ tp=ps[i]; ps[i]=ps[k]; ps[k]= tp ; ******************************************[NextPage] 二、改错题:已知一个数列从第0项开始的前三项分别为0,0,1,以后的各项都是其相邻的前三项之和。给定程序MODI1.C中函数fun的功能是:计算并输出该数列前n项的平方根之和。n的值通过形参传入。 例如,当n=10时,程序的输出结果应为:23.197745。 请改正程序中的错误,使程序能输出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 给定源程序: #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("%f\n", fun(n)); } 解题答案: /************found************/ double fun(int n) /************found************/ return sum; [NextPage] 三、程序题:编写函数fun,它的功能是计算下列级数和,和值由函数值返回。 例如,当n = 10,x=0.3时,函数值为1.349859。 注意: 部分源程序在文件PROG1.C文件中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun 的花括号中填入你编写的若干语句。 给定源程序: #include #include double fun(double x , int n) { } main() {void NONO (); printf("%f\n", fun(0.3,10)); NONO(); } void NONO () {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ; int i, n ; double s, x ; fp = fopen("in.dat","r"); wf = fopen("out.dat","w"); for(i = 0 ; i < 10 ; i++) { fscanf(fp, "%lf,%d", &x, &n); s = fun(x, n); fprintf(wf, "%f\n", s); } fclose(fp); fclose(wf); } 参考答案: #include #include long jc(int n) { long s = 1 ; int i ; for(i = 1 ; i <= n ; i++) s *= i ; return s ; } double fun(double x , int n) { double s = 1.0, y = x ; int i ; for(i = 1 ; i <= n ; i++) { s += y / (double)jc(i) ; y *= x ; } return s ; }
| 广告合作:400-664-0084 全国热线:400-664-0084 Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号 珠峰网 版权所有 All Rights Reserved
|