計(jì)算機(jī)等級(jí)二級(jí)C語言實(shí)例解答

字號(hào):

C語言牽涉的概念比較復(fù)雜,規(guī)范繁多,使用靈活,容易出錯(cuò),不少初學(xué)者感到困難,下面通過幾個(gè)實(shí)例的分析來說明c語言學(xué)習(xí)中容易混淆的幾個(gè)問題,以期拋磚引玉,對(duì)初學(xué)者有所幫助。
    問題1:下面的程序
    int a=3,b=4;
    char str=’c’;
    printf(“%d,%d”,a,b,str);
    執(zhí)行后, 輸出結(jié)果為:
    (A)3,4,c (B)3 4 c
    (C)3,4 (D)程序出錯(cuò)
    分析:在格式輸出時(shí)一般要求格式說明符與輸出項(xiàng)相一致,當(dāng)輸出項(xiàng)多余格式說明符時(shí)多余的輸出項(xiàng)不輸出,所以答案為C。
    問題2:有下面的程序段
    char a[3],b[]=“china”;
    a=b;
    printf(“%s”,a);
    則輸出結(jié)果為:
    (A)運(yùn)行后輸出china (B)運(yùn)行后輸出ch (C) 運(yùn)行后輸出chi (D)編譯出錯(cuò)
    分析:這個(gè)題容易錯(cuò)選a實(shí)際答案為d,由于定義了字符數(shù)組后,數(shù)組名作為數(shù)組的首地址,是一個(gè)常量,給一個(gè)常量賦值的語句是錯(cuò)誤的,換句話說,不能用賦值語句將一個(gè)字符常量或字符數(shù)組直接賦值給一個(gè)字符數(shù)組,以答案選D。
    問題3:下列說明不正確的是:
    (A)char a[10]=“china” (B)char a[10],p=a;p=“china” (C)char p;p=“china”(D)char a[10],p;p=a=“china”;
    分析:此題易知A是正確的,D是錯(cuò)誤的,對(duì)于B、C就很難選擇了。有人認(rèn)為p是一個(gè)字符變量,以為把”china”賦給該字符變量是不對(duì)的,實(shí)際上它是一個(gè)指針變量,只能指向一個(gè)字符變量或其他字符類型數(shù)據(jù),不是把”china”存放到p中(指針變量只存放地址),只是把 “china”的首地址賦給指針變量 p,所以B,C也是正確的。
    問題4:下面的程序執(zhí)行結(jié)果是:
    main()
    {int x[5]={2,4,6,8,10},ppp;
    p=x;
    pp=&&p;
    printf(“%d”,(p++));
    printf(“%d\n”,pp);
    }
    (A)4 4 (B)2 4
    (C)2 2 (D)4 6
    分析:在此題中p++是后加方式,先輸出p的值,p再自加,pp是二級(jí)指針,指向一級(jí)指針p,執(zhí)行第一條輸出語句前后,存在下列指向關(guān)系:
    所以本題應(yīng)選b
    問題5:下列輸出語句執(zhí)行后結(jié)果為:
    int i=3;
    printf(“%d”,-i++);
    (A)3 (B)4
    (C)-3 (D)-4
    分析:此題考查運(yùn)算符的優(yōu)先級(jí),負(fù)號(hào)運(yùn)算符和++運(yùn)算符同優(yōu)先級(jí),而結(jié)合方向?yàn)椤白宰笾劣摇?,即-i++相當(dāng)于-i++ ,所以先取出i的值3,輸出-i的值-3,然后i增值為4,而不是i先增值為4,然后輸出-4,所以答案選擇C。
    問題6:設(shè)有以下語句,
    struct st
    {int n;
    struct st next;
    };
    static struct st a[3]={5,&&a[1],7,&&a[2],9,’\0’},p;
    則以下表達(dá)式的值為6的是:
    (A)p++→n (B)p→n++
    (C)(p).n++ (D)++p→n
    分析:此題也是考查運(yùn)算符的優(yōu)先級(jí),→優(yōu)先級(jí)高于++,結(jié)合方向?yàn)樽宰笾劣?,而后者結(jié)合方向?yàn)樽杂抑磷?,A答案相當(dāng)于p++ →n
    B答案相當(dāng)于p→n?。熕訟、B、C表達(dá)式值均為5,D答案相當(dāng)于++p→n 自加方式為前加方式,所以其值為6。
    上面是我在教學(xué)過程中學(xué)生一些比較集中的問題,只要認(rèn)真的體會(huì)和總結(jié),加強(qiáng)上機(jī)實(shí)踐,對(duì)自己C語言的學(xué)習(xí)會(huì)大有裨益。