现在的位置: 首页 > 14 二级C语言 > 正文

2011年9月全国二级C上机真题第5~6套

2013年02月25日 14 二级C语言 ⁄ 共 896字 ⁄ 字号 暂无评论

第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");
}

抱歉!评论已关闭.