2013計(jì)算機(jī)二級(jí)C語言上機(jī)題庫及答案解析(1)

字號(hào):

為大家收集整理了《2013計(jì)算機(jī)二級(jí)C語言上機(jī)題庫及答案解析(1)》供大家參考,希望對(duì)大家有所幫助!??!
    填空題
    給定程序中,函數(shù)fun的功能是:對(duì)形參s所指字符串中下標(biāo)為奇數(shù)的字符按ASCII碼大小遞增排序,并將排序后下標(biāo)為奇數(shù)的字符取出,存入形參p所指字符數(shù)組中,形成一個(gè)新串。
    例如,形參s所指的字符串為:baawrskjghzlicda,執(zhí)行后p所指字符數(shù)組中的字符串應(yīng)為:aachjlsw。
    請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。
    注意:源程序存放在考生文件夾下的BLANK1.C中。
    不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
    給定源程序:
    #include
    void fun(char *s, char *p)
    { int i, j, n, x, t;
    n=0;
    for(i=0; s[i]!='\0'; i++) n++;
    for(i=1; i
    ___1___;
    for(j=___2___+2 ; j
    if(s[t]>s[j]) t=j;
    if(t!=i)
    { x=s[i]; s[i]=s[t]; s[t]=x; }
    }
    for(i=1,j=0; i
    /
    p[j]=___3___;
    }
    main()
    { char s[80]="baawrskjghzlicda", p[50];
    printf("\nThe original string is : %s\n",s);
    fun(s,p);
    printf("\nThe result is : %s\n",p);
    }
    解題思路:
    第一處:取外循環(huán)的控制變量,所以應(yīng)填:t=i。
    第二處:內(nèi)循環(huán)的起始變量,應(yīng)該是i+2,所以應(yīng)填:i。
    第三處:新字符串處理完后應(yīng)添加字符串結(jié)束符,所以應(yīng)填:'\0'。
    改錯(cuò)題
    給定程序MODI1.C中函數(shù) fun 的功能是:用下面的公式求π的近似值,直到最后一項(xiàng)的絕對(duì)值小于指定的數(shù)(參數(shù)num )為止:
    π 1 1 1
    ┄┄≈1 - ┄┄ + ┄┄ - ┄┄ + ...
    4 3 5 7
    例如, 程序運(yùn)行后, 輸入0.0001, 則程序輸出3.1414。
    請(qǐng)改正程序中的錯(cuò)誤,使它能輸出正確的結(jié)果。
    注意:不要改動(dòng) main 函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
    給定源程序:
    #include
    #include
    float fun ( float num )
    { int s ;
    float n, t, pi ;
    t = 1 ; pi = 0 ; n = 1 ; s = 1 ;
    while(t >= num)
    {
    pi = pi + t ;
    n = n + 2 ;
    s = -s ;
    t = s % n ;
    }
    pi = pi * 4 ;
    return pi ;
    }
    main( )
    { float n1, n2 ;
    printf("Enter a float number: ") ;
    scanf("%f", &n1) ;
    n2 = fun(n1) ;
    printf("%6.4f\n", n2) ;
    }
    解題思路:
    第一處:要判斷t的最后一項(xiàng)絕對(duì)小于指定的數(shù),由于t是實(shí)數(shù),那么應(yīng)改為while(fabs(t)>=num)。
    第二處:t是s除以n的值,而不是取余數(shù),所以應(yīng)改t=s/n;。
    編程題
    請(qǐng)編寫一個(gè)函數(shù)void fun (char a[],char b[],int n),其功能是:刪除一個(gè)字符串中指定下標(biāo)的字符。其中, a指向原字符串, 刪除指定字符后的字符串存放在b所指的數(shù)組中,n中存放指定的下標(biāo)。
    例如,輸入一個(gè)字符串: World,然后輸入3,則調(diào)用該函數(shù)后的結(jié)果為: Word。
    注意: 部分源程序在文件PROG1.C中。
    請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。
    給定源程序:
    #include
    #include
    #define LEN 20
    void fun (char a[], char b[], int n)
    {  
    }
    main( )
    { char str1[LEN], str2[LEN] ;
    int n ;
    printf("Enter the string:\n") ;
    gets(str1) ;
    printf("Enter the position of the string deleted:") ;
    scanf("%d", &n) ;
    fun(str1, str2, n) ;
    printf("The new string is: %s\n", str2) ;
    NONO() ;
    }
    解題思路:
    本題是利用字符串拷貝和字符串連接來生成新的字符串。
    參考答案:
    void fun (char a[], char b[], int n)
    {
    strncpy(b, a, n) ;
    b[n] = 0 ;
    strcat(b, a + n + 1) ;
    }