请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
注意:源程序存放在考生文件夹下BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
#include
void fun(char *s, int a, double f)
{
/**********found**********/
__1__ fp;
char str[100], str1[100], str2[100];
int a1; double f1;
fp = fopen("file1.txt", "w");
fprintf(fp, "%s %d %f\n", s, a, f);
/**********found**********/
__2__ ;
fp = fopen("file1.txt", "r");
/**********found**********/
fscanf(__3__,"%s%s%s", str, str1, str2);
fclose(fp);
a1 = atoi(str1);
f1 = atof(str2);
printf("\nThe result :\n\n%s %d %f\n", str, a1, f1);
}
main()
{char a[10]="Hello!"; int b=12345;
double c= 98.76;
fun(a,b,c);
}
解题答案:
/**********第一空**********/
FILE* fp;
/**********第二空**********/
fclose(fp) ;
/**********第三空**********/
fscanf(fp,"%s%s%s", str, str1, str2);
****************************************** [NextPage] 二、改错题:给定程序MODI1.C中函数fun的功能是: 对N名学生的学习成绩,按从高到低的顺序找出前m(m≤10)名学生来, 并将这些学生数据存放在一个动态分配的连续存储区中, 此存储区的首地址作为函数值返回。请改正函数fun中指定部位的错误, 使它能得出正确的结果。
注意: 不要改动main函数, 不得增行或删行, 也不得更改程序的结构!
给定源程序:
#include
#include
#include
#define N 10
typedef struct ss
{char num[10];
int s;
} STU;
STU *fun(STU a[], int m)
{STU b[N], *t;
int i,j,k;
/**********found**********/
t=(STU *)calloc(sizeof(STU),m)
for(i=0; i for(k=0; k {for(i=j=0; i if(b[i].s > b[j].s) j=i; /**********found**********/ t(k)=b(j); b[j].s=0; } return t; } outresult(STU a[], FILE *pf) {int i; for(i=0; i fprintf(pf,"No = %s Mark = %d\n", a[i].num,a[i].s); fprintf(pf,"\n\n"); } main() {STU a[N]={ {"A01",81},{"A02",89},{"A03",66}, {"A04",87},{"A05",77},{"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71} }; STU *pOrder; int i, m; printf("***** The Original data *****\n"); outresult(a, stdout); printf("\nGive the number of the students who have better score: "); scanf("%d",&m); while(m>10) {printf("\nGive the number of the students who have better score: "); scanf("%d",&m); } pOrder=fun(a,m); printf("***** THE RESULT *****\n"); printf("The top :\n"); for(i=0; i printf(" %s %d\n",pOrder[i].num , pOrder[i].s); free(pOrder); } 解题答案: /**********found**********/ t=(STU *)calloc(sizeof(STU),m); /**********found**********/ t[k]=b[j]; ****************************************** [NextPage] 三、程序题:请编写函数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。 注意:部分源程序在文件PROG1.C中。 请勿改动主函数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;void NONO (); printf("The original data :\n"); for(i=0; i n=fun(a,n); printf("\n\nThe data after deleted :\n"); for(i=0;i n = fun(a, n); for(j = 0 ; j < n ; j++) fprintf(wf, "M", a[j]); fprintf(wf, "\n"); } fclose(rf); fclose(wf); } 参考答案: int fun(int a[], int n) { int i, j = 1, k = a[0] ; for(i = 1 ; i < n ; i++) if(k != a[i]) { a[j++]=a[i] ; k = a[i] ; } a[j] = 0 ; return j ; }
| 广告合作:400-664-0084 全国热线:400-664-0084 Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号 珠峰网 版权所有 All Rights Reserved
|