2004年4月全國高等教育自學(xué)考試微型計(jì)算機(jī)原理與接口技術(shù)試題

字號(hào):

一、單項(xiàng)選擇題(本大題共21小題,每小題1分,共21分)
    在每小題列出的四個(gè)備選項(xiàng)中只有一個(gè)是符合題目要求的,請(qǐng)將其代碼填寫在題后的括號(hào)內(nèi)。錯(cuò)選、多選或未選均無分。
    1.main()
    { int x,y;
    x=y=1;
    y=++x;
    printf(″%d,%d\n″,x,y);
    }
    程序運(yùn)行結(jié)果為(?。?BR>    A.2,2 B.1,2 C.2,1 D.1,1
    2.main()
    {
    int x=5,y=3,z=1;
    printf(″%d\n″,x>y0);
    }
    程序運(yùn)行結(jié)果為( )
    A.1 B.3 C.5 D.0
    3.main()
    { int k=10;
    while(k= =0)
    {k=k-1;
    printf(“k=%d”,k);}
    }
    程序中循環(huán)體執(zhí)行的情況是(?。?BR>    A.執(zhí)行10次 B. while構(gòu)成無限循環(huán)
    C.一次也不執(zhí)行 D.執(zhí)行一次
    4.文件a.dat中依次存放0-9十個(gè)字符(?。?BR>    #include“ stdio.h”
    main()
    {FILE*p;
    int i;
    char c;
    p=fopen(“a.dat”,“r”);
    for(i=0; ib?a=1;b=0:a+b;
    printf(“c=%f\n”,c);
    }
    24.main()
    { int a,*p;
    a=20;
    p=a;
    printf(“a=%d”,*p);
    }
    25.main()
    {struct student
    {char name;
    int age;
    float score;
    }s,t, *p;
    p=
    scanf(“%s”,s.name);
    scanf(“%d”,
    scanf(“%f”,
    t.score=*p->score;
    printf(“%f\n”,t.score);
    }
    26.下列指令組,要完成當(dāng)(A)≤80H時(shí),轉(zhuǎn)去執(zhí)行2800H開始的程序,當(dāng)(A)>80H時(shí),執(zhí)行3700H開始的程序。請(qǐng)找出錯(cuò)誤,并改正之。
    CJNE A, #80H, NEXT
    TEN: LJMP?2800H
    NEXT: JNC?TEN
    LJMP 3700H
    27.下列子程序欲將累加器A中的原碼表示的8位帶符號(hào)二進(jìn)制數(shù)變?yōu)檠a(bǔ)碼形式仍存于A中。
    請(qǐng)找出錯(cuò)誤,并改正之。
    COPL: JNB?ACC.7, DONE
    CPL?A
    INC?A
    ORL?A,#80H
    DONE: SJMP DONE
    三、填空題(本大題共15小題,每小題2分,共30分。)
    請(qǐng)?jiān)诿啃☆}的空格中填上正確答案。錯(cuò)填、不填均無分。
    28.以下程序的功能是在輸入的一組正整數(shù)中找出其中的者,若輸入的數(shù)值為0,程序結(jié)束。
    main()
    {int a,max=0;
    scanf(“%d”
    while(a)
    {if(________)max=a;
    scanf(“%d”,}
    printf(“%d”,max);
    }
    29.以下程序是計(jì)算s=1*2*3*4*5的值
    main()
    { int k,s=1;
    for(k=1;_______;k++)
    s=s*k;
    printf(“s=%d\n”,s);
    }
    30.下列程序的功能是:若數(shù)組元素的值為偶數(shù)則置0,奇數(shù)保持不變。
    main()
    {int ad,i;
    for(i=0;i0)return n*f(n-1);
    else return 1;
    }
    main()
    { int k;
    k=f(5);
    printf(“k=f(5)=%d\n”,k);
    }
    程序運(yùn)行結(jié)果是:
    45.閱讀下列程序,說明程序的功能
    MOV DPL, #00H
    MOV R1, #20H
    MOV R2, #30H
    MOV R0, #50
    LOOP: MOV DPH, R1
    MOVX A, @DPTR
    MOV DPH, R2
    MOVX @DPTR, A
    INC DPTR
    DJNZ R0, LOOP
    HERE: SJMP HERE
    46.見右圖,通過8031單片機(jī)的P1口接8只發(fā)光二極管,為L(zhǎng)1~L8.
    讀如下程序后回答問題
    ORG 0000H?
    LJMP 0200H
    ORG 0200H
    START: MOV A, #80H
    LOOP: MOV P1, A
    LCALL D2S;調(diào)用延時(shí)2秒子程序
    RR A; A循環(huán)右移一位
    SJMP LOOP
    D2S: ……; 子程序略
    RET
    END
    (1)第一次調(diào)用子程序時(shí),哪個(gè)發(fā)光二極管亮?
    (2)第二次調(diào)用子程序時(shí),哪個(gè)發(fā)光二極管亮?
    (3)第八次調(diào)用子程序時(shí),哪個(gè)發(fā)光二極管亮?
    (4)第九次調(diào)用子程序時(shí),哪個(gè)發(fā)光二極管亮?
    五、程序設(shè)計(jì)題(本大題共2小題,第47小題7分,第48小題6分,共13分)
    47.已知數(shù)組a中的元素是從小到大排序的,要求對(duì)于任意輸入的一個(gè)整數(shù)x,把它插到數(shù)組a后,仍保持?jǐn)?shù)組a的排序次序不變。
    # include“stdio.h”
    main()
    {
    int ae,i,x,k;
    for (i=0;i