計(jì)算機(jī)等級考試二級C語言考前密卷(7)

字號:

(1)最簡單的交換排序方法是
    A)快速排序
     B)選擇排序
    C)堆排序
     D)冒泡排序
    (2)棧通常采用的兩種存儲結(jié)構(gòu)是
    A)線性存儲結(jié)構(gòu)和鏈表存儲結(jié)構(gòu)
    B)散列方式和索引方式
    C)鏈表存儲結(jié)構(gòu)和數(shù)組
    D)線性存儲結(jié)構(gòu)和非線性存儲結(jié)構(gòu)
    (3)線性表的順序存儲結(jié)構(gòu)和線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)分別是
    A)順序存取的存儲結(jié)構(gòu)、順序存取的存儲結(jié)構(gòu)
    B)隨機(jī)存取的存儲結(jié)構(gòu)、順序存取的存儲結(jié)構(gòu)
    C)隨機(jī)存取的存儲結(jié)構(gòu)、隨機(jī)存取的存儲結(jié)構(gòu)
    D)任意存取的存儲結(jié)構(gòu)、任意存取的存儲結(jié)構(gòu)
    (4)完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征,而只是根據(jù)程序功能導(dǎo)出測試用例的測試方法是
    A)黑箱測試法 B)白箱測試法
    C)錯(cuò)誤推測法 D)安裝測試法
    (5)在結(jié)構(gòu)化設(shè)計(jì)方法中,生成的結(jié)構(gòu)圖(SC)中,帶有箭頭的連線表示
    A)模塊之間的調(diào)用關(guān)系 B)程序的組成成分
    C)控制程序的執(zhí)行順序 D)數(shù)據(jù)的流向
    (6)下列選項(xiàng)中,不屬于模塊間耦合的是
    A)數(shù)據(jù)耦合 B)同構(gòu)耦合
    C)異構(gòu)耦合 D)公用耦合
    (7)一個(gè)關(guān)系中屬性個(gè)數(shù)為1時(shí),稱此關(guān)系為
    A)對應(yīng)關(guān)系 B)單一關(guān)系
    C)一元關(guān)系 D)二元關(guān)系
    (8)為用戶與數(shù)據(jù)庫系統(tǒng)提供接口的語言是
    A)高級語言
     B)數(shù)據(jù)描述語言(DDL)
    C)數(shù)據(jù)操縱語言(DML)
     D)匯編語言
    (9)相對于數(shù)據(jù)庫系統(tǒng),文件系統(tǒng)的主要缺陷有數(shù)據(jù)關(guān)聯(lián)差、數(shù)據(jù)不一致性和
    A)可重用性差 B)安全性差
    C)非持久性 D)冗余性
    (10)需求分析階段的任務(wù)是確定
    A)軟件開發(fā)方法 B)軟件開發(fā)工具
    C)軟件開發(fā)費(fèi)用 D)軟件系統(tǒng)功能
    (11)下列關(guān)于C語言的說法不正確的是
    A)C語言既具有高級語言的一切功能,也具有低級語言的一些功能
    B)C語言中的每一條執(zhí)行語句都必須用分號結(jié)束,分號不是C語言的一部分,是語句之間的分隔符號
    C)注釋可以出現(xiàn)在程序中任意合適的地方
    D)命令行后面不能加分號,命令行不是C語言的語句
    (12)下列關(guān)于標(biāo)識符的說法中錯(cuò)誤的是
    A)合法的標(biāo)識符是由字母、數(shù)字和下劃線組成
    B)C語言的標(biāo)識符中,大寫字母和小寫字母被認(rèn)為是兩個(gè)不同的字符
    C)C語言的標(biāo)識符可以分為三類,即關(guān)鍵字、預(yù)定義標(biāo)識符和用戶標(biāo)識符
    D)用戶標(biāo)識符與關(guān)鍵字不同時(shí),程序在執(zhí)行時(shí)將給出出錯(cuò)信息
    (13)下列合法的整型常量的表示是
    A)098
    B)oXde
    C)32767
    D)0xDG
    (14)現(xiàn)在有以下定義,int a;double b;float c;char k;則下面的表達(dá)式a/b+c-k值的類型為:
    A)int
    B)double
    C)float
    D)char
    (15)假設(shè)整型變量a,b,c的值均為5,則表達(dá)式a+++b+++c++的值為
    A)17
    B)16
    C)15
    D)14
    (16)下列關(guān)于復(fù)合語句和空語句的說法錯(cuò)誤的是
    A)復(fù)合語句是由“{”開頭,由“}”結(jié)尾的
    B)復(fù)合語句在語法上視為一條語句
    C)復(fù)合語句內(nèi),可以有執(zhí)行語句,不可以有定義語句部分
    D)C程序中的所有語句都必須由一個(gè)分號作為結(jié)束
    (17)關(guān)于printf()函數(shù)的返回值敘述正確的是
    A)通常是本次調(diào)用中輸出字符的個(gè)數(shù)
    B)通常是輸出的第一個(gè)數(shù)值
    C)通常返回布爾值真
    D)通常返回非零值
    (18)現(xiàn)有格式化輸入語句,scanf("x=%dц,sumцy=%d,lineцz=%dL",&x,&y,&z);,現(xiàn)在已知在輸入數(shù)據(jù)后,x,y,z的值分別是12,34,45,則下列數(shù)據(jù)是正確的輸入格式的是
    A)12,34,45
    B)x=12,y=34,z=45
    C)x=12C,sumy=34,z=45
    D)x=12],sum]y=34,line]z=45
     [注]:“ц”表示空格, 表示回車
    (19)設(shè)x,y,z,t均為整型變量,現(xiàn)有如下語句x=y=z=1;t=++x||++y&&++z;則執(zhí)行這個(gè)語句后t的值為
    A)2
    B)1
    C)0
    D)不定值
    (20)現(xiàn)有如下程序段,此程序段編譯有錯(cuò)誤,則程序段的錯(cuò)誤出在
    #include
    main()
    { int a=30,b=40,c=50,d;
     d=a>30?b:c;
    switch(d){case a:printf("%d,",a);
    case b:printf("%d,",b);
    case c:printf("%d,",c);
    default:printf("#");}}
    A)default:printf("#");這個(gè)語句
    B)d=a>30?b:c;這個(gè)語句
    C)case a:printf("%d,",a); case b:printf("%d,",b); case c:printf("%d,",c);這三個(gè)語句
    D)switch(d)這個(gè)語句
    (21)下列語句中,錯(cuò)誤的是(x,y,a,b假設(shè)已經(jīng)定義好)
    A)while(x=y)5;
    B)do x++ while(x==10);
    C)while(0);
    D)do 2;while(a==b);
    (22)若i,j已經(jīng)定義為整型,則以下程序段中,內(nèi)循環(huán)體的執(zhí)行次數(shù)是
    for(i=6;i;i--)
     for(j=0;j<5;j++){……}
    A)40
    B)35
    C)30
    D)25
    (23)下列說法中錯(cuò)誤的是
    A)只能在循環(huán)體內(nèi)使用break語句
    B)在循環(huán)體內(nèi)使用break語句可以使流程跳出本層循環(huán)體,從而提前結(jié)束本層循環(huán)
    C)在while和do…while循環(huán)中,continue語句并沒有使整個(gè)循環(huán)終止
    D)continue的作用是結(jié)束本次循環(huán),即跳過本次循環(huán)體中余下尚未執(zhí)行的語句,接著再一次進(jìn)行循環(huán)判斷
    (24)閱讀如下程序段
    #include "stdio.h"
    main()
    { int x,a,b;
    scanf("%d",&x);
    a=b=x;
    for(;x!=0;)
    { if(x  if(x>a)a=x;
    scanf("%d",&x);}
    printf("a=%d,b=%d\n",a,b);}
    現(xiàn)輸入如下。[注] :′ц′表示空格
    34ц56ц23ц45ц5ц56ц7ц12ц365ц49ц48ц57ц87ц7ц6ц7569ц789ц0
    輸入后輸出結(jié)果是
    A)a=7569,b=789
    B)a=5,b=365
    C)a=7,b=789
    D)a=7569,b=5
    (25)下面關(guān)于字符常量的說法錯(cuò)誤的是
    A)一個(gè)字符常量代表ASCII字符集中的一個(gè)字符
    B)單引號中的大寫字母和小寫字母代表不同的字符常量
    C)字符常量只能包含一個(gè)字符
    D)字符常量可以用單引號或雙引號括起來(26)現(xiàn)有如下程序
    #include "stdio.h"
    int fun(int x)
    {printf("x=%d\n",++x);}
    main()
    {fun(12+5);}
    則程序的輸出結(jié)果是
    A)12
    B)13
    C)17
    D)18
    (27)現(xiàn)有如下程序段
    #include "stdio.h"
    int aa(int x,int y);
    main()
    {int a=24,b=16,c;
    c=aa(a,b);
    printf("%d\n",c);}
    int aa(int x,int y)
    {int w;
    while(y)
    {w=x%y;
    x=y;
    y=w;}
    return x;}
    則程序段的輸出結(jié)果是
    A)8
    B)7
    C)6
    D)5
    (28)下列說法錯(cuò)誤的是
    A)函數(shù)調(diào)用時(shí),函數(shù)名必須與所調(diào)用的函數(shù)名字完全相同
    B)實(shí)參的個(gè)數(shù)必須與形式參數(shù)的個(gè)數(shù)一致
    C)實(shí)參可以是表達(dá)式,在類型上必須與形參一一對應(yīng)匹配
    D)C語言規(guī)定,函數(shù)必須先定義,后調(diào)用(函數(shù)的返回值類型為int或char時(shí)除外)
    (29)函數(shù)的值通過return語句返回,下面關(guān)于return語句的形式描述錯(cuò)誤的是
    A)return表達(dá)式;
    B)return(表達(dá)式);
    C)一個(gè)return語句可以返回多個(gè)函數(shù)值
    D)一個(gè)return語句只能返回一個(gè)函數(shù)值
    (30)現(xiàn)有如下定義:int a,b,*p,*q;,則下列賦值語句錯(cuò)誤的是
    A)p=&a;
    B)q=&b;
    C)p=q;
    D)p=a;
    (31)現(xiàn)有如下程序段
    #include "stdio.h"
    int *fun(int *a,int *b)
    {int c;
    c=*a%*b;
    return &c;}
    main()
    {int a=5,b=19,*c;
    c=fun(&a,&b);
    printf("%d\n",++*c);}
    則程序段執(zhí)行后的結(jié)果為
    A)8
    B)7
    C)6
    D)5
    (32)現(xiàn)有int a,*b;,b=&a;,則下列運(yùn)算錯(cuò)誤的是
    A)*&a
    B)&*a
    C)*&b
    D)&*b
    (33)現(xiàn)有如下程序段
    #include "stdio.h"
    main()
    { int k[30]={12,324,45,6,768,98,21,34,453,456};
    int count=0,i=0;
    while(k[i])
    { if(k[i]%2==0‖k[i]%5==0)count++;
     i++; }
    printf("%d,%d\n",count,i);}
    則程序段的輸出結(jié)果為
    A)7,8
    B)8,8
    C)7,10
    D)8,10
    (34)現(xiàn)有如下定義語句
    int*p,s[20],i;
    p=s;
    表示數(shù)組元素s[i]的表達(dá)式不正確的是
    A)*(s+i)
    B)*(p+i)
    C)*(s=s+i)
    D)*(p=p+i)
    (35)閱讀如下程序段,這個(gè)程序在編譯的時(shí)候會有一個(gè)警告,下列關(guān)于這個(gè)警告敘述正確的是
     #include "stdio.h"
    #define N 10
    int *fun(int a[N],int n)
    { int i,b[N];
    for(i=0;i  b[i]=a[i];
    return(b);}
    main()
    { int a[N]={12,34,45,5,6,34,4,655,2};
    int *k;
    k=fun(a[N],5);
    printf("%d\n",*k);}
    A)指針k沒有指向任何對象而成為“無向指針”,所以這里會產(chǎn)生警告
    B)return語句不應(yīng)該有括號,所以在這里會有警告
    C)return語句的返回值類型與指針k的基類型不一致,這里會產(chǎn)生警告
    D)數(shù)組賦值的時(shí)候沒有把數(shù)組全部都賦初值,所以在這里會有警告
    (36)有如下定義語句:int aa[][3]={12,23,34,4,5,6,78,89,45};,則45在數(shù)組aa中的行列坐標(biāo)各為
    A)3,2
    B)3,1
    C)2,2
    D)2,1
    (37)現(xiàn)有如下程序段
    #include "stdio.h"
    main()
    {int a[5][6]={23,3,65,21,6,78,28,5,67,25,435,76,8,22,45,7,8,34,6,78,32,4,5,67,4,21,1};
    int i=0,j=5;
    printf("%d\n",*(&a[0][0]+2*i+j-2));}
    則程序的輸出結(jié)果為
    A)21
    B)78
    C)23
    D)28
    (38)下列程序的輸出結(jié)果是
    #include "stdio.h"
    #define N 3
    #define M 3
    void fun(int a[M][N])
    {printf("%d\n",*(a[1]+2));}
    main()
    {int a[M][N];
    int i,j;
    for(i=0;i  for(j=0;j  a[i][j]=i+j-(i-j);
    fun(a);}
    A)3
    B)4
    C)5
    D)6
    (39)下列關(guān)于字符串的說法中錯(cuò)誤的是
    A)在C語言中,字符串是借助于字符型一維數(shù)組來存放的,并規(guī)定以字符′\0′作為字符串結(jié)束標(biāo)志
    B)′\0′作為標(biāo)志占用存儲空間,計(jì)入串的實(shí)際長度
    C)在表示字符串常量的時(shí)候不需要人為在其末尾加入′\0′
    D)在C語言中,字符串常量隱含處理成以′\0′結(jié)尾
    (40)有下面程序段
     #include "stdio.h"
    #include "string.h"
    main()
    {char a[3][20]={{"china"},{"isa"},{"bigcountry!"}};
    char k[100]={0},*p=k;
    int i;
    for(i=0;i<3;i++)
    { p=strcat(p,a[i]);}
    i=strlen(p);
    printf("%d\n",i);}
    則程序段的輸出結(jié)果是
    A)18
    B)19
    C)20
    D)21
    (41)現(xiàn)有如下程序段
    #include "stdio.h"
    #include "string.h"
    main()
    {char a[]="acfijk";/*這里是有序的字符序列*/
    char b[]="befijklqswz";/*這里是有序的字符序列*/
    char c[80],*p;
    int i=0,j=0,k=0;
    while(a[i]!=′\0′ && b[j]!=′\0′)
    {if(a[i]  else if(a[i]>b[j])c[k++]=b[j++];
    else {c[k++]=b[j++];
    i++;}}
    while(a[i]==′\0′ && b[j]!=′\0′)
     c[k++]=b[j++];
    while(a[i]!=′\0′ && b[j]==′\0′)
    c[k++]=a[i++];
    c[k]=′\0′;
    puts(c);}
     則輸出結(jié)果是
    A)acfijkbefijklqswz
    B)abceffiijjkklqswz
    C)befijklqswz acfijk
    D)abcefijklqswz
    (42)現(xiàn)在有如下程序
    #include "stdio.h"
    main()
    {char s[80];
    int i,j;
    gets(s);
    for(i=j=0;s[i]!=′\0′;i++)
    if(s[i]!=′H′______)
    s[j]=′\0′;
    puts(s);}
    這個(gè)程序段的功能是刪除輸入的字符串中字符′H′,則空線上應(yīng)當(dāng)添入的是
    A)s[j++]=s[i];j++;
    B)s[j]=s[i++];j++;
    C)s[j++]=s[i];
    D)s[j]=s[i];
    (43)下列說法中錯(cuò)誤的是
    A)靜態(tài)局部變量的初值是在編譯時(shí)賦予的,在程序執(zhí)行期間不再賦予初值
    B)若全局變量和某一函數(shù)中的局部變量同名,則在該函數(shù)中,此全局變量被屏蔽
    C)靜態(tài)全局變量可以被其他的編輯單位所引用
    D)所有自動類局部變量的存儲單元都是在進(jìn)入這些局部變量所在的函數(shù)體(或復(fù)合語
    句)時(shí)生成,退出其所在的函數(shù)體(或復(fù)合語句)時(shí)消失
    (44)閱讀下列程序段,則程序的輸出結(jié)果為
    #include "stdio.h"
    #define M(X,Y)(X)*(Y)
    #define N(X,Y)(X)/(Y)
    main()
    {int a=5,b=6,c=8,k;
    k=N(M(a,b),c);
    printf("%d\n",k);}
    A)3
    B)5
    C)6
    D)8
    (45)若有以下定義和語句
    struct a
    { int n,m;};
    struct a st[3]={{1,20},{2,19},{3,21}};
    struct a *p=st;
    則以下錯(cuò)誤的引用是
    A)(p++)->n;
    B)st[0].n;
    C)(*p).n;
    D)p=&st.m;
    (46)假設(shè)有如下定義:struct a{int n;float k;}data,*p;若要使p指向data中的成員n,正確的賦值語句是
    A)p=&data.n;
    B)*p=data.n;
    C)p=(struct a *)&data.n;
    D)p=(struct a *)data.n;
    (47)下面函數(shù)的功能是將指針t2所指向的線性鏈表,鏈接到t1所指向的鏈表的末端。假定t1所指向的鏈表非空
    struct node{ float x;struct node *next;};
    connect(struct node *t1, struct node *t2)
    { if(t1->next==NULL)t1->next=t2;
     else connect(______ ,t2); }
    要實(shí)現(xiàn)此功能則應(yīng)該添入的選項(xiàng)是
    A)t1.next
    B)++t1.next
    C)t1->next
    D)++t1->next
    (48)C語言結(jié)構(gòu)體類型變量在程序運(yùn)行期間
    A)TC環(huán)境在內(nèi)存中僅僅開辟一個(gè)存放結(jié)構(gòu)體變量地址的單元
    B)所有的成員一直駐留在內(nèi)存中
    C)只有最開始的成員駐留在內(nèi)存中
    D)部分成員駐留在內(nèi)存中
    (49)有下列運(yùn)算符:~,&,<<,>>, |,^,則運(yùn)算的優(yōu)先順序是
    A)~,&, |,<<,>>,^
    B)~,<<,>>,&, |,^
    C)~,<<,>>,^, &,|
    D)~,<<,>>,&,^, |
    (50)最簡單的交換排序方法是
    A)快速排序 B)選擇排序
    C)堆排序 D)冒泡排序二、填空題
    (1)棧和隊(duì)列通常采用的存儲結(jié)構(gòu)是 【1】 。
    【命題目的】考查考生對數(shù)據(jù)結(jié)構(gòu)基本知識的了解。
    【解題要點(diǎn)】棧和隊(duì)列都屬于線性表,它們一般采用順序存儲結(jié)構(gòu),也可以對它們采用鏈?zhǔn)酱鎯Y(jié)構(gòu)。
     【考點(diǎn)鏈接】棧、數(shù)組、表采用的存儲結(jié)構(gòu),各種存儲結(jié)構(gòu)的定義和區(qū)別。
    (2)在程序設(shè)計(jì)階段應(yīng)該采取 【2】 和逐步求精的方法,把一個(gè)模塊的功能逐步分解,細(xì)化為一系列具體的步驟,進(jìn)而用某種程序設(shè)計(jì)語言寫成程序。
    【命題目的】讓考生對程序設(shè)計(jì)有較深入的了解。
    【考點(diǎn)鏈接】系統(tǒng)設(shè)計(jì)其他階段的內(nèi)容。
    (3)軟件結(jié)構(gòu)是以 【3】 為基礎(chǔ)而組成的一種控制層次結(jié)構(gòu)。
    【命題目的】考查考生對軟件結(jié)構(gòu)的了解。
    【解題要點(diǎn)】采用模塊化原理可以使軟件結(jié)構(gòu)清晰,不僅容易設(shè)計(jì)也容易閱讀和理解,模塊化使得軟件容易測試和調(diào)試,因而有利于提高軟件的可靠性,也有利于軟件的組織管理,大型程序可由不同的程序員編寫不同的模塊,并且可以進(jìn)一步分配技術(shù)熟練的程序員編寫困難的部分。
    【考點(diǎn)鏈接】軟件結(jié)構(gòu)的定義,模塊操作其他的所有特點(diǎn)。
    (4)數(shù)據(jù)庫系統(tǒng)階段的數(shù)據(jù)具有較高獨(dú)立性,數(shù)據(jù)獨(dú)立性包括物理獨(dú)立性和 【4】 兩個(gè)含義。
    【命題目的】考查考生對數(shù)據(jù)庫基本知識(數(shù)據(jù)獨(dú)立性)的了解。
    【解題要點(diǎn)】數(shù)據(jù)獨(dú)立性是數(shù)據(jù)與程序間的互不依賴性,即數(shù)據(jù)庫中數(shù)據(jù)獨(dú)立于應(yīng)用程序而不依賴于應(yīng)用程序。數(shù)據(jù)獨(dú)立性一般分為物理獨(dú)立性與邏輯獨(dú)立性兩個(gè)含義。
     【考點(diǎn)鏈接】在人工管理階段,文件系統(tǒng)階段和數(shù)據(jù)庫管理階段中數(shù)據(jù)獨(dú)立性的特點(diǎn)。
    (5)數(shù)據(jù)庫保護(hù)分為:安全性控制、 【5】 、并發(fā)性控制和數(shù)據(jù)的恢復(fù)。
    【命題目的】考查考生對數(shù)據(jù)庫基本知識的了解。
    【解題要點(diǎn)】安全性控制:防止未經(jīng)授權(quán)的用戶有意或無意存取數(shù)據(jù)庫中的數(shù)據(jù),以免數(shù)據(jù)被泄露、更改或破壞;完整性控制:保證數(shù)據(jù)庫中數(shù)據(jù)及語義的正確性和有效性,防止任何對數(shù)據(jù)造成錯(cuò)誤的操作;并發(fā)控制:正確處理好多用戶、多任務(wù)環(huán)境下的并發(fā)操作,防止錯(cuò)誤發(fā)生;恢復(fù):當(dāng)數(shù)據(jù)庫被破壞或數(shù)據(jù)不正確時(shí),使數(shù)據(jù)庫能恢復(fù)到正確的狀態(tài)。
    【考點(diǎn)鏈接】數(shù)據(jù)庫的其他用途,如數(shù)據(jù)定義、數(shù)據(jù)操作和數(shù)據(jù)管理等。
    (6)語句printf("%f\n",13.0*(1/5));的輸出結(jié)果為 【6】 。
    【命題目的】考查對于基本運(yùn)算符的掌握情況。
    【解題要點(diǎn)】/表示整除,1/5為0,0乘以任何數(shù)都得零,但是與浮點(diǎn)型相乘,要轉(zhuǎn)化為浮點(diǎn)型,所以結(jié)果為0.000000。
    【考點(diǎn)鏈接】在一個(gè)運(yùn)算符的兩邊如果一個(gè)是字符型,一個(gè)是整型,則把字符型轉(zhuǎn)換為整型之后再進(jìn)行運(yùn)算。
    (7)閱讀下面語句,則程序的執(zhí)行結(jié)果是 【7】 。
    #include "stdio.h"
    main()
    { int a=-1,b=1,k;
     if((++a<0)&&!(b--<=0))
    printf("%d,%d\n",a,b);
     else printf("%d,%d\n",b,a);}
    【命題目的】考查對于if語句的掌握情況。
    【解題要點(diǎn)】與運(yùn)算兩邊的語句必須同時(shí)為真時(shí),結(jié)果才為真,當(dāng)執(zhí)行完if((++a<0)&&!(b--<=0))時(shí),a,b的值已經(jīng)發(fā)生了變化。
    【考點(diǎn)鏈接】++,--運(yùn)算符。
    (8)閱讀下面語句,則執(zhí)行后的輸出結(jié)果為 【8】
     #include "stdio.h"
    main()
    {char a,b;
     for(a=′0′,b=′9′;a printf("%c%c",a,b);
    printf("\n");}
    【命題目的】考查對于for循環(huán)的掌握情況。
    【解題要點(diǎn)】for是C語言的關(guān)鍵字,其后的一對圓括號中通常含有三個(gè)表達(dá)式,各個(gè)表達(dá)式之間用分號隔開,這三個(gè)表達(dá)式可以是任意形式的表達(dá)式,通常主要用于for循環(huán)控制。
    【考點(diǎn)鏈接】對字符型的運(yùn)算實(shí)際上是對其ASCII碼值的運(yùn)算。
    (9)閱讀下面程序,則執(zhí)行后程序的結(jié)果為 【9】
    #include "stdio.h"
    main()
    { int a=0,b=0;
     while(a<15)a++;
     while(b++<15);
     printf("%d,%d\n",a,b);}
    【命題目的】考查對于while循環(huán)的掌握情況。
    【解題要點(diǎn)】while是C語言的關(guān)鍵字,while后一對圓括號中的表達(dá)式,可以是C語言中任意合法的表達(dá)式,由它來控制循環(huán)體是否執(zhí)行。
    【考點(diǎn)鏈接】在語法上要求循環(huán)體可以是一條簡單可執(zhí)行語句,并且還要注意循環(huán)控制表達(dá)式的判斷條件。
    (10)在使用putchar和getchar函數(shù)處理字符時(shí),必須在程序的開頭出現(xiàn)包含頭文件的命令行是 【10】 。
    【命題目的】考查對于基礎(chǔ)知識的掌握情況。
    【解題要點(diǎn)】使用putchar和getchar函數(shù)時(shí),必須在程序的開頭出現(xiàn)包含頭文件#include "stdio.h"的命令行。
    【考點(diǎn)鏈接】putchar的函數(shù)調(diào)用形式為:putchar(字符變量或字符常量);getchar函數(shù)的調(diào)用形式為:變量=getchar();getchar后的一對圓括號內(nèi)沒有參數(shù),但這一對圓括號不可少。
    (11)下列程序的輸出結(jié)果是 【11】 , 【12】 。
     #include
    main()
    { float a=-1.3;b=1.3;
     printf("%f,%f",fabs(a),fabs(b);}
    【命題目的】主要考查math庫函數(shù)。
    【解題要點(diǎn)】本題是求浮點(diǎn)數(shù)的絕對值。
    【考點(diǎn)鏈接】常用的math函數(shù)。
    (12)設(shè)有以下定義和語句,則*(*(p+2)+1)的值為 【13】 。
    int a[3][2]={10,20,30,40,50,60},(*p)[2];
    p=a;
    【命題目的】主要考查對于通過建立行指針來引用二維數(shù)組元素的掌握情況。
    【解題要點(diǎn)】*(*(p+2)+1)相當(dāng)于訪問的是a[2][1]的值。
    【考點(diǎn)鏈接】*(p[2]+1)、p[2][1]以及(*(p+2))[1]表達(dá)的含義都是a[2][1]的值。
    (13)有下列程序,功能是把輸入的十進(jìn)制長整型數(shù)以十六進(jìn)制的形式輸出,完成程序
     #include "stdio.h"
    main()
    {char b[17]={"0123456789ABCDEF"};
    int c[50],d,i=0,base=16;
    long n;
    scanf("%ld",&n);
    do{c[i]=nºse;i++;n= 【14】 ;}
    while(n!=0);
    for(--i;i>=0;--i)
     {d= 【15】 ;printf("%c",b[d]);}
    printf("H\n");}
    【命題目的】考查字符串的實(shí)際運(yùn)用的理解程度。
    【解題要點(diǎn)】字符串的綜合運(yùn)用。
    【考點(diǎn)鏈接】這是一種常用的十進(jìn)制轉(zhuǎn)換成十六進(jìn)制的方法,應(yīng)該掌握。
    (14)現(xiàn)有如下程序段,則程序段的輸出結(jié)果為 【16】 。
    #include "stdio.h"
    int fun()
    {static int k;
    return k;}
    main()
    {int m;
    m=fun();
    printf("%d\n",m);}
    【命題目的】考查對于靜態(tài)存儲類的局部變量的掌握情況。
    【解題要點(diǎn)】在整個(gè)程序運(yùn)行期間,靜態(tài)局部變量在內(nèi)存的靜態(tài)存儲區(qū)中占據(jù)著永久性的存儲單元。即使退出函數(shù)以后,下次再進(jìn)入函數(shù)時(shí),靜態(tài)局部變量仍使用原來的存儲單元,如未賦初值,則系統(tǒng)會自動賦值為0。
    【考點(diǎn)鏈接】C語言中,有兩種存儲類別:一種是自動類;一種是靜態(tài)類。局部變量既可以說明成自動類型;也可以說明成靜態(tài)類型;而全局變量只能是靜態(tài)類型。
    (15)現(xiàn)有如下定義:struct aa{int a;float b;char c;}*p;現(xiàn)需用malloc函數(shù)動態(tài)的申請一個(gè)struct aa類型大小的空間(由p指向),則定義的語句為: 【17】 。
    【命題目的】考查對于動態(tài)空間申請函數(shù)的掌握情況。
    【解題要點(diǎn)】ANSI C標(biāo)準(zhǔn)規(guī)定malloc函數(shù)的返回值類型為void *,函數(shù)的調(diào)用形式為:malloc(size)要求size的類型為unsigned int。由于返回類型為void *,所以在調(diào)用函數(shù)時(shí),必須利用強(qiáng)制轉(zhuǎn)換將其轉(zhuǎn)換為所需要的類型。
    【考點(diǎn)鏈接】free函數(shù)的作用是釋放申請的內(nèi)存空間。
    (16)有如圖所示的雙鏈表結(jié)構(gòu),請根據(jù)圖示完成結(jié)構(gòu)體的定義:
    
    { int data;
     【18】 } node;
    【命題目的】考查對于結(jié)構(gòu)體對鏈表的定義掌握情況。
    【解題要點(diǎn)】結(jié)構(gòu)體對鏈表的定義。
    (17)當(dāng)調(diào)函數(shù)frend從磁盤文件中讀取數(shù)據(jù)時(shí),若函數(shù)數(shù)的返回時(shí)為5,則表明 【19】 ;若函數(shù)的返回值為0,則表明 【20】 。【命題目的】考查對于函數(shù)基本操作的掌握情況。
    【解題要點(diǎn)】fread函數(shù)的調(diào)用形式為fread(buffer,size,cout,fp);其中buffer是數(shù)據(jù)塊的指針,size表示每個(gè)數(shù)據(jù)塊的字節(jié)數(shù)。count用來指定每讀、寫一次,輸入\輸出數(shù)據(jù)塊的個(gè)數(shù)(每個(gè)數(shù)據(jù)塊有size個(gè)字節(jié))。fp是文件的指針。