第5~6套
【程序填空题_5】给定程序中,函数fun的功能是将参数给定的字符串、整数、浮点数写到文本文件中,再用字符串方式从此文本文件中逐个读入,并调用函数atoi和atof将字符串转换成相应的整数、浮点数,然后将其显示在屏幕上。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | #include <stdio.h> #include <stdlib.h> void fun(char *s, int a, double f) { /**********found**********/ ____________ 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**********/ _________________; fp = fopen("file1.txt", "r"); /**********found**********/ fscanf(__________,"%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); } |
【程序修改题_5】给定程序MODI1.C中函数fun的功能是:对N名学生的成绩,按从高到低的顺序找出前m(m≤10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。 请改正程序中的错误,使它能计算出正确的结果。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | #include <stdio.h> #include <stdlib.h> #include <string.h> #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<N; i++) b[i]=a[i]; for(k=0; k<m; k++) { for(i=j=0; i<N; 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<N; 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<m; i++) printf(" %s %d\n",pOrder[i].num , pOrder[i].s); free(pOrder); } |
【程序设计题_5】请编写函数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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <stdio.h> #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; printf("The original data :\n"); for(i=0; i<n; i++)printf("%3d",a[i]); n=fun(a,n); printf("\n\nThe data after deleted :\n"); for(i=0;i<n;i++)printf("%3d",a[i]); printf("\n\n"); } |