全國(guó)2008年1月高等教育自學(xué)考試高級(jí)語(yǔ)言程序設(shè)計(jì)(一)試題2

字號(hào):

二、填空題(本大題共10小題,每小題2分,共20分)
    請(qǐng)?jiān)诿啃☆}的空格中填上正確答案。錯(cuò)填、不填均無(wú)分。
    16.設(shè)int x=14;,則表達(dá)式x++%-5的值為_(kāi)_________。
    17.設(shè)typedef char CHA;CHA ax;, 則變量ax 占用的內(nèi)存字節(jié)數(shù)是__________。
    18.設(shè)int u, v;, 則表示“u、v中至少有一個(gè)是5的倍數(shù)”的表達(dá)式是__________。
    19.設(shè)int x=5;, 則表達(dá)式2/(float)(x)+3/x的結(jié)果是__________。
    20.程序中調(diào)用sin(3.14)函數(shù)時(shí),需要包含的頭文件是__________。
    21.若對(duì)一個(gè)非空文本文件進(jìn)行讀取和修改,則在fopen中的“使用方式”應(yīng)是__________。
    22.設(shè) struct
    { int a;
    int b;
    }x[2]={{1,2},{3,4}}, *p=x;
    則表達(dá)式(++p)->a的值是__________。
    23.設(shè)int i, j;
    for(i=5;i;i--)
    for(j=0; j<4;j++) {…}
    則循環(huán)體的執(zhí)行次數(shù)是__________。
    24.設(shè)int a[3][4]={{1,2,5,3},{2,4,7,9},{3,6,5,8}};
    則表達(dá)式a[1][2]+a[2][3]的值是__________。
    25.設(shè)char *p=″abcdABCD″;, 則執(zhí)行 printf(″% s″, p+4); 后輸出結(jié)果是__________。
    三、程序分析題(本大題共4小題,每小題4分,共16分)
    閱讀下列程序,請(qǐng)將輸出結(jié)果寫到各題右側(cè)的空白處。
    26.main()
    {int i, j, k; char a[5]={′*′,′*′,′*′,′*′,′*′};
    for(i=0;i<4;i++)
    {printf(″\n″);
    for(j=0;j<=3*i;j++)printf(″$″);
    for(k=0;k<5;k++)printf(″% c″,a[k]);
    }
    }
    27.int fib(int n)
    {if(n==0||n==1)return 1;
    else return fib(n-1)+fib(n-2);
    }
    main()
    { int i;
    for(i=0; i<=4;i++)printf(″%5d″,fib(i));
    printf(″\n″);
    }
    28.main()
    {int n=0; char str[80]=″Abc+mNp-xyZ″;
    printf(″%s\n″,str);
    while(str[n]!=′\0′)
    str[n++]=str[n]>=′a′&& str[n]<=′z′? str[n]-′a′+′A′:str[n];
    printf(″%s\n″, str);
    }
    29.int f(int n)
    { static int a=0;
    int b=0;
    a+=n;
    b+=a;
    return b;
    }
    main ()
    {
    printf(″%d\n″,f(5));
    printf(″%d\n″,f(10));
    }
    四、程序填充題(本大題共3小題,每小題6分,共18分)
    請(qǐng)將下列程序橫線處缺少的部分補(bǔ)上,使其能正確運(yùn)行。
    30.分別統(tǒng)計(jì)并輸出17、18、19和20歲各年齡的學(xué)生人數(shù)。
    main()
    { int i, n, age, a[30];
    for(i=0; i<30; i++) a[i]=0;
    scanf(″%d″,&n); /* 輸入人數(shù)<30 */
    for (i=0; i    { scanf(″%d″,&age); /* 輸入年齡 */
    if(age<17||age>20) _________; /* 第一空 */
    else
    switch(________) /* 第二空 */
    {case 17:
    case 18:
    case 19:
    case 20: a[age-17] ++;
    }
    }
    for (i=0, i<=3; i++)
    printf(″age=%d number=%d\n″,i+17,________); /* 第三空 */
    }
    31.將從鍵盤輸入的字符串逆序顯示。
    #include
    main()
    {int n;
    char str[80], *p;
    printf(″Input a string:″);
    gets(str);/*輸入字符串*/
    n=strlen(________); /* 第一空 */
    p=str+________-1; /* 第二空 */
    while (p>=str)
    {printf(″%c″, *p);
    ________; /* 第三空 */
    }
    printf(″/n″);
    }
    32.從鍵盤輸入一個(gè)星期幾(0~6),轉(zhuǎn)換為對(duì)應(yīng)的英文輸出(Sunday, Monday,…),當(dāng)輸入小于0或大于6的數(shù)字時(shí)程序結(jié)束。
    main()
    {int week;
    static char *weekname[]={″Sunday″,″Monday″,″Tuesday″,″Wednesday″,
    ″Thrusday″,″Friday″,″Saturday″};
    while(1)
    { printf(″Input weekday:″);
    scanf(″%d″,__________); /* 第一空 */
    if(________)break; /* 第二空 */
    printf(″weekday:%d→%s\n″, week,__________); /* 第三空 */
    }
    }
    五、程序設(shè)計(jì)題(本大題共2小題,每小題8分,共16分)
    33.從鍵盤輸入100個(gè)整數(shù),輸出其中的數(shù)及其對(duì)應(yīng)的數(shù)組下標(biāo)值。
    34.從鍵盤輸入某學(xué)生的成績(jī)(0≤score≤100)后,先輸出該同學(xué)的成績(jī),再按下列條件
    輸出