亚洲AV乱码一区二区三区女同,欧洲在线免费高清在线a,中文字幕丝袜四区,老少配老妇熟女中文高清

<s id="38axe"><nobr id="38axe"></nobr></s><abbr id="38axe"><u id="38axe"></u></abbr>

<sup id="38axe"></sup>
    <acronym id="38axe"></acronym>
  • <s id="38axe"><abbr id="38axe"><ins id="38axe"></ins></abbr></s>
    
    
        <s id="38axe"></s>
        違法信息舉報 客服熱線:400-118-7898
        廣告
        ?
        專接本欄目測試廣告

        ?2022年湖北專升本C語言程序設計模擬題(3)

        普通專升本 責任編輯:管理員 2021-12-10

        摘要:本文是2022年湖北專升本C語言程序設計模擬題(3),有打算報考湖北2022年專升本需要考核C語言程序設計的考生可以收藏下來參考一下。下面是具體內容。

        第七章 函數(shù)

        7.1 選擇題

        *7.1建立函數(shù)的目的之一,以下正確的說法是 。

        A)提高程序的執(zhí)行效率 B)提高程序的可讀性

        C)減少程序的篇幅 D)減少程序文件所占內存

        參考答案:B

        *7.2 以下正確的說法是 。

        A)用戶若需要調用標準庫函數(shù),調用前必須重新定義

        B)用戶可以重新定義標準庫函數(shù),若如此,該函數(shù)將失去原有意義

        C)用戶系統(tǒng)根本不允許用戶重新定義標準庫函數(shù)

        D)用戶若需要調用庫函數(shù),調用前不必使用預編譯命令將該函數(shù)所在文件包括到用戶源文件中,系統(tǒng)自動尋找該文件。

        參考答案:B

        7.3 以下正確的函數(shù)定義形式是 。

        A)double fun(int x,int y) B)double fun(int x;int y)

        C)double fun(int x,int y); D)doubel fun(int x;int y);

        參考答案:A

        *7.4 以下正確的函數(shù)形式是 。

        A)double fun(int x,int y){z=x+y;return z;}

        B)double fun(int x,y){int z;return z;}

        C)fun(x,y){int x,y;double z; z=x+y; return z;}

        D)double fun(int x,int y){double z;z=x+y;return z;}

        參考答案:D

        *7.5以下正確的說法是 。

        A)實參和與其對應的形參占用獨立的存儲單元

        B)實參和與其對應的形參共占用一個存儲單元

        C)只有當實參和與其對應的形參同名時才共占用一個存儲單元

        D)形參是虛擬的,不占用存儲單元

        參考答案:A

        參考分析:本題并不嚴謹,因為實參可以是表達式,當實參為表達式時,實參并不單獨占用獨立的存儲單元。

        7.6 若調用一個函數(shù),且此函數(shù)中沒有return語句,則正確的說法是該函數(shù) 。

        A)沒有返回值 B)返回若干個系統(tǒng)默認值

        C)返回一個用戶所希望的函數(shù)值 D)返回一個不確定的值

        參考答案:D

        參考分析:函數(shù)有沒有返回值是由函數(shù)類型所決定的,當沒有retrun語句,系統(tǒng)不能返回一個確定的值而已。

        7.7 以下不正確的說法是,C語言規(guī)定 。

        A)實參可以是常量、變量或表達式

        B)形參可以是常量、變量或表達式

        C)實參可以是任意類型

        D)實參應與其對應的形參類型一致

        參考答案:B

        7.8 以下正確的說法是 。

        A)定義函數(shù)時,形參的類型說明可以放在函數(shù)體內

        B)return后面的值不能為表達式

        C)如果函數(shù)的類型與返回值類型不一致,以函數(shù)類型為準

        D)如果形參與實參的類型不一致,以實參類型為準

        參考答案:C

        7.9 C語言規(guī)定,簡單變量做實參時,它和對應形參之間的數(shù)據(jù)傳遞方式是 。

        A)地址傳遞 B)單向值傳遞

        C)由實參傳給形參,再由形參傳回實參 D)由用戶指定傳遞方式

        參考答案:B

        7.10 以下程序有語法性錯誤,有關錯誤原因的正確說法是 。

        main()

        {int G=5,k;

        void prt_char();

        ......

        k=prt_char(G);

        ......

        }

        A)語句void prt_char();有錯,它是函數(shù)調用語句,不能用void說明

        B)變量名不能使用大寫字母

        C)函數(shù)說明和函數(shù)調用語句之間有矛盾

        D)函數(shù)名不能使用下劃線

        參考答案:C

        7.11 C語言允許函數(shù)值類型缺省定義,此時該函數(shù)值隱含的類型是 。

        A)float型 B)int型 C)long型 D)double型

        參考答案:B

        7.12 C語言規(guī)定,函數(shù)返回值的類型是由 所決定。

        A)return語句中的表達式類型

        B)調用該函數(shù)時的主調函數(shù)類型

        C)調用該函數(shù)是系統(tǒng)臨時指定

        D)在定義該函數(shù)時所指定的函數(shù)類型

        參考答案:D

        *7.13 下面函數(shù)調用語句含有實參的個數(shù)為 。

        fun((exp1,exp2),(exp3,exp4,exp5));

        A)1 B)2 C)4 D)5

        參考答案:B

        參考分析:該函數(shù)的實參是兩個逗號表達式。

        7.14 以下錯誤的描述是 。

        函數(shù)調用可以

        A)出現(xiàn)在執(zhí)行語句中 B)出現(xiàn)在表達式中

        C)作為函數(shù)的實參 D)作為函數(shù)的形參

        參考答案:D

        7.15 以下程序的功能是計算函數(shù)F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值,請選擇填空。

        #include

        #include

        float f(float,float);

        main()

        {float x,y,z,sum;

        scanf("%f%f%f",&x,&y,&z);

        sum=f(【1】)+f(【2】);

        printf("sum=%f\n",sum);

        }

        float f(float a,float b)

        {float value;

        falue=a/b;

        return(value);

        }

        【1】A)x-y,x+y B)x+y,x-y C)z+y,z-y D)z-y,z+y

        【2】A)x-y,x+y B)x+y,x-y C)z+y,z-y D)z-y,z+y

        參考答案:【1】B 【2】C

        7.16以下正確的描述是________。

        A)函數(shù)的定義可以嵌套,但函數(shù)的調用不可以嵌套

        B)函數(shù)的定義不可以嵌套,但函數(shù)的調用可以嵌套

        C)函數(shù)的定義和函數(shù)的調用均不可嵌套

        D)函數(shù)的定義和函數(shù)的調用均可以嵌套

        參考答案:B

        7.17 以下程序是選出能被3整除且至少有一位是5的兩位數(shù),打印出所有的這樣的數(shù)及其個數(shù)。請選擇填空。

        sub(int k,int n)

        {int a1,a2;

        a2=【1】;

        a1=k-【2】;

        if((k%3==0&&a2==5)||(k%3==0&&a1==5))

        {printf("%4d",k);n++;return n;}

        else return -1;

        }

        main()

        {int n=0,k,m;

        for(k=10;k<100;k++)

        {m=sub(k,n);

        if(m!=-1) n=m;

        }

        printf("\nn=%d",n);

        }

        【1】A)k*10 B)k%10 C)k/10 D)k*10%10

        【2】A)a2*10 B)a2 C)a2/10 D)a2%10

        參考答案:【1】C 【2】A

        7.18 以下是有關漢諾塔問題的程序段,若在main函數(shù)中有調用語句hanoi(3,'A','B','C');則符合程序段運行結果的選項是 。

        void move(char getone,char putone)

        {printf("%c-->%c\n",getone,putone);}

        void hanoi(int n,char one,char two,char three)

        {if(n==1) move(one,three);

        else

        {hanoi(n-1,one,three,two);

        move(one,three);

        hanoi(n-1,two,one,three);

        }

        }

        A)A-->C B)A-->C C)A-->C D)A-->C

        A-->B A-->B A-->B A-->B

        C-->B C-->A C-->B C-->B

        B-->A A-->B A-->C A-->C

        C-->B B-->C B-->A A-->B

        A-->C A-->C B-->C B-->C

        A-->B A-->B A-->C A-->C

        參考答案:C

        7.19 若用數(shù)組名作為函數(shù)調用的實參,傳遞給形參的是 。

        A)數(shù)組的首地址 B)數(shù)組第一個元素的值

        C)數(shù)組中全部元素的值 D)數(shù)組元素的個數(shù)

        參考答案:A

        7.20 已有以下數(shù)組定義和f函數(shù)調用語句,則在f函數(shù)的說明中,對形參數(shù)組array的錯誤定義方式為 。

        int a[3][4];

        f(a);

        A)f(int array[][6]) B)f(int array[3][]) C)f(int array[][4]) D)f(int array[2][5])

        參考答案:B

        7.21 若使用一位數(shù)組名作為函數(shù)實參,則以下正確的說法是 。

        A)必須在主調函數(shù)中說明此數(shù)組的大小

        B)實參數(shù)組類型與形參數(shù)組類型可以不匹配

        C)在被調函數(shù)中,不需要考慮形參數(shù)組的大小

        D)實參數(shù)組名與形參數(shù)組名必須一致

        參考答案:C

        7.22 以下函數(shù)binary的作用是應用折半查找法從存有10個整數(shù)的a數(shù)組中對關鍵字m進行查找,若找到,返回其下標值;反之,返回-1。請選擇填空。

        int binary(int a[],int m)

        {int low=0,high=9,mid;

        while(low<=high)

        {mid=(low+high)/2;

        if(m<a[mid]) p="" 【1】;

        else if(m>a[mid]) 【2】;

        else return(mid);

        }

        return(-1);

        }

        A)high=mid-1 B)high=mid+1 C)low=mid-1 D)low=mid+1

        參考答案:【1】A 【2】D

        7.23如果在一個復合語句中定義了一個變量,則有關該變量正確的說法是 。

        A)只在該復合語句中有效 B)只在該函數(shù)中有效

        C)在本程序范圍內均有效 D)為非法變量

        參考答案:A

        7.24 以下不正確的說法為 。

        A)在不同函數(shù)中可以使用相同名字的變量

        B)形式參數(shù)是局部變量

        C)在函數(shù)內定義的變量只在本函數(shù)范圍內有效

        D)在函數(shù)內的復合語句中定義的變量在本函數(shù)范圍內有效

        參考答案:D

        7.25 以下程序的正確運行結果是 。

        #define MAX 10

        int a[MAX],i;

        main()

        {printf("\n");sub1();sub3(a);sub2();sub3(a);}

        sub2()

        {int a[MAX],i,max;

        max=5;

        for(i=0;i

        }

        sub1()

        {for(i=0;i

        sub3(int a[])

        {int i;

        for(i=0;i<max;i++) p="" printf(?%3d?,a[i]);

        printf("\n");

        }

        A) 0 2 4 6 8 10 12 14 16 18 B) 0 1 2 3 4

        0 1 2 3 4 0 2 4 6 8 10 12 14 16 18

        C) 0 1 2 3 4 5 6 7 8 9 D) 0 2 4 6 8 10 12 14 16 18

        0 1 2 3 4 0 2 4 6 8 10 12 14 16 18

        參考答案:D

        *7.26 以下程序的正確運行結果是 。

        #include

        void num()

        {extern int x,y;

        int a=15,b=10;

        x=a-b;

        y=a+b;

        }

        int x,y;

        main()

        {int a=7,b=5;

        x=a+b;

        y=a-b;

        num();

        printf("%d,%d\n",x,y);

        }

        A)12,2 B)12,25 C)5,25 D)5,2

        參考答案:C

        7.27 凡是函數(shù)中未指定存儲類別的局部變量,其隱含的存儲類別為 。

        A)auto B)static C)extern D)register

        參考答案:A

        7.28 在一個C源程序文件中,若要定義一個只允許本源文件中所有函數(shù)使用的全局變量,則該變量需要使用的存儲類別是 。

        A)extern B)register C)auto D)static

        參考答案:D

        *7.29 以下程序的正確運行結果是 。

        main()

        {int a=2,i;

        for(i=0;i<3;i++) printf("%4d",f(a));

        }

        int f(int a)

        {int b=0;

        static int c=3;

        b++;c++;

        return(a+b+c);

        }

        A) 7 7 7 B) 7 10 13

        C) 7 9 11 D) 7 8 9

        參考答案:D

        *7.30 以下程序的正確運行結果是 。

        #include

        main()

        {int k=4,m=1,p;

        p=func(k,m); printf("%d,",p);

        p=func(k,m); printf("%d"\n",p);

        }

        func(int a,int b)

        {static int m=0,i=2;

        i+=m+1;

        m=i+a+b;

        return(m);

        }

        A)8,17 B)8,16 C)8,20 D)8,8

        參考答案:A

        7.2 填空題

        7.31 C語言規(guī)定,可執(zhí)行程序的開始執(zhí)行點是【 】。

        參考答案:main函數(shù)

        7.32 在C語言中,一個函數(shù)一般由兩個部分組成,它們是【1】和【2】。

        參考答案:【1】函數(shù)聲明 【2】函數(shù)體

        *7.33 若輸入的值是-125,以下程序的執(zhí)行結果是 。

        #include

        main()

        {int n;

        scanf("%d",&n);

        printf("%d=",n);

        if(n<0) printf("-");

        n=abs(n);

        fun(n);

        }

        fun(int n)

        {int k,r;

        for(k=2;k<=sqrt(n);k++)

        {r=n%k;

        while(r==0)

        {printf("%d",k);

        n=n/k;

        if(n>1)printf("*");

        r=n%k;

        }

        }

        if(n!=1) printf("%d\n",n);

        }

        參考答案:-125=-5*5*5

        參考分析:本程序用來將整數(shù)分解為素數(shù)因子的乘積。

        7.34 下面add函數(shù)的功能是求兩個參數(shù)的和,并將和值返回調用函數(shù)。函數(shù)中錯誤的部分是【1】;改正后為【2】。

        void add(float a,float b)

        {float c;

        c=a+b;

        return c;

        }

        參考答案:【1】void add(float a,float b) 【2】float add(float a,float b)

        7.35 以下程序的運行結果是 。

        main()

        {int i=2,x=5,j=7;

        fun(j,6);

        printf("i=%d;j=%d;x=%d\n",i,j,x);

        }

        fun(int i,int j)

        {int x=7;

        printf("i=%d;j=%d;x=%d\n",i,j,x);

        }

        參考答案:

        i=7;j=6;x=7

        i=2;j=7;x=5

        7.36 以下程序的運行結果是 。

        main()

        {increment();

        increment();

        increment();

        }

        increment()

        {int x=0;

        x+=1;

        printf("%d",x);

        }

        參考答案:1 1 1

        7.37 以下程序的運行結果是 。

        #include

        main()

        {int a=1,b=2,c;

        c=max(a,b);

        printf("max is %d\n",c);

        }

        max(int x,int y)

        {int z;

        z=(x>y)?x:y;

        return(z);

        }

        參考答案:max is 2

        7.38 以下程序的功能是根據(jù)輸入的"y"("Y")與"n"("N"),在屏幕上分別顯示出"This is YES."與"This is NO."。請?zhí)羁铡?/p>

        #include

        void YesNo(char ch)

        {switch(ch)

        {case 'y':

        case 'Y':printf("\nThis is YES.\n");【1】;

        case 'n':

        case 'N':printf("\nThis is NO.\n");

        }

        }

        main()

        {char ch;

        printf("\nEnter a char 'y','Y' or 'n','N':");

        ch=【2】;

        printf("ch:%c",ch);

        YesNo(ch);

        }

        參考答案:【1】break 【2】getchar()

        7.39 以下Check函數(shù)的功能是對value中的值進行四舍五入計算,若計算后的值與ponse值相等,則顯示"WELL DONE!!",否則顯示計算后的值。已有函數(shù)調用語句Check(ponse,value);請?zhí)羁铡?/p>

        void Check(int ponse,float value)

        {int val;

        val=【1】;

        printf("計算后的值:%d",val);

        if(【2】) printf("\nWELL DONE!!!\n");

        else printf("\nSorry the correct answer is %d\n",val);

        }

        參考答案:【1】value+0.5 【2】ponse==val

        7.40 以下程序的功能是 。

        #include

        f(int n)

        {int i,j,k;

        i=n/100;j=n/10-i*10;k=n%10;

        if (i*100+j*10+k==i*i*i+j*j*j+k*k*k) return n;

        else return 0;

        }

        main()

        {int n,k;

        printf("Output");

        for(n=100;n<1000;n++)

        {k=f(n);

        if(k!=0)

        printf("%d ",k);

        }

        printf("\n");

        }

        參考答案:輸出所有的水仙花數(shù)。

        7.41 以下程序的功能是用二分法求方程2x3-4x2+3x-6=0的根,并要求絕對誤差不超過0.001。請?zhí)羁铡?/p>

        #include

        float f(float x)

        {return (2*x*x*x-4*x*x+3*x-6);}

        main()

        {float m=-100,n=90,r;

        r=(m+n)/2;

        while(f(r)*f(n)!=0)

        {if(【1】) m=r;

        else n=r;

        if(【2】) break;

        r=(m+n)/2;

        }

        printf("方程的解是%6.3f\n",r);

        }

        參考答案:【1】f(r)*f(n)<0或f(r)*f(m)>0【2】n-m<0.001

        7.42 若輸入一個整數(shù)10,以下程序的運行結果是 。

        int sub(int a)

        {int c;

        c=a%2;

        return c;

        }

        main()

        {int a,e[10],c,i=0;

        printf("Input a number:");

        scanf("%d",&a);

        while(a!=0)

        {c=sub(a);

        a=a/2;

        e[i]=c;

        i++;

        }

        for(;i>0;i--) printf("%d",e[i-1]);

        }

        參考答案:1010

        7.43 以下程序的功能是計算下面函數(shù)的值。請?zhí)羁铡?/p>

        sin(x) sin(y) sin(z)

        F(x)= + +

        sin(x-y)*sin(x-z) sin(y-z)*sin(y-x) sin(z-x)*sin(z-y)

        #include

        #include

        float f(float,float,float);

        main()

        {printf("input x,y,z:\n");

        scanf("%f%f%f",&x,&y,&z);

        sum=【1】;

        printf("sum=%f\n",sum);

        }

        float f(float a,float b,float c)

        {float value;

        value=【2】;

        return(value);

        }

        參考答案:【1】f(x,y,z)+f(y,z,x)+f(z,x,y) 【2】sin(a)/sin(a-b)/sin(a-c)

        參考分析:本題答案非常不嚴謹,完全可以寫成多種方式,比如

        【1】f(x,x-y,x-z)+f(y,y-z,y-x)+f(z,z-x,z-y) 【2】sin(a)/sin(b)/sin(c)

        【1】f(x,y,z) 【2】sin(a)/sin(a-b)/sin(a-c)+sin(b)/sin(b-c)/sin(b-a)+sin(c)/sin(c-a)/sin(c-b)

        7.44 已有函數(shù)pow,現(xiàn)要求取消變量i后pow函數(shù)的功能不變。請?zhí)羁铡?/p>

        修改前的pow函數(shù):

        int pow(int x,int y)

        {int i,j=1;

        for(i=1;i<=y;i++) j=j*x;

        return j;

        }

        修改后的函數(shù):

        int pow(int x,int y)

        {int j;

        for(【1】;【2】;【3】) j=j*x;

        return j;

        }

        參考答案:【1】j=1【2】y>0或y>=1【3】y--或--y

        7.45 以下程序的運行結果是輸出如下圖形。請?zhí)羁铡?/p>

        *

        ***

        *****

        *******

        *****

        ***

        *

        #include

        void a(int i)

        {int j,k;

        for(j=0;j<=7-i;j++) printf(" ");

        for(k=0;k<【1】;k++) printf("*");

        printf("\n");

        }

        main()

        {int i;

        for(i=0;i<3;i++) 【2】;

        for(i=3;i>=0;i--) 【3】;

        }

        參考答案:【1】2*i+1 【2】a[i] 【3】a[i]

        參考說明:最長的一行前面有5個空格。

        7.46 以下程序的功能是求三個數(shù)的最小公倍數(shù),請?zhí)羁铡?/p>

        #include

        int max(int x,int y,int z)

        {if(x>y&&x>z) return(x);

        else if(【1】) return(y);

        else return(z);

        }

        main()

        {int x1,x2,x3,i=1,j,x0;

        printf("Input three number:");

        scanf("%d%d%d",&x1,&x2,&x3);

        x0=max(x1,x2,x3);

        while(1)

        {j=x0*i;

        if(【2】) break;

        i++;

        }

        printf("zuixiaogongbeishu=%d\n",j);

        }

        參考答案:【1】y>x&&y>z 【2】j%x1==0&&j%x2==0&&j%x3==0

        參考分析:本題有錯誤,若x=z>y這種條件下max函數(shù)不能正確返回最大值。若將所有條件均改為>=就可以了。

        7.47 函數(shù)gongyue的作用是求整數(shù)num1和num2的最大公約數(shù)。請?zhí)羁铡?/p>

        int gongyue(int num1,int num2)

        {int temp,a,b;

        if(num1【1】num2)

        {temp=num1;num1=num2;num2=temp;}

        a=num1;b=num2;

        while(【2】)

        {temp=a%b;a=b;b=temp;}

        return(a);

        }

        參考答案:【1】< 【2】b

        參考分析:本題需要修改,作為函數(shù),沒有必要將num1賦值給a,另外,不必須要num1大,num2小,還有【2】可以為b!=0

        7.48以下程序的運行結果是 。

        main()

        {int x=2,y=3,z=0;

        printf("(1)x=%d y=%d z=%d\n",x,y,z);

        add(x,y,z);

        printf("(3)x=%d y=%d z=%d\n",x,y,z);

        }

        add(int x,int y,int z)

        {z=x+y; x=x*x; y=y*y;

        printf("(2)x=%d y=%d z=%d\n",x,y,z);

        }

        參考答案:

        (1)x=2 y=3 z=0

        (2)x=4 y=9 z=5

        (3)x=2 y=3 z=0

        7.49 下面函數(shù)pi的功能是:根據(jù)以下公式,返回滿足精度(0.0005)要求的π值,請?zhí)羁铡?/p>

        π/2=1+1/3+1/3*2/5+1/3*2/5*3/7+1/3*2/5*3/7*4/9+…

        #include

        #include

        #include

        double pi(double eps)

        {double s,t;

        int n;

        for(【1】;t>eps;n++)

        {s+=t;

        t=n*t/(2*n+1);

        }

        return (【2】);

        }

        main()

        {double x;

        printf("\nPlease enter a precision:");

        scanf("%lf",&x);

        printf("\neps=%lf,π=%lf",x,pi(x));

        }

        參考答案:【1】s=0,t=1,n=1 【2】2*s

        7.50 下面是一個計算階乘的程序。程序中錯誤的語句是【1】,應改為【2】。

        #include

        double fac(int);

        main()

        {int n;

        printf("Enter an integer:");

        scanf("%d",&n);

        printf("\n\n%d!=%lg\n\n",n,fac(fac(n));

        }

        double fac(int n)

        {double result=1.0;

        while (n>1||n<170) result *=--n;

        return result;

        }

        參考答案:【1】while(n>1||n<170) result *=--n 【2】while (n>1&&n<170) result *=n--;

        ***7.51 函數(shù)f的形參a為一個10×10的二維數(shù)組,n的值為5,以下程序段的運行結果為 。

        f(int a[][20], int n)

        {int i,j,k;

        j=n/2+1;

        a[1][j]=1;

        i=1;

        for(k=2;k<=n*n;k++)

        {i=i-1;j=j+1;

        if(i<1&&j>n) {i=i+2;j=j-1;}

        else

        {if(i<1) i=n;

        if(j>n) j=1;

        }

        if(a[i][j]==0) a[i][j]=k;

        else {i=i+2; j=j-1; a[i][j]=k;}

        }

        }

        main()

        {int a[20][20]={0},n,i,j;

        scanf("%d",&n);

        f(a,n);

        for(i=1;i<=n;i++)

        {for(j=1;j<=n;j++)

        printf("%3d",a[i][j]);

        printf("\n");

        }

        }

        參考答案:

        17 24 1 8 15

        23 5 7 14 16

        4 6 13 20 22

        10 12 19 21 3

        11 18 25 2 9

        參考說明:這是幻方題目

        7.52 下面函數(shù)func的功能是 。

        #include

        long func(long num)

        {long k=1;

        num=labs(num);

        do

        {k*=num%10;

        num/=10;

        }while(num);

        return k;

        }

        main()

        {long n;

        printf("\nPlease enter a number:");

        scanf("%ld",&n);

        printf("\nThe product of its digits is %ld.",func(n));

        }

        參考答案:計算一個數(shù)的各位數(shù)字之積。

        7.53以下程序的運行結果是 。

        #include

        main()

        {printf("FACT(5):%d\n",fact(5));

        printf("FACT(1):%d\n",fact(1));

        fact(-5);

        }

        fact(int value)

        {if(value<0) {printf("FACT(<0):Error!\n"); return (-1);}

        else if(value==1||value==0) return(1);

        else return(value*fact(value-1));

        }

        參考答案:

        FACT(5):120

        FACT(1):1

        FACT(<0):Error!

        7.54 以下程序的功能是用遞歸方法計算學生的年齡,已知第一位學生年齡最小,為10歲,其余學生一個比一個大2歲,求第5位學生的年齡。請?zhí)羁铡?/p>

        遞歸公式如下:

        10 n=1

        age(n)=age(n-1)+2 n>1

        #include

        age(int n)

        {int c;

        if(n==1) c=10;

        else c=【1】;

        return c;

        }

        main()

        {int n=5;

        printf("age:%d\n",【2】);

        }

        參考答案:【1】age(n-1)+2 【2】age(n)

        7.55 下面程序的功能是【1】,運行結果是【2】。

        long fib(int g)

        {switch(g)

        {case 0: return 0;

        case 1: case 2: return 1;

        }

        return(fib(g-1)+fib(g-2));

        }

        main()

        { long k;

        k=fib(7);

        printf("k=%d\n",k);

        }

        參考答案:【1】計算斐波那契數(shù)列第7項的值 【2】k=13

        7.56以下程序的運行結果是 。

        main()

        {int i=5;

        printf("%d\n",sub(i));

        }

        sub(int n)

        {int a;

        if(n==1) return 1;

        a=n+sub(n-1);

        return a;

        }

        參考答案:15

        參考分析:利用遞歸的方法計算1+2+3+4+5

        7.57 以下程序是應用遞歸函數(shù)算法求某數(shù)a的平方根,請?zhí)羁?。求平方根的迭代公式如下?/p>

        x1=1/2(x0+a/x0)

        #include

        double mysqrt(double a,double x0)

        {double x1,y;

        x1=【1】;

        if(fabs(x1-x0)>0.00001) y=mysqrt(【2】);

        else y=x1;

        return y;

        }

        main()

        {double x;

        printf("Enter x:"); scanf("%lf",&x);

        printf("The sqrt of %f=%f\n",x,mysqrt(x,1.0));

        }

        參考答案:【1】1.0/2*(x0+a/x0) 【2】a,x1

        7.58以下程序的運行結果是 。

        #include

        f(int a[])

        {int i=0;

        while(a[i]<=10)

        {printf("%3d",a[i]);

        i++;

        }

        }

        main()

        {int a[]={1,5,10,9,11,7};

        f(a+1);

        }

        參考答案:5 10 9

        7.59以下程序的運行結果是 。

        main()

        {int a[3][3]={1,3,5,7,9,11,13,15,17},sum;

        sum=func(a);

        printf("\nsum=%d\n",sum);

        }

        func(int a[][3])

        {int i,j,sum=0;

        for(i=0;i<3;i++)

        for(j=0;j<3;j++)

        {a[i][j]=i+j;

        if(i==j) sum=sum+a[i][j];

        }

        return (sum);

        }

        參考答案:sum=6

        7.60 閱讀下面程序,完成下列問題中的填空。

        問題(1)此程序在調用函數(shù)f后的運行結果是【1】。

        (2)若將函數(shù)f中的for(j=i+1;j<4;j++)改為for(j=0;j<3-i;j++),則程序的運行結果是【2】。

        f(int s[][4])

        {int i,j,k;

        for(i=0;i<3;i++)

        for(j=i+1;j<4;j++)

        {k=s[i][j];s[i][j]=s[j][i];s[j][i]=k;}

        }

        main()

        {int s[4][4],i,j;

        for(i=0;i<4;i++)

        for(j=0;j<4;j++)

        s[i][j]=i-j;

        f(s);

        for(i=0;i<4;i++)

        {printf("\n");

        for(j=0;j<4;j++)

        printf("%4d",s[i][j]);

        }

        }

        參考答案:

        【1】 0 1 2 3 【2】 0 -1 -2 -3

        -1 0 1 2 1 0 -1 -2

        -2 -1 0 1 2 1 0 -1

        -3 -2 -1 0 3 2 1 0

        7.61 以下search函數(shù)的功能是利用順序查找法從數(shù)組的10個元素中對關鍵字m進行查找。順序查找法的思路是:從第一個元素開始,從前向后依次與關鍵字比較,直到找到此元素或找到數(shù)組尾部時結束。若找到,返回此元素的下標;若未找到,則返回-1。請?zhí)羁铡?/p>

        #include

        int search(int a[10],int m)

        {int i;

        for(i=0;i<=9;i++) if(【1】) return (i);

        return -1;

        }

        main()

        {int a[10],m,i,no;

        no=search(【2】);

        if(【3】) printf("\nOK FOUND!",no);

        else printf("\nSorry Not Found!");

        }

        參考答案:【1】a[i]==m 【2】a,m 【3】no>=0

        7.62 已定義一個含有30個元素的數(shù)組s,函數(shù)fav1的功能是按順序分別賦給各元素從2開始的偶數(shù),函數(shù)fav2則按順序每5個元素求一個平均值,并將該值存放在數(shù)組w中。請?zhí)羁铡?/p>

        #define SIZE 30

        fav1(float s[])

        {int k,i;

        for(k=2,i=0;i<size;i++)< p="">

        {【1】;

        k+=2;

        }

        }

        fav2(float s[],float w[])

        {float sum,k,i;

        sum=0.0;

        for(k=0,i=0;i<size;i++)< p="">

        {sum+=s[i];

        if((i+1)%5==0)

        {w[k]=sum/5;

        【2】;

        k++;

        }

        }

        }

        main()

        {float s[SIZE],w[SIZE/5],sum;

        int i,k;

        fav1(s);

        fav2(s,w);

        }

        參考答案:【1】s[i]=k 【2】sum=0.0

        7.63 以下程序的運行結果是【1】,其算法是【2】。

        main()

        {int a[5]={5,10,-7,3,7},i,t,j;

        sort(a);

        for(i=0;i<=4;i++)

        printf("%3d",a[i]);

        }

        sort(int a[])

        {int i,j,k;

        for(i=0;i<4;i++)

        for(j=0;j<4-i;j++)

        if(a[j]>a[j+1])

        {t=a[j];a[j]=a[j+1];a[j+1]=t;}

        }

        參考答案:【1】-7 3 5 7 10 【2】冒泡法排序

        7.64以下程序的運行結果是【1】,其算法是【2】。

        main()

        {int a[5]={9,6,8,3,-1},i,j,t,p;

        sort(a);

        for(i=0;i<=4;i++)

        printf("%3d",a[i]);

        }

        sort(int a[])

        {int i,j,t,p;

        for(j=0;j<4;j++)

        {p=j;

        for(i=j;i<=4;i++)

        if(a[i]

        t=a[p];a[p]=a[j];a[j]=t;

        }

        }

        參考答案:【1】 -1 3 6 8 9 【2】選擇法排序

        7.65 函數(shù)del的作用是刪除有序數(shù)組a中的指定元素x。已有調用語句n=del(a,n,x);其中實參n為刪除數(shù)組元素的個數(shù),賦值號左邊的n為刪除后數(shù)組元素的個數(shù)。請?zhí)羁铡?/p>

        del(int a[],int n,int x)

        {int p,i;

        p=0;

        while (x>=a[p]&&p<n)< p="">

        【1】;

        for(i=p-1;i<n;i++)< p="">

        【2】;

        n=n-1;

        return n;

        }

        參考答案:【1】p++ 【2】a[i]=a[i+1]

        7.66以下程序的運行結果是 。

        #include

        func(int array[][4],int m)

        {int i,j,k;

        k=0;

        for(i=0;i<3;i++)

        for(j=0;j<4;j++)

        if(array[i][j]<m)< p="">

        k=k+array[i][j];

        return k;

        }

        main()

        {static int a[3][4]={{1,13,5,7},{2,4,26,8},{10,1,3,12}};

        int i,j,m;

        for(i=0;i<3;i++)

        {for(j=0;j<4;j++)

        printf("%4d",a[i][j]);

        printf("\n");

        }

        m=10;

        printf("\nthe value is %d\n",func(a,m));

        }

        參考答案: 1 13 5 7

        2 4 26 8

        10 1 3 12

        the value is 31

        7.67 函數(shù)swap(int x,int y)可完成對x和y值的交換。在運行調用函數(shù)中的如下語句后,a[0]和a[1]的值分別為【1】,原因是【2】。

        a[0]=1,a[1]=2;

        swap(a[0],a[1]);

        參考答案:【1】1,2 【2】單向傳值不能完成對實參數(shù)據(jù)的交換

        7.68函數(shù)swap(arr,n)可完成對arr數(shù)組從第一個元素到第n個元素兩兩交換。在運行調用函數(shù)中的如下語句后,a[0]和a[1]的值分別為【1】,原因是【2】。

        a[0]=1,a[1]=2;

        swap(a,2);

        參考答案:【1】2,1 【2】地址傳遞對形參的改變能改變實參的值

        7.69 以下程序可計算10名學生1門課成績的平均分,請?zhí)羁铡?/p>

        float average(float array[])

        {int i;float aver,sum=array[0];

        for(i=1;【1】;i++)

        sum+=【2】;

        aver=sum/10;

        return aver;

        }

        main()

        {float score[10],aver;

        int i;

        printf("\ninput 10 scores:");

        for(i=0;i<10;i++) scanf("%f",&score[i]);

        aver=【3】;

        printf("\naverage score is %5.2f\n",aver);

        }

        參考答案:【1】i<10 【2】array[i] 【3】average(score)

        7.70 函數(shù)yahui能夠按以下形式構成一個楊輝三角形,請?zhí)羁铡?/p>

        1

        1 1

        1 2 1

        1 3 3 1

        1 4 6 4 1

        1 5 10 10 5 1

        ………..

        #define N 11

        yahui(int [][N])

        {int i,j;

        for(i=1;i<n;i++)< p="">

        {a[i][1]=1;a[i][i]=1;}

        for(【1】;i<n;i++)< p="">

        for(j=2;【2】;j++)

        a[i][j]=【3】+a[i-1][j];

        }

        參考答案:【1】i=3 【2】j<i p="" 【3】a[i-1][j-1]

        <i p="" 【3】a[i-1][j-1]7.71 下面程序的功能是:從鍵盤輸入一個整數(shù)m(4≤m≤20),則輸出如下的整數(shù)方陣(存入二維數(shù)組aa)。例如,若輸入4則會輸出左邊的方陣,若輸入5,則會輸出右邊的方陣。

        <i p="" 【3】a[i-1][j-1]

        16 9 4 1 25 16 9 4 1

        9 4 1 16 16 9 4 1 25

        4 1 16 9 9 4 1 25 16

        1 16 9 4 4 1 25 16 9

        請改正程序中的錯誤語句,使它能得出正確的結果。改正后的語句是【1】和【2】。

        #define M 20

        void aMatrix(int n, int x[][M])

        {int i,j;

        for(j=0;j<n;j++)< p="">

        x[0][j]=(n-j)*(n-j);

        for(i=1;i<n;i++)< p="">

        {for(j=0;j<n;j++) p=""

        x[i][j]=x[i-1][j+1];

        x[i][n-1]=x[i-1][0];

        }

        }

        main()

        {int a[M][M],i,j,m;

        printf("\nPlease enter an integer number between 4 and 20:");

        scanf("%d",&m);

        aMatrix(m,a);

        printf("\nThe %d*%d matrix generated:",m,m);

        for(i=0;i<m;i++)< p="">

        {printf("\n");

        for(j=0;j<m;j++)< p="">

        printf("%4f",(*(a+i))[j]); /*錯誤語句【2】*/

        }

        }

        參考答案:【1】for(j=0;j<n-1;j++ p="" 【2】printf(?%4d?,(*(a+i))[j]);

        7.72以下程序的運行結果是 。

        main()

        {int a=1,b=2,c=3;

        ++a;

        c+=++b;

        {int b=4,c;

        c=b*3;

        a+=c;

        printf("first:%d,%d,%d\n",a,b,c);

        a+=c;

        printf("second:%d,%d,%d\n",a,b,c);

        }

        printf("third:%d,%d,%d"\n",a,b,c);

        }

        參考答案:

        first:14,4,12

        second:26,4,12

        third:26,3,6

        7.73以下程序的運行結果是 。

        int k=1;

        main()

        {int i=4;

        fun(i);

        printf("(1)%d,%d\n",i,k);

        }

        fun(int m)

        {m+=k;

        k+=m;

        {char k='B';

        printf("(2)%d\n",k-'A');

        }

        printf("(3)%d,%d\n",m,k);

        }

        參考答案:

        (2)1

        (3)5,6

        (1)4,6

        7.74 以下程序的運行結果是 。

        int x1=30,x2=40;

        main()

        {int x3=10,x4=20;

        sub(x3,x4);

        sub(x2,x1);

        printf("%d,%d,%d,%d\n",x3,x4,x1,x2);

        }

        int sub(int x,int y)

        {x1=x;x=y;y=x1;}

        參考答案:10,20,40,40

        7.75以下程序的運行結果是 。

        int i=0;

        main()

        {int i=5;

        reset(i/2); printf("i=%d\n",i);

        reset(i=i/2); printf("i=%d\n",i);

        reset(i/2); printf("i=%d\n",i);

        workover(i); printf("i=%d\n",i);

        }

        workover(int i)

        {i=(i%i)*((i*i)/(2*i)+4);

        printf("i=%d\n",i);

        return i;

        }

        reset(int i)

        {i=i<=2?5:0;

        return i;

        }

        參考答案:

        i=5

        i=2

        i=2

        i=0

        i=2

        7.76以下程序的運行結果是 。

        int a=5;int b=7;

        main()

        {int a=4,b=5,c;

        c=plus(a,b);

        printf("A+B=%d\n",c);

        }

        int plus(int x,int y)

        {int z;

        z=x+y;

        return z;}

        參考答案:A+B=9

        7.77以下程序的運行結果是 。

        int a=3,b=5;

        int max(int a,int b)

        {int c;

        c=a>b?a:b;

        return c;

        }

        main()

        {int a=8;

        printf("%d",max(a,b));

        }

        參考答案:8

        7.78以下程序的運行結果是 。

        int x;

        main()

        {x=5;

        cude();

        printf("%d\n",x);

        }

        cude()

        {x=x*x*x;}

        參考答案:125

        參考分析:x是全局變量。

        7.79以下程序的運行結果是 。

        main()

        {int i;

        for (i=0;i<3;i++)

        {funx();

        funy();

        }

        }

        funx()

        {int x=0;

        printf("x=%d\t",++x);

        }

        funy()

        {static int y=0;

        printf("y=%d\n",++y);

        }

        參考答案:

        x=1 y=1

        x=1 y=2

        x=1 y=3

        7.80以下程序的運行結果是 。

        main()

        {int i;

        for (i=0;i<3;i++)

        fun();

        }

        fun()

        {static int x=0;

        x+=1;

        printf("%3d",x);

        }

        參考答案: 1 2 3

        7.81以下程序的運行結果是 。

        int n=1;

        main()

        {static int x=5;

        int y;

        y=n;

        printf("MAIN:x=%2d y=%2d n=%2d\n",x,y,n);

        func();

        printf("MAIN:x=%2d y=%2d n=%2d\n",x,y,n);

        func();

        }

        func()

        {static int x=4;

        int y=10;

        x=x+2;

        n=n+10;

        y=y+n;

        printf("FUNC:x=%2d y=%2d n=%2d\n",x,y,n);

        }

        參考答案:

        MAIN:x= 5 y= 1 n=1

        FUNC:x= 6 y=21 n=11

        MAIN:x= 5 y= 1 n=11

        FUNC:x= 8 y=31 n=21

        7.82 以下程序的功能是 。

        int fac(int n)

        {static int f=1;

        f=f*n;

        return f;

        }

        main()

        {int i;

        for(i=1;i<=5;i++)

        printf("%d!=%d\n",i,fac(i));

        }

        參考答案:計算并輸出1到5的階乘

        7.3 編程題

        7.83 已有變量定義和函數(shù)調用語句:int a=1,b=-5,c;c=fun(a,b);fun函數(shù)的作用是計算兩個數(shù)之差的絕對值,并將差值返回調用函數(shù),請編寫fun函數(shù)。

        fun(int x,int y)

        { }

        參考程序:

        fun(int x,int y)

        {if(x>y) return x-y;

        return y-x;

        }

        7.84 已有變量定義和函數(shù)調用語句:int x=57; isprime(x);函數(shù)isprime()用來判斷一個整型數(shù)a是否為素數(shù),若是素數(shù),函數(shù)返回1,否則返回0。請編寫isprime函數(shù)。

        int isprime(int a)

        { }

        參考程序:

        int isprime(int a)

        {int k;

        if(a==1) return 0;

        for(k=2;k<=a/2;k++)

        if(a%k==0) return 0;

        return 1;

        }

        7.85 已有變量定義和函數(shù)調用語句int a,b; b=sum(a);函數(shù)sum用來求1+2+3+…+n,請編寫sum函數(shù)。

        int sum(int n){ }

        參考程序:

        int sum(int n)

        {int s=0,k;

        for(k=1;k<=n;k++)

        s+=k;

        return s;

        }

        7.86已有變量定義和函數(shù)調用語句double a=5.0; int n=5;和函數(shù)調用語句mypow(a,n);用來求a的n次方。請編寫mypow函數(shù)。

        double mypow(double x,int y){ }

        參考程序:

        double mypow(double x,int y)

        {double s=1;

        for(;y>0;y--)

        s=s*x;

        return s;

        }

        7.87 以下程序的功能是用牛頓法求解方程f(x)=cosx-x=0。已有初始值x0=3.1415/4,要求絕對誤差不超過0.001,函數(shù)f用來計算迭代公式中x0的值。請編寫f函數(shù)。牛頓迭代公式是:xn+1=xn

        第八章 編譯預處理

        8.1 選擇題

        8.1 以下敘述中不正確的是 。

        A)預處理命令都必須以#開始

        B)在C程序中凡是以#開始的語句行都是預處理命令行

        C)C程序在執(zhí)行過程中對預處理命令行進行處理

        D)以下是正確的宏定義 #define IBM_PC

        參考答案:C

        8.2 以下敘述中正確的是 。

        A)在程序的一行上可以出現(xiàn)多個有效的預處理命令行

        B)使用帶參的宏時,參數(shù)的類型應與宏定義時的一致

        C)宏替換不占用運行時間,只占用編譯時間

        D)以下定義中C R是稱為宏名的標識符

        #define C R 045

        參考答案:C

        8.7以下有關宏替換的敘述不正確的是 。

        A)宏替換不占用運行時間

        B)宏名無類型

        C)宏替換只是字符替換

        D)宏名必須用大寫字母表示

        參考答案:D

        8.21在“文件包含”預處理語句的使用形式中,當#include后面的文件名用""括起時,尋找被包含文件的方式是 。

        A)直接按照系統(tǒng)設定的標準方式搜索目錄

        B)先在源程序所在目錄搜索,再按照系統(tǒng)設定的標準方式搜索

        C)僅僅搜索源程序所在目錄

        D)僅僅搜索當前目錄

        參考答案:B

        8.22 在“文件包含”預處理語句的使用形式中,當#include后面的文件名用<>括起時,尋找被包含文件的方式是 。

        A)僅僅搜索當前目錄

        B)僅僅搜索源程序所在目錄

        C)直接按系統(tǒng)設定的標準方式搜索目錄

        D)先在源程序所在目錄搜索,再按系統(tǒng)設定的標準方式搜索

        參考答案:C

        8.25 C語言提供的預處理功能包括條件編譯,其基本形式為:

        #xxx 標識符

        程序段1

        #else

        程序段2

        #endif

        A)define或include B)ifdef或include

        C)ifdef或ifndef或define D)ifdef或ifndef或if

        參考答案:D

        第九章 指針

        9.1 選擇題

        9.1 以下程序的運行結果是 。

        void sub (int x,int y,int *z)

        {*z=y-x;}

        main()

        {int a,b,c;

        sub(10,5,&a);

        sub(7,a,&b);

        sub(a,b,&c);

        printf("%4d,%4d,%4d",a,b,c);

        }

        A) 5, 2, 3 B) -5, -12, -7

        C) -5, -12, -17 D) 5, -2, -7

        參考答案:A

        9.2 執(zhí)行以下程序后,a的值為【1】,b的值為【2】。

        main()

        {int a,b,k=4,m=6,*p1=&k,*p2=&m;

        a=p1==&m;

        b=(-*p1)/(*p2)+7;

        printf("a=%d,b=%d\n",a,b);

        }

        【1】A)-1 B)1 C)0 D)4

        【2】A)5 B)6 C)7 D)10

        參考答案:【1】C 【2】C

        9.3下面程序欲對兩個整型變量的值進行交換,以下正確的說法是 。

        main()

        {int a=10,b=20;

        printf("(1)a=%d,b=%d\n",a,b);

        swap(&a,&b);

        printf("(2)a=%d,b=%d\n",a,b);

        }

        swap (int p,int q)

        {int t;

        t=p;p=q;q=t;}

        A) 該程序完全正確

        B) 該程序有錯,只要將語句swap(&a,&b);中的參數(shù)改為a,b即可

        C) 該程序有錯,只要將swap()函數(shù)中的形參p、q和變量t均定義為指針即可

        D) 以上說法都不正確

        參考答案:D

        *9.4 有四組對指針變量進行操作的語句,以下判斷正確的選項是 。

        (1)int *p,*q;q=p;

        int a,*p,*q;p=q=&a;

        (2)int a,*p,*q;q=&a;p=*q;

        int a=20,*p;*p=a;

        (3)int a=b=0,*p;p=&a;b=*p;

        int a=20,*p,*q=&a;*p=*q;

        (4)int a=20,*p,*q=&a;p=q;

        int p,*q;q=&p;

        A)正確:(1) 不正確:(2),(3),(4)

        B)正確:(1),(4) 不正確:(2),(3)

        C)正確:(3) 不正確:(1),(2),(4)

        D)以上結論都不正確

        參考答案:D

        參考分析:在四組操作中,完全正確的只有(4),對各組操作中出現(xiàn)的錯誤分析如下。

        (1)int *p,*q;q=p; p沒有指向一個確定的空間

        int a,*p,*q;p=q=&a;

        (2)int a,*p,*q;q=&a;p=*q; q沒有指向確定空間,且*q不是地址值

        int a=20,*p;*p=a; p沒有指向一個確定的空間

        (3)int a=b=0,*p;p=&a;b=*p;

        int a=20,*p,*q=&a;*p=*q; p沒有指向一個確定的空間

        9.5 以下程序中調用scanf函數(shù)給變量a輸入數(shù)值的方法是錯誤的,其錯誤的原因是 。

        main()

        {int *p,*q,a,b;

        p=&a;

        printf("input a:");

        scanf("%d",*p);

        }

        A)*p表示的是指針變量p的地址

        B)*p表示的是變量a的值,而不是變量a的地址

        C)*p表示的是指針變量p的值

        D)*p只能用來說明p是一個指針變量

        參考答案:B

        9.6 以下程序有錯,錯誤原因是 。

        main()

        {int *p,i;char *q,ch;

        p=&i;

        q=&ch;

        *p=40;

        *p=*q;

        }

        A)p和q類型不一致,不能執(zhí)行*p=*q;語句

        B)*p中存放的是地址值,因此不能執(zhí)行*p=40;語句

        C)q沒有指向具體的存儲單元,所以*q沒有實際意義

        D)q雖然指向了具體的存儲單元,但該單元中沒有確定的值,所以不能執(zhí)行*p=*q;語句

        參考答案:D

        9.7 有如下語句int a=10,b=20;*p1=&a,*p2=&b;如果讓兩個指針變量均指向b,正確的賦值方式是 。

        A)*p1=*p2; B)p1=p2; C)p1=*p2; D)*p1=*p2;

        參考答案:B

        9.8 已有定義int k=2;int *p1,*p2;且p1,p2均指向變量k,下面不能正確執(zhí)行的賦值語句是 。

        A)k=*p1+*p2; B)p2=k; C)p1=p2; D)k=*p1*(*p2);

        參考答案:B

        9.9 變量的指針,其含義是指變量的 。

        A)值 B)地址 C)名 D)一個標志

        參考答案:B

        9.10 若已定義int a;下面對(1)(2)兩個語句的正確解釋是 。

        (1)int *p=&a; (2)*p=a;

        A)語句(1)和(2)中的*p含義相同,都表示給指針變量p賦值

        B)(1)和(2)語句的執(zhí)行結果,都是把變量a的地址賦給指針變量p

        C)(1)在對p進行說明的同時進行初始化,使p指向a

        (2)將變量a的值賦給指針變量p

        D)(1)在對p進行說明的同時進行初始化,使p指向a

        (2)將變量a的值賦給*p

        參考答案:D

        9.11 若有語句int a=4,*p=&a;下面均代表地址的一組選項是 。

        A)a,p,*&a B)*&a,&a,*p C)*&p,*p,&a D)&a,&*p,p

        參考答案:D

        9.12 已有說明float f=3.14,*p;若讓p指向f,則正確的賦值語句是 。

        A)p=f; B)p=&f; C)*p=f; D)*p=&m

        參考答案:B

        9.13 若有說明int *p,m=5,n;則以下正確的程序段是 。

        A)p=&n; B)p=&n;

        scanf("%d",&p); scanf("%d",*p);

        C)scanf("%d",&n); D)p=&n;

        *p=n; *p=m;

        參考答案:D

        9.14 若有說明int *p1,*p2,m=5,n;以下正確的程序段是 。

        A)p1=&m;p2=&p1; B)p1=&m;p2=&n;*p1=*p2;

        C)p1=&m;p2=p1; D)p1=&m;*p2=*p1;

        參考答案:C

        9.15 已有變量定義和函數(shù)調用語句int a=25;print_value(&a);下面函數(shù)輸出的正確結果是 。

        void print_value(int *x)

        {printf("%d\n",++*x);}

        A)23 B)24 C)25 D)26

        參考答案:D

        9.16下面判斷正確的是 C 。

        A)char *a="china";等價于char *a;*a="china";

        B)char str[10]={"china"};等價于char str[10];str[]="china";

        C)char *s="china";等價于char *s;s="china";

        D)char c[6]="china",d[6]="china";等價于char c[6]=d[6]="china";

        9.17設char *s="\ta\017bc";則指針變量s指向的字符串所占的字節(jié)數(shù)是 。

        A)9 B)5 C)6 D)7

        參考答案:C

        參考分析:字符串的串長為5,但字符串占用6個字節(jié)的空間(含一個'\0')。

        9.18 下面程序段中,for循環(huán)的執(zhí)行次數(shù)是 。

        char *s="\ta\018bc";

        for( ;*s!='\0';s++) printf("*");

        A)9 B)5 C)6 D)7

        參考答案:C

        9.19下面能正確進行字符串賦值操作的是 。

        A)char s[5]={"ABCDE"}; B)char s[5]={'A','B','C','D','E'};

        C)char *s;s="ABCDE"; D)char *s;scanf("%s",s);

        參考答案:C

        9.20 下面程序段的運行結果是 。

        char *s="abcde";

        s+=2;

        printf("%d",s);

        A)ced B)字符'c' C)字符'c'的地址 D)無確定的輸出結果

        參考答案:C

        9.21 設p1和p2是指向同一個字符串的指針變量,c為字符變量,則以下不能正確執(zhí)行的賦值語句是 。

        A)c=*p1+*p2; B)p2=c; C)p1=p2; D)c=*p1*(*p2);

        9.22 設有下面的程序段,則下列正確的是 。

        char s[]="china"; char *p;p=s;

        A)s和p完全相同 B)數(shù)組s中的內容和指針變量p中的內容相等

        C)s數(shù)組長度和p所指向的字符串長度相等 D)*p與s[0]相等

        參考答案:D

        9.23 下面程序段的運行結果是 。

        char *format="%s,a=%d,b=%d\n";

        int a=1,b=10;

        a+=b;

        printf(format,"a+=b",a,b);

        A)for,"a+=b",ab B)format,"a+=b" C)a+=b,a=11,b=10 D)以上結果都不對

        參考答案:C

        9.24下面程序段的運行結果是________。

        char *p="%d,a=%d,b=%d\n";

        int a=111,b=10,c;

        c=a%b;p+=3;

        printf(p,c,a,b);

        A)1,a=111,b=10 B) a=1,b=111 C)a=111,b=10 D) 以上結果都不對

        參考答案:B

        9.31以下與庫函數(shù)strcpy(char*p1,char*p2)功能不等的程序段是 。

        A)strcpy1(char *p1,char *p2)

        {while ((*p1++=*p2++)!='\0');}

        B)strcpy2(char *p1,char *p2)

        {while ((*p1=*p2)!='\0'){p1++;p2++;}}

        C)strcpy3(char *p1,char *p2)

        {while (*p1++=*p2++);}

        D)strcpy4(char *p1,char *p2)

        {while (*p2) *p1++=*p2++;}

        參考答案:D

        9.32以下與庫函數(shù)strcmp(char*s,char*t)的功能相等的程序段是 。

        A)strcmp1(char *s,char *t)

        {for (;*s++= =*t++;)

        if (*s= ='\0') return 0;

        return (*s-*t);}

        B)strcmp2(char *s,char *t)

        {for (;*s++= =*t++;)

        if (!*s) return 0;

        return (*s-*t);}

        C)strcmp3(char *s,char *t)

        {for (;*t= =*s;)

        {if (!*t) return 0; t++;s++;}

        return (*s-*t);}

        D)strcmp4(char *s,char *t)

        {for (;*s= =*t;s++,t++)

        if (!*s) return 0;

        return (*t-*s);}

        參考答案:C

        9.39 下面程序的功能是將八進制正整數(shù)字符串轉換為十進制整數(shù)。請選擇填空。

        #include

        main()

        {char *p,s[6];int n;

        gets(p);

        n=【1】;

        while(【2】!='\0') n=n*8+*p-'0';

        printf("%d\n",n);

        }

        【1】A)0 B)*p C)*p-'0' D)*p+'0'

        【2】A)*p B)*p++ C)*(++p) D)p

        參考答案:【1】C 【2】C

        9.40 下面程序的功能是統(tǒng)計子串sub在母串中出現(xiàn)的次數(shù)。請選擇填空。

        #include

        main()

        {char str[80],sub[80];

        int n;

        gets(str);gets(sub);

        printf("%d\n",count(str,sub));

        }

        int count(char *str,char *sub)

        {int i,j,k,num=0;

        for(i=0;【1】;i++)

        for(【2】,k=0;sub[k]==str[j];k++,j++)

        if(sub[【3】])=='\0') {num++;break;}

        return num;

        }

        【1】A)str[i]==sub[i] B)str[i]!='\0' C)str[i]=='\0' D)str[i]>sub[i]

        【2】A)j=i+1 B)j=i C)j=0 D)j=1

        【3】A)k B)k++ C)k+1 D)++k

        參考答案:【1】C應該為B 【2】B 【3】A應該為C

        9.41 下面程序的功能是在字符串str中找出最大的字符并放在第一個位置上,并將該字符前的原字符往后順序移動,如chyab變成ychab。請選擇填空。

        #include

        main()

        {char str[80],*p,max,*q;

        p=str;gets(p);max=*(p++);

        while(*p!='\0')

        {if(max<*p) {max=*p;【1】;}

        p++;

        }

        p=q;

        while(【2】) {*p=*(p-1);【3】;}

        *p=max;

        puts(p);

        }

        【1】A)p++ B)p=q C)q=p D)q++

        【2】A)p>str B)p>=str C)*p>str[0] D)*p>=str[0]

        【3】A)p++ B)str-- C)p-- D)i--

        參考答案:【1】C 【2】A 【3】C

        9.53下面程序的運行結果是________。

        #include "stdio.h"

        #include "string.h"

        main()

        {char *s1="AbDeG";

        char *s2="AbdEg";

        s1+=2; s2+=2;

        printf"%d\n",strcmp(s1,s2));

        }

        A)正數(shù) B)負數(shù) C)零 D)不確定的值

        參考答案:B

        9.68若有定義:int (*p)[4];則標識符p C 。

        A)是一個指向整型變量的指針

        B)是一個指針數(shù)組名

        C)是一個指針,它指向一個含有四個整型元素的一維數(shù)組

        D)定義不合法

        9.74若有定義:int *p[4];則標識符p B 。

        A)是一個指向整型變量的指針

        B)是一個指針數(shù)組名

        C) 是一個指針,它指向一個含有四個整型元素的一維數(shù)組

        D) 定義不合法

        9.103語句int (*ptr)();的含義是 C 。

        A)ptr是指向一維數(shù)組的指針變量

        B)ptr是指向int型數(shù)據(jù)的指針變量

        C)ptr是指向函數(shù)的指針,該函數(shù)返回一個int型數(shù)據(jù)

        D)ptr是一個函數(shù)名,該函數(shù)的返回值是指向int型數(shù)據(jù)的指針

        9.2 填空題

        9.117 下面程序段是把從終端讀入的一行字符作為字符串放在字符數(shù)組中,然后輸出,請分析程序填空。

        int i;

        char s[80],*p;

        for(i=0;i<79;i++)

        {s[i]=getchar();

        if(s[i]=='\n') break;

        }

        s[i]= 【1】 ;

        p= 【2】 ;

        while(*p) putchar(*p++);

        參考答案:【1】'\0' 【2】s

        9.133下面程序的功能是檢查給定字符串s是否滿足下列兩個條件:

        a)字符串s中左括號”(”的個數(shù)與右括號”)”的個數(shù)相同;

        b)從字符串s的首字符起順序查找右括號”)”的個數(shù)在任何時候均不超過所遇到的左括號”(”的個數(shù);

        若字符串同時滿足上述兩個條件,函數(shù)返回1,否則返回0

        #include "stdio.h"

        main()

        { char c[80];

        int d;

        printf("Input a string:");

        gets(c);

        d=check(c);

        printf("%s",d?"Yes":"No");

        }

        check (char *s)

        {int l=0,r=0;

        while (*s!='\0')

        {if(*s= ='(') l++;

        else if (*s= =')')

        {r++; if (【l<r】) p="" }

        【s++】;

        }

        return(【l= =r】);

        }

        9.134下面程序的功能是將十進制數(shù)轉換成十六進制數(shù)。

        (注釋:'0'和'A'的ASCII碼值為48,65)

        #include "stdio.h"

        #include "string.h"

        main()

        {int a,i;

        char s[20];

        printf("Input a:\n");

        scanf("%d",&a);

        c10_16(s,a);

        for (i=【strlen(s)-1】;i>=0;i--) printf("%c",*(s+i));

        printf("\n");

        }

        c10_16(char *p,int b)

        {int j;

        while(b>0)

        {j=b%16;

        if (【j<10】) *p=j+48;

        else *p=j+55;

        b=b/16;

        【p++】;

        }

        *p='\0';

        }

        9.135下面程序是判斷輸入的字符串是否是”回文”,(順讀和倒讀都一樣的字符串,稱”回文”,如level)。

        #include "stdio.h"

        #include "string.h"

        main()

        {char s[81],*p1,*p2;

        int n;

        printf("Input a string:");

        gets(s);

        n=strlen(s);

        p1=s;

        p2=【s+n-1】;

        while (【p1<p2】)< p="">

        {if (*p1!=*p2) break;

        else {p1++;【p2--】;}

        }

        if (p1<p2) p="" printf(?no\n?);

        else printf("Yes\n");

        }

        9.139當運行以下程序時,從鍵盤輸入this is a text.,則下面程序的運行結果是________。

        #include "stdio.h"

        #define TURE 1

        #define FALSE 0

        int change(char *c,int status);

        main()

        {int flage=TRUE;

        char ch;

        do

        { ch=getchar();

        flag=change(&ch,flag);

        putchar(ch);

        } while (ch!='.');

        printf("\n");

        }

        int change (char *c,int status)

        { if (*c= ='□' return TRUE;

        else

        {if (status&&*c<='z'&&*c>='a') *c+='A'-'a';

        return FALSE;

        }

        }

        結果:This Is A Text.

        9.144下面程序的運行結果是________。

        #include "stdio.h"

        #define SIZE 12

        main()

        {char s[SIZE];int i;

        for (i=0;i<size;i++)< p="">

        s[i]='A'+i+32;

        sub(s,7,SIZE-1);

        for (i=0;i<size;i++)< p="">

        printf("%c",s[i];

        printf("\n");

        }

        sub(char *a,int t1,int t2)

        { char ch;

        while (t1<t2)< p="">

        {ch=*(a+t1);

        *(a+t1)=*(a+t2);

        *(a+t2)=ch;

        t1++; t2--;

        }

        }

        參考答案:abcdefglkjih

        }

        9.145下面程序的運行結果是 。

        #include

        main()

        { char a[80],b[80],*p="aAbcdDefgGH";

        int i=0,j=0;

        while (*p!='\0')

        { if (*p>='a'&&*p<='z')

        {a[i]=*p;i++;}

        else

        {b[j]=*p;j++;}

        p++;

        }

        a[i]=b[j]='\0';

        puts(a);puts(b);

        }

        參考答案:

        abcdefg

        ADGH

        更多資料

        江西專升本《高等數(shù)學》歷年真題匯編

        20部中國現(xiàn)當代重要小說作品考點集錦

        統(tǒng)招專升本《政治》資料

        更多課程

        《市場營銷學》公開課—業(yè)務成長戰(zhàn)略

        1節(jié)課

        《基礎會計》公開課—會計要素-反映財務狀況的會計要素

        1節(jié)課

        《管理學》公開課——馬斯洛需要層次理論

        1節(jié)課

        溫馨提示:因考試政策、內容不斷變化與調整,本網(wǎng)站提供的以上信息僅供參考,如有異議,請考生以權威部門公布的內容為準!

        專升本備考資料免費領取

        去領取