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

字號(hào):

全國2007年10月高等教育自學(xué)考試
    高級(jí)語言程序設(shè)計(jì)(一)試題
    課程代碼:00342
    一、單項(xiàng)選擇題(本大題共15小題,每小題2分,共30分)
    在每小題列出的四個(gè)備選項(xiàng)中只有一個(gè)是符合題目要求的,請(qǐng)將其代碼填寫在題后的括號(hào)內(nèi)。錯(cuò)選、多選或未選均無分。
    1.可以作為自定義標(biāo)識(shí)符的是( )。
    A.2x
    B.break
    C.m-n
    D.m_n
    2.正確的變量定義是(?。?。
    A.unsigned long d=1000;
    B.float m1=m2=10.0;
    C.char c1=’A’,c2=A;
    D.double x=0.618,x=3.14;
    3.表達(dá)式的值為0的是(?。?。
    A.5/5%5
    B.5>2
    C.!4
    D.0x7&7
    4.設(shè)int a=1,b=2;,則執(zhí)行a=b+2,a++,a+b;后a和b的值分別是(?。?。
    A.1和2
    B.3和2
    C.4和7
    D.5和2
    5.設(shè)int a=2,b=3,c=4;,則表達(dá)式a>b&&b    A.-1
    B.0
    C.1
    D.2
    6.設(shè)int a=2,b=3,x,y;,則能正確執(zhí)行的語句是( )。
    A.scanf(〞%d,%d〞,x-y,x+y);
    B.printf(〞%d\n〞,a%b);
    C.printf(〞%f\n〞,a+b);
    D.scanf(〞%d,%d〞,x,y);
    7.設(shè)char s[10]= 〞abcde〞,t[ ]= 〞12345〞; ,則s和t在內(nèi)存中分配的字節(jié)數(shù)分別是( )。
    A.6和5
    B.6和6
    C.10和5
    D.10和6
    8.設(shè)int a=10,*p=&a; ,則執(zhí)行printf(〝%d\n〞,*p+a);的結(jié)果是(?。?。
    A.10
    B.20
    C.30
    D.40
    9.自定義函數(shù)中形式參數(shù)的作用域是(?。?。
    A.本文件
    B.本函數(shù)
    C.main 函數(shù)
    D.整個(gè)程序
    10.設(shè)int b[ ][5]={1,2,3,4,5,6,7};,則元素b[1][2]的值是(?。?。
    A.0
    B.2
    C.6
    D.7
    11.對(duì)函數(shù)而言,敘述正確的是(?。?。
    A.函數(shù)中只能有一個(gè)return 語句
    B.當(dāng)函數(shù)的形參是數(shù)組時(shí)形實(shí)結(jié)合為值傳遞方式
    C.程序中只能有一個(gè)main函數(shù)
    D.無參函數(shù)的函數(shù)體內(nèi)不能出現(xiàn)return語句
    12.執(zhí)行下列程序段后輸出的結(jié)果是(?。?。
    int x,y,z=1;
    for(x=1,y=-1;x    printf(〞%d\n〞,z);
    A.1
    B.2
    C.5
    D.6
    13.設(shè)static int a[3]={1,2,3};int*p[ ]={&a[0],&a[1],&a[2]};則與數(shù)組元素a[1]等價(jià)的是( )。
    A.*p[1]
    B.p[1]
    C.*p+1
    D.p+1
    14.設(shè)struct{char name[10];int age;}stu[2]={{ 〞Tom〞,25},{〞Mary〞,26}},*p=stu;則執(zhí)行語句printf(〞%s%d\n〞,p->name,stu[1].age);后輸出結(jié)果是(?。?。
    A.Tom25
    B.Tom26
    C.Mary25
    D.Mary26
    15.設(shè)typedef double DB;,則與DB u[5];的等價(jià)形式是(?。?。
    A. double db[5];
    B.double DB[5];
    C.double u;
    D.double u[5;]
    二、填空題(本大題共10小題,每小題2分,共20分)
    請(qǐng)?jiān)诿啃☆}的空格中填上正確答案。錯(cuò)填、不填均無分。
    16.一個(gè)字符型變量所占內(nèi)存的字節(jié)數(shù)是____________________。
    17.寫出公式對(duì)應(yīng)的C語言表達(dá)式_________________。
    18.執(zhí)行語句printf(〞%s\n, 〞〞 World\0Wide\0Web〞);后的輸出結(jié)果是_______________。
    19.設(shè)int a,b=5;,則執(zhí)行表達(dá)式a=b-2==3后a的值是_________________。
    20.設(shè)char s[20]= 〞My〞;,則執(zhí)行strcat(s, 〞Sun! 〞)后s的內(nèi)容是___________________。
    21.設(shè)float x=23.65;, 則執(zhí)行語句printf (〞%d\n〞,(int)(x+0.5));后輸出結(jié)是_______________。
    22.若定義函數(shù)char*fun( ){…},則該函數(shù)的返回值類型是__________________。
    23.設(shè)int x=-9,y;,則執(zhí)行y=x>=0?x:-x;后y的值是_________________。
    24.若函數(shù)調(diào)用語句為f(a,b,f(a+b,a-b,b));,則函數(shù)f的參數(shù)個(gè)數(shù)是__________________。
    25.設(shè)int a=10;,則執(zhí)行語句a+=a-=a+a;后a 的值是_________________。
    三、程序分析題(本大題共4小題,每小題4分,共16分)
    閱讀下列程序,請(qǐng)將輸出結(jié)果寫到各題右側(cè)的空白處。
    26.main()
    {int a=1,b=2,c=3;
    if(a<=c)
    if(b==c)printf(〞a=%d\n〞,a);
    else printf(〞b=%d\n〞,b);
    printf(〞c=%d\n〞,c);
    }
    27.int f(int n)
    {static int m=5;
    return ++m+n;
    }
    main()
    {int i;
    for(i=0;i<3;i++)printf(〞%5d〞,f(i));
    printf(〞\n〞);
    }
    28.#define SIZE 4
    main()
    {int n[SIZE]={8,3,4,1};
    int i, j;
    for (i=0;i    {printf{〞%d〞,n[i]};
    for(j=1;j<=n[i];j++)printf(〞*〞);
    printf(〞\n〞);
    }
    }
    29.int fm(int a,int b)
    {if(b==1)return a;
    else return a+fm(a,b-1);
    }
    main()
    {
    printf(〞%d\n〞,fm(4,3));
    }
    四、程序填充題(本大題共3小題,每小題6分,共18分)
    請(qǐng)將下列程序橫線處缺少的部分補(bǔ)上,使其能正確運(yùn)行。
    30.函數(shù)fun 用于計(jì)算數(shù)組各元素值的平方,主函數(shù)調(diào)用fun并輸出各元素的值。
    void fun(int num,int a[ ])
    {int i;
    for (i=0;i<___________;i++)a[i]=a[i]*a[i]; /*第一空*/
    }
    main()
    {
    int i,b[5]={1,2,3,4,5};
    fun(5,_______); /*第二空*/
    for (i=0;i<5;i++)printf(〞%5d〞,________); /*第三空*/
    printf(〞\n〞);
    }
    31.從鍵盤輸入一串字符(“#”作為結(jié)束標(biāo)志),將其寫入文本文件file.dat 中保存。
    #include
    #include
    main()
    {char ch;
    FILE*fp;
    if((fp=fopen(〞file.dat〞, 〞______〞))= =NULL) /*第一空*/
    {printf(〞Can not open file\n〞);exit(0);}
    ch=getchar();
    while (ch!=’# ’)
    {fputc(________,fp); /*第二空*/
    ch=getchar();
    }
    fclose(________); /*第三空*/
    }
    32.從鍵盤輸入x的值,根據(jù)以下公式計(jì)算并輸出x和y 的值。
    #include
    #include
    main()
    {float x,y;
    scanf(〞%f〞,______); /*第一空*/
    if(x<0)printf(〞input error!\n〞);
    else
    {switch ((int)(x/2))
    {case 0:y=x;_______; /*第二空*/
    case 1:
    case 2:y=x*x+1;break;
    case 3:
    case 4:y=_____________;break; /*第三空*/
    default :y=1/(x*x+1);
    }
    printf(〞x=%7.2f,y=%10.6f\n〞,x,y);
    }
    }
    五、程序設(shè)計(jì)題(本大題共2小題,每小題8分,共16分)
    33.從鍵盤輸入100個(gè)整數(shù),計(jì)算并輸出大于等于零的數(shù)的平均值(保留小數(shù)點(diǎn)后兩位)。
    34.(1)編寫一個(gè)計(jì)算梯形面積的函數(shù)。函數(shù)頭是:float area(float t,float b,float h)
    其中變量t、b和h分別表示梯形的上底、下底和高。
    (2)編寫主函數(shù)從鍵盤輸入梯形的上底、下底和高的值,調(diào)用上述函數(shù)輸出梯形面積
    (保留小數(shù)點(diǎn)后兩位)。