2013計(jì)算機(jī)二級C語言上機(jī)練習(xí)題及答案(7)

字號:

為大家收集整理了《2013計(jì)算機(jī)二級C語言上機(jī)練習(xí)題及答案(7)》供大家參考,希望對大家有所幫助!??!
    程序通過定義并賦初值的方式,利用結(jié)構(gòu)體變量存儲了一名學(xué)生的信息。函數(shù)fun的功能是輸出這位學(xué)生的信息。
    請?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。
    注意:源程序存放在考生文件夾下的BLANK1.C中。
    不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
    給定源程序:
    #include
    typedef struct
    { int num;
    char name[9];
    char sex;
    struct { int year,month,day ;} birthday;
    float score[3];
    }STU;
    void show(STU ___1___)
    { int i;
    printf("\n%d %s %c %d-%d-%d", tt.num, tt.name, tt.sex,
    tt.birthday.year, tt.birthday.month, tt.birthday.day);
    for(i=0; i<3; i++)
    printf("%5.1f", ___2___);
    printf("\n");
    }
    main( )
    { STU std={ 1,"Zhanghua",'M',1961,10,8,76.5,78.0,82.0 };
    printf("\nA student data:\n");
    show(___3___);
    }
    解題思路:
    本題是利用結(jié)構(gòu)體變量存儲了一名學(xué)生的信息。
    第一處:tt變量在函數(shù)體fun已經(jīng)使用,所以應(yīng)填:tt。
    第二處:利用循環(huán)分別輸出學(xué)生的成績數(shù)據(jù),所以應(yīng)填:tt.score[i]。
    第三處:函數(shù)的調(diào)用,所以應(yīng)填:std。
    給定程序MODI1.C中函數(shù) fun 的功能是:求出數(shù)組中數(shù)和次數(shù),并把數(shù)和a[0]中的數(shù)對調(diào)、次數(shù)和a[1]中的數(shù)對調(diào)。請改正程序中的錯誤,使它能得出正確的結(jié)果。
    注意:不要改動 main 函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
    給定源程序:
    #include
    #define N 20
    int fun ( int * a, int n )
    { int i, m, t, k ;
    for(i=0;i<2;i++) {
    m=0;
    for(k=i+1;k  if(a[k]>a[m]) k=m;
    t=a[i];a[i]=a[m];a[m]=t;
    }
    }
    main( )
    { int x, b[N]={11,5,12,0,3,6,9,7,10,8}, n=10, i;
    for ( i=0; i  fun ( b, n );
    for ( i=0; i  }
    解題思路:
    第一處:外循環(huán)每循環(huán)一次,把當(dāng)前位置i賦值給m,所以應(yīng)改為:m=i;。
    第二處:通過內(nèi)循環(huán)來找出的一個數(shù)的位置k,所以應(yīng)改為:if(a[k]>a[m]) m=k;。
    請編寫一個函數(shù) unsigned fun ( unsigned w ),w 是一個大于10的無符 號整數(shù),若 w 是 n (n ≥ 2)位的整數(shù),函數(shù)求出w的低 n-1位的數(shù)作為函數(shù)值返回。
    例如:w 值為 5923,則函數(shù)返回 923; w 值為 923 則函數(shù)返回 23。
    注意: 部分源程序存在文件PROG1.C中。
    請勿改動主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
    給定源程序:
    #include
    unsigned fun ( unsigned w )
    {
    }
    main( )
    { unsigned x;
    printf ( "Enter a unsigned integer number : " ); scanf ( "%u", &x );
    printf ( "The original data is : %u\n", x );
    if ( x < 10 ) printf ("Data error !");
    else printf ( "The result : %u\n", fun ( x ) );
    NONO( );
    }  
    解題思路:
    本題是考察考生怎樣獲取一個符合要求的無符號整數(shù)。本題是應(yīng)用if條件語句首先判斷給出的數(shù)是幾位數(shù),再模相應(yīng)的值,最后得出的余數(shù)就是結(jié)果。
    參考答案:
    unsigned fun ( unsigned w )
    {
    if(w>10000) w %= 10000 ;
    else if(w>1000) w %= 1000 ;
    else if(w>100) w %= 100 ;
    else if(w>10) w %=10 ;
    return w ;
    }