2013年計(jì)算機(jī)二級(jí)C語(yǔ)言上機(jī)題庫(kù)及答案解析(14)

字號(hào):

為大家收集整理了《2013年計(jì)算機(jī)二級(jí)C語(yǔ)言上機(jī)題庫(kù)及答案解析(14)》供大家參考,希望對(duì)大家有所幫助?。?!
    第一題:請(qǐng)補(bǔ)充函數(shù)fun,該函數(shù)的功能是比較字符串str1和str2的大小,并返回比較的結(jié)果。
    例如:當(dāng)str1=“abcd”,str2=”abc”時(shí),fun函數(shù)返回”>”。
    請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在fun函數(shù)的橫線上填入所編寫的若干表達(dá)式和語(yǔ)句。#include
    #include
    #define N 80
    char *fun(char *str1, char *str2)
    {
    char *p1 = str1, *p2 = str2;
    while (*p1 && *p2)
    {
    if (___1___)
    return "<";
    if (___2___)
    return ">";
    p1++;
    p2++;
    }
    if (*p1 == *p2)
    return "==";
    if (*p1 == ___3___)
    return "<";
    else
    return ">";
    }
    main()
    {
    char str1[N], str2[N];
    printf("Input str1:\n");
    gets(str1);
    printf("Input str2:\n");
    gets(str2);
    printf("\n*******the result********\n");
    printf("\nstr1 %s str2", fun(str1, str2));
    }
    填空題參考答案:
    第1處填空:*p1<*p2或*p2>*p1
    第2處填空:*p1>*p2或*p2<*p1
    第3處填空:’\0’或0
    第二題:下列給定程序中,函數(shù)fun的功能是:比較兩個(gè)字符串,將長(zhǎng)的那個(gè)字符串的首地址作為函數(shù)值返回。
    請(qǐng)改正函數(shù)fun中的錯(cuò)誤,使它能得出正確的結(jié)果。
    注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
    #include
    #include
    /********found********/
    double fun(char *s, char *t)
    {
    int s1 = 0, t1 = 0;
    char *ss, *tt;
    ss = s;
    tt = t;
    /********found********/
    while (*ss)
    {
    s1++;
    (*ss)++;
    }
    /********found********/
    while (*tt)
    {
    t1++;
    (*tt)++;
    }
    if (t1 > s1)
    return t;
    else
    return s;
    }
    main()
    {
    char a[80], b[80];
    printf("\nEnter a string : ");
    gets(a);
    printf("\nEnter a string again : ");
    gets(b);
    printf("\nThe longer is :\n\n%s\n", fun(a, b));
    }
    改錯(cuò)題參考答案:
    第一處: double fun(char *s, char *t) 應(yīng)改為 char *fun(char *s, char *t)
    第二處: (*ss)++; 應(yīng)改為 ss++;
    第三處: (*tt)++; 應(yīng)改為 tt++;
    第三題:學(xué)生的記錄由學(xué)號(hào)和成績(jī)組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請(qǐng)編寫函數(shù)fun,它的功能是:把低于平均分的學(xué)生數(shù)據(jù)放在b 所指的數(shù)組中,低于平均分的學(xué)生人數(shù)通過(guò)形參n傳回,平均分通過(guò)函數(shù)值返回。
    請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫在若干語(yǔ)句。
    #include
    #define N 8
    typedef struct
    {
    char num[10];
    double s;
    } STREC;
    double fun ( STREC *a, STREC *b, int *n )
    {
    } 
    main()
    {
    STREC s[N]={{"GA05",85}, {"GA03",76}, {"GA02",69}, {"GA04",85},
    {"GA01",91}, {"GA07",72}, {"GA08",64}, {"GA06", 87}};
    STREC h[N], t;FILE *out ;
    int i, j, n;
    double ave;
    ave=fun ( s, h, &n );
    printf ("The %d student data which is lower than %7.3f:\n", n, ave );
    for (i=0; i  printf ("%s %4.1f\n", h[i]. num, h[i]. s);
    printf ("\n");
    out=fopen ("out.dat","w");
    fprintf (out, "%d\n%7.3f\n", n, ave);
    for (i=0; i  for(j=i+1;j  if(h[i].s>h[j].s)
    {
    t=h[i] ;
    h[i]=h[j];
    h[j]=t;
    }
    for(i=0;i  fprintf (out, "%4.1f\n", h[i].s );
    fclose (out );
    }
    編程題參考答案:
    double fun (STREC *a, STREC *b, int *n)
    {
    double aver=0.0;
    int i, j=0;
    *n=0;
    for (i=0; i  aver+=a[i].s;
    aver/=N;
    for(i=0;i  if(a[i].s  {
    b[j]=a[i];
    (*n)++;
    j++;
    }
    return aver;
    }