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

字號:

二、填空題 (本大題共10小題,每小題2分,共20分)
    請?jiān)诿啃☆}的空格中填上正確答案。錯填、不填均無分。
    16.賦值運(yùn)算符的結(jié)合性是_______。
    17.設(shè)char ch;,判斷ch為數(shù)學(xué)字符的邏輯表達(dá)式是_______。
    18.設(shè)typedef float REAL;REAL x=1;,表達(dá)式x/2的值是_______。
    19.轉(zhuǎn)義字符'\n'的含義是_______。
    20.設(shè)int a=12;,語句printf(″%d\n″,(a/3,a%3,a/10>0));的輸出結(jié)果是_______。
    21.函數(shù)中未指定存儲類型的局部變量,其隱含的存儲類型是_______。
    22. 若全局整型變量未初始化,則默認(rèn)的初始值是_______。
    23.設(shè)int a,*p=&a;,通過指針變量p為a輸入值的scanf語句是_______。
    24.設(shè)char*s=″abc″;,語句for(;*s!='\0';s++) printf (″W″);的輸出結(jié)果是_______。
    25.設(shè)struct student
    {
    char name [20];
    char sex;
    }stu;
    語句printf(″%d\n″,sizeof(stu));的輸出結(jié)果是_______。
    三、程序分析題(本大題共4小題,每小題4分,共16分)
    閱讀下列程序,請將輸出結(jié)果寫到各題右側(cè)的空白處。
    26. #include
    void main()
    {
    int i=11,j;
    j=i%3;
    switch (j)
     { case 1:
    case 2: printf(″%d\n″,j); break;
    default: printf(″%d\n″,i);
     }
    }
    27. #include
    int fx (int n)
    {
    int s;
    if (n==0) s=0;
    else s=n+fx (n-2);
    return s;
    }
    void main()
    {
    printf (″%d\n″,fx(8));
    }
    28. #include
    #include
    void main ()
    {
    char *pa, a [20]=″Beijing2008″;
    for (pa=a+7;*pa!='\0';pa++) putchar (*pa);
    putchar ('\n');
    }
    29. #include
    #define N 6
    void main ()
    {
    int a [N]={2,5,-6,4,-9,10}, i;
    for (i=0;i  {
     if(a[i]<0) continue;
     printf(″% 3d″,a[i]);
    }
    printf (″\n″);
    }
    四、程序填充題(本大題共3小題,每小題6分,共18分)
    請將下列程序橫線處缺少的部分補(bǔ)上,使其能正確運(yùn)行。
    30.輸入100名學(xué)生的出生月份,統(tǒng)計(jì)并輸出每個(gè)月份過生日的學(xué)生人數(shù)。
    #include
    #define N 100
    void main ()
    {
    int i, month;
    int birth [13]={0}; /*birth [1]~birth [12]分別保存1~12月過生日的學(xué)生數(shù)*/
    for (i=1;i<=N;i++)
    {
     scanf(″%d″, _______); /*第一空*/
     if (month >=1 && month<=12) birth [month]++;
    }
    for (i=1; _______;i++) /*第二空*/
    printf(″%d month_______ \n″,i, birth [i]); /*第三空*/
    }
    31.輸入n(n≥1), 計(jì)算1+(1+2)+(1+2+3)+…….+(1+2+……+n)的值。
    void main ( )
    {
    int i,n;
    long sum=0;long cal (int);
    scanf (″%d″,&n);
    for (i=1;i<=n;i++) sum =sum+cal(_______); /*第一空*/
    printf (″1+(1+2)+…+(1+2+…+n)=%ld\n″,sum);
    }
    long cal (_______) /*第二空*/
    {
    static long s=0;
    s=s+m;
    _______; /*第三空*/
    }
    32.將文件data1.txt的內(nèi)容復(fù)制到文件data2.txt中。
    #include
    void main ( )
    {
    char ch;
    FILE *f1,*f2;
    f1=fopen (″data1.txt″,″_______″); /*第一空*/
    f2=fopen (″data2.txt″,″w″);
    do
    {
    _______=fgetc (f1); /*第二空*/
    fputc (ch, _______); /*第三空*/
    } while (!feof (f1));
    fclose (f1); fclose (f2);
    }
    五、程序設(shè)計(jì)題(本大題共2小題,每小題8分,共16分)
    33.輸入x的值,按下列公式計(jì)算并輸出y的值(保留兩位小數(shù))。
    y=
    34.輸入10個(gè)整數(shù)到數(shù)組a中并輸出,將數(shù)組各元素依次向后循環(huán)移動一個(gè)位置(如下圖),輸出移動后的數(shù)組a。
    移動前:
     a[0]
     a[1]
     a[2]
     a[3]
     a[4]
     a[5]
     a[6]
     a[7]
     a[8]
     a[9]
    移動后:
     a[9]
     a[0]
     a[1]
     a[2]
     a[3]
     a[4]
     a[5]
     a[6]
     a[7]
     a[8]