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

字號:

為大家收集整理了《2013計算機二級C語言上機練習(xí)題及答案(9)》供大家參考,希望對大家有所幫助!??!
    一、填空題:
    請補充main函數(shù),該函數(shù)的功能是:從鍵盤輸入兩個字符串并人別保存在字符數(shù)組成str1 t 和str2中,用字符串str2 替換字符串聯(lián)str1前面的所有字符,注意:str2的長度不大于str1, 否則需要重新輸入.
    例如,如果輸入不敷出str1=”abced”,str2=”gg”, 則輸出ggced.
    僅在橫線上填入所編寫的若干表達式語句,勿改動函數(shù)的其它任何內(nèi)容.
    #include
    #include
    main()
    {
    char str1[81], str2[81];
    char *p1 = str1, *p2 = str2;
    do
    {
    printf(" Input str1 \n");
    gets(str1);
    printf(" Input str2 \n");
    gets(str2);
    } while (strlen(str1) ___1___ strlen(str2));
    while (___2___)
    *p1++ = *p2++;
    printf(" Display str1 \n");
    puts(___3___);
    }
    參考答案:
    第1處填空:<
    第2處填空:*p2或p2[0]
    第3處填空:str1
    二、改錯題:
    下列給定程序的功能是:讀入一個英文文本行,將其中每個單詞的第一個字母改成大寫,然后輸出此本行(這里的”單詞”是反指由空格隔開的字符串).例如,若輸入I am a student to take the examination,則應(yīng)輸出Am A Student To Take The Examination.
    請改正程序中的錯誤,使程序能得出正確的結(jié)果.
    注意;不要動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)
    #include
    #include
    #include
    /********found********/
    void upfst(char p)
    {
    int k = 0;
    for (; *p; p++)
    if (k)
    {
    if (*p == ' ')
    k = 0;
    }
    else
    {
    if (*p != ' ')
    {
    k = 1;
    *p = toupper(*p);
    }
    }
    }
    main()
    {
    char chrstr[81];
    printf("\nPlease enter an English text line: ");
    gets(chrstr);
    printf("\n\nBefore changing:\n %s", chrstr);
    upfst(chrstr);
    printf("\nAfter changing:\n %s\n", chrstr);
    }
    參考答案:
    第1處void upfst(char p)改為void upfst(char *p)
    三、編程題
    請編寫函數(shù)fun,它的功能是:求Fibonacci數(shù)列中大于t(t>3)的最小的一個數(shù),結(jié)果由函數(shù)返回.其中Fibonacci數(shù)列F(n)的定義為:
    F(0)=0,F(1)=1
    F()=F(n-1)+F(n-2)
    假如:當(dāng) t=1000時, 函數(shù)值為1567.
    請勿改動主函數(shù)動main其它的函數(shù)中的任何內(nèi)容,僅在函數(shù)fun花括號中填入所編寫的若干語句.
    #include
    #include
    #include
    int fun (int t)
    {
    } 
    main()
    {
    int n;
    FILE *out;
    n=1000;
    printf("n=%d,f=%d\n",n,fun(n));
    out=fopen ("out.dat", "w");
    for (n = 500; n < 3000; n+=500)
    fprintf(out, "%d\n", fun(n));
    fclose (out );
    }
    參考答案:
    int fun(int t)
    {
    int a=1,b=1,c=0,I;
    for(i=4;i<=t;i++)
    {
    if(c
    {
    c=a+b;
    a=b;
    b=c;
    }
    else
    break;
    }
    return c:
    }