二級C筆試試題

來源:互聯網
上載者:User
1994年4月

一、選擇題(1-30每小題1分,31-45每小題2分,共60分)

下列各題 A),B),C),D)四個選項,只有一個選項是正確的,請將正確的選項在答題卡相應位置上塗黑。答在試卷上不得分。

(1)位元101110轉換為等值的八位元是 【1】 。

【1】   A) 45B) 56C) 67D) 78

(2)CPU是由 【2】 組成的。【】

【2】  A) 記憶體儲器和控制器    B) 控制器和運算器

C) 記憶體儲器和運算器    D) 記憶體儲器、控制器和運算器

(3)DOS是為IBM PC系列微電腦及其相容機所配置的 【3】 磁碟作業系統。

【3】A)  多使用者多任務   B) 單使用者單任務    C) 分時 D) 分布式

(4)啟動MS-DOS作業系統後, 【4】 已駐留記憶體。

【4】A) COMMAND.COM B) DISKCOPY.COM C) FORMAT.COM D) CCCC.EXE

(5)設磁碟機B中磁碟片上的目錄結構如所示。

     

     

     

設目前的目錄為F2,則把A盤根目錄下的PROG.BAS檔案複製到B盤F3子目錄中的命令是 【5】 。

        【5】 A) COPY PROG.BAS B: B) COPY A:PROG.BAS B:\

        C) COPY A:\PROG.BAS B:\F3 D) COPY A:PROG.BAS B:\F3\

        (6) 下面四組DOS命令中,意義完全相同的一組是 【6】 。

        【6】 A) COPY和DISKCOPY B) COMP和DISKCOMP

        C) DEL和RD D) RENAME和REN

        (7) 防止磁碟片感染病毒的有效方法是 【7】 。

        【7】 A) 不要把磁碟片和有毒磁碟片放在一起 B) 在防寫保護缺口上貼上膠條

        C) 保持機房清潔 D) 定期對磁碟片格式化

        (8) 雙面高密度5英寸軟磁碟的容量是 【8】 。

        【8】 A) 360KB B) 720KB C) 1.2MB D) 1.44MB

        (9) 在FOXBASE中,可以使用的兩類變數是 【9】 。

        【9】 A) 記憶體變數和欄位變數 B) 全域變數和局部變數

        C) 欄位變數和簡單變數 D) 記憶體變數和自動變數

        (10) 建立一個新子目錄的DOS命令是 【10】 。

        【10】 A) CREATE B) RD C) MD D) CD

        (11) 在C語言中,如果下面的變數都是int類型,則輸出的結果是 【11】 。

        sum=pad=5; pAd=sum + + ,pAd + + , + + pAd;

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

        【11】 A) 7 B) 6 C) 5 D) 4

        (12) 以下程式的輸出結果是 【12】 。

        # include <stdio.h>

        main()

        { int i=010 , j = 10;

        printf("%d,%d\n",+ +i , j - -); }

        【12】 A) 11,10 B) 9,10 C) 010,9 D) 10,9

        (13) 已知在ASCII代碼中,字母A的序號為65,以下程式的輸出的結果是 【13】 。

        # include <stdio.h>

        main()

        { char c1='A', c2='Y';

        printf("%d,%d\n",c1,c2); }

        【13】A) 因輸出格式不合法,輸出錯誤資訊 B)65,90 C)A,Y D)65,89

        (14) 指標s所指字串的長度為 【14】 。

        char *s="\\"Name\\Address\n";

        【14】 A) 19 B) 15 C) 18 D) 說明不合法

        (15) 設有說明int(*ptr)[m];其中的標識符ptr是 【15】 。

        【15】 A)M個指向整型變數的指標

        B)指向M個整型變數的函數指標

        C)一個指向具有M個整型元素的一維數組的指標

        D)具有M個指標元素的一維指標數組,每個元素都只能指向整型量

        (16) 語句while(!E);中的條件!E等價於 【16】 。

        【16】 A)E = = 0 B)E!=1 C)E!=0 D)~E

        (17) 以下程式的輸出結果是 【17】 。

        # include <stdio.h>

        main()

        { printf("%d\n",NULL); }

        【17】 A) 不確定的(因變數無定義) B)0 C)-1 D)1

        (18) 以下函數調用語句中含有 【18】 個實參。

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

        【18】 A) 1 B) 2 C) 4 D) 5

        (19) 設有以下語句:

        char a=3,b=6,c;

        c=a^b<<2;

        則c的二進位值是 【19】 。

        【19】 A) 00011011 B)00010100 C)00011100 D)00011000

        (20) 下面的程式中 【20】 有錯誤(每行程式前面的數字是行號)。

        1 #include <stdio.h>

        2 main()

        3 {

        4 float a[3]={0,0};

        5 int i;

        6 for(i=0;i<3;i + + ) scanf("%d",&a[i]);

        7 for(i=1;i<3;i + + ) a[0]=a[0]+a[i];

        8 printf("%f\n",a[0]);

        9 }

        【20】 A) 沒有 B)第4行 C)第6行 D)第8行

        (21) 設有語句int a=3;則執行了語句a+=a-=a*a;後,變數a的值是 【21】 。

        【21】 A)3 B)0 C)9 D)-12

        (22) 以下的for迴圈 【22】 。

        for(x=0,y=0; (y!=123)&&(x<4); x + + );

        【22】A) 是無限迴圈 B)迴圈次數不定 C)執行4次 D)執行3次

        (23) 設有語句char a='\72';則變數a 【23】 。

        【23】A)包含1個字元 B)包含2個字元 C)包含3個字元 D)說明不合法

        (24) 以下程式的輸出結果是 【24】 。

        # include <stdio.h>

        # include <math..h>

        main()

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

        float x=10..5 , y=4.0 , z;

        z=(a+b)/c+sqrt((double)y)*1.2/c+x;

        pritnf("%f\n",z); }

        【24】A) 14.000000 B) 015.400000 C) 13.700000 D) 14.900000

        (25) sizeof(double)是 【25】 。

        【25】 A)一種函數調用 B)一個雙精確度型運算式

        C)一個整型運算式 D)一個不合法的運算式

        (26) C語言中 【26】 。

        【26】 A)不能使用do-while語句構成的迴圈

        B)do-while語句構成的迴圈必須用break語句才能退出

        C)do-while語句構成的迴圈,當while語句中的運算式值為非零時結束迴圈

        D)do-while語句構成的迴圈,當while語句中的運算式值為零時結束迴圈

        (27) 以下程式的輸出結果是 【27】 。

        # include <stdio.h>

        # include <string.h>

        main()

        { char str[12]={'s','t','r','i','n','g'};

        printf("%d\n",strlen(str)); }

        【27】 A) 6 B) 7 C) 11 D) 12

        (28) 以下程式的輸出結果是 【28】 。

        # include <stdio.h>

        main()

        { int a=2,c=5;

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

        【28】A) a=%2,b=%5 B) a=2,b=5 C) a=%%d,b=%%d D) a=%d,b=%d

        (29) 以下程式的輸出結果是 【29】 。

        # include<stdio.h>

        main()

        { int a ,b,d=241;

        a=d/100%9;

        b=(-1)&&(-1);

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

        【29】 A) 6,1 B) 2,1 C) 6,0 D) 2,0

        (30) 以下程式的輸出結果是 【30】 。

        # include <stdio.h>

        main()

        { int i;

        for ( i=1;i<=5;i + + ) {if ( i%2 ) printf("*");

        else continue; printf("#");}

        printf("$\n"); }

        【30】 A) *#*#*#$ B) #*#*#*$ C) *#*#$ D) #*#*$

        (31) 以下for語句構成的迴圈執行了 【31】 次。

        # include <stdio.h>

        # define N 2

        # define M N+1

        # define NUM (M+1)*M/2

        main()

        { int i , n=0;

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

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

        printf("\n"); }

        【31】 A) 5 B) 6 C) 8 D) 9

        (32) 設有以下語句,則 【32】 不是對a數組元素的正確引用,其中0≤i<10。

        int a[10]={0,1,2,3,4,5,6,7,8,9}, *p=a;

        【32】 A) a[p-a] B) *(&a[i]) C) p[i] D) *(*(a+i))

        (33) 有以下程式:

        # include <stdio.h>

        # define N 6

        main()

        { char c[N]; int i=0;

        for ( ;i<N ; c[i]=getchar () , i + + );

        for ( i=0 ; i<N ; putchar(c[i]) , i + + ); }

        輸入以下三行,每行輸入都是在第一列上 開始,<CR>代表一個斷行符號符:

        a<CR>

        b<CR>

        cdef<CR>

        程式的輸出結果是 【33】 。

        【33】 A) abcdef B) a C) a D) a

        b b b

        c cd cdef

        d

        e

        f

        (34) 以下程式調用findmax函數求數組中值最大的元素在數組中的下標,請選擇填空。

        # include <stdio.h>

        findmax ( s , t , k )

        int *s , t , *k;

        { int p; for(p=0,*k=p;p<t;p + + )

        if ( s[p] > s[*k] )_________; }

        main()

        { int a[10] , i , k ;

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

        findmax ( a,10,&k );

        printf ( "%d,%d\n" , k , a[k] ); }

        【34】 A) k=p B) *k=p-s C) k=p-s D) *k=p

        (35) 有以下程式:

        #include<stdio.h>

        union pw

        { int i; char ch[2]; } a;

        main()

        { a.ch[0]=13; a.ch[1]=0; printf("%d\n",a.i); }

        程式的輸出結果是 【35】 。(注意: ch[0]在低位元組,ch[1]在高位元組。)

        【35】 A) 13 B) 14 C) 208 D) 209

        (36) 有以下程式:

        # include<stdio.h>

        main()

        { int c;

        while((c=getchar())!='\n')

        { switch(c-'2')

        { case 0:

        case 1: putchar(c+4);

        case 2: putchar(c+4);break;

        case 3: putchar(c+3);

        case 4: putchar(c+2);break; } }

        printf("\n"); }

        從第一列開始輸入以下資料,<CR>代表一個斷行符號符。

        2743<CR>

        程式的輸出結果是 【36】 。

        【36】 A) 668977 B) 668966 C) 6677877 D) 6688766

        (37) 以下程式的輸出結果為 【37】 。

        main()

        { char *alpha[6]={"ABCD","IJKL","MNOP","QRST","UVWX"};

        char **p; int i;

        p=alpha;

        for(i=0;i<4;i + + ) printf("%s",p[i]); printf("\n");

        }

        【37】A) ABCDEFGHIJKL B) ABCD C) ABCDEFGHIJKLMNOP D) AEIM

        (38) 以下程式的輸出結果是 【38】 。

        # include<stdio.h>

        # define FUDGE(y) 2.84+y

        # define PR(a) printf("%d",(int)(a))

        # define PRINT1(a) PR(a);putchar('\n')

        main()

        {int x=2; PRINT1(FUDGE(5)*x); }

        【38】 A) 11 B) 12 C) 13 D) 15

        (39) 以下程式的輸出結果是 【39】 。

        # include<stdio.h>

        main()

        { int i=1,j=3;

        printf("%d",i + + );

        { int i=0; i+=j*2; printf("%d,%d",i,j); }

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

        【39】 A) 1,6,3,1,3 B) 1,6,3,2,3 C) 1,6,3,6,3 D) 1,7,3,2,3

        (40) 以下程式的輸出結果是 【40】 。

        # include <stdio.h>

        main()

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

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

        func(a,b)

        int a,b;

        { static int m=0,i=2;

        i+=m+1; m=i+a+b; return(m); }

        【40】 A) 8,17 B) 8,16 C) 8,20 D) 8,8

        (41) 設有以下語句:

        char str[4][12]={"aaa","bbbb","ccccc","dddddd"},

        *strp[4];

        int i;

        for(i=0;i<4;i + + )strp[i]=str[i];

         【41】 不是對字串的正確引用,其中0≤k<4。

        【41】 A) strp B) str[k] C) strp[k] D) *strp

        (42) 設有以下語句:

        char str1[]="string",str2[8],*str3,*str4="string";

        則 【42】 不是對庫函數strcpy的正確調用,此庫函數用業複製字串。

        【42】 A) strcpy(str1,"HELLO1"); B) strcpy(str2,"HELLO2");

       

        C) strcpy(str3,"HELLO3"); D) strcpy(str4,"HELLO4");

        (43) C語言中形參的預設儲存類別是 【43】 。

        【43】A)自動(auto) B)靜態(static) C)寄存器(register) D)外部(extern)

        (44) 設有以下語句:

        struct st {int n; struct st *next;};

        static struct st a[3]={5,&a[1],7,&a[2],9,'\0'},*p;

        p=&a[0];

        則運算式 【44】 的值是6。

        【44】 A)p + + ->n B) p->n + + C) (*p).n + + D) + + p->n

        (45) 以下四個程式中, 【45】 不能對兩個整型變數的值進行交換。

        【45】A)# include <stdio.h>

        main()

        { int a=10,b=20; swap(&a,&b);

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

        }

        swap(p,q)

        int *p,*q;

        {

        int *t;

        t=(int )malloc(sizeof(int));

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

     

B) # include <stdio.h>

        main()

        {

        int a=10,b=20;

        swap(&a,&b);

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

        }

        swap(p,q)

        int p,q;

        {

        int *t;

        t=*p;*p=*q;*q=t;

        }

     

C) # include <stdio.h>

        main()

        {

        int *a,*b;

        *a=10,*b=20;

        swap(a,b);

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

        }

        swap(p,q)

        int *p,*q;

        {

        int t;

        t=*p;*p=*q;*q=t;

        }

     

D) # include<stdio.h>

        main()

        {

        int a=10,b=20;

        int x=&a,y=&b;

        swap(x,y);

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

        }

        swap(p,q)

        int *p,*q;

        {

        int t;

        t=*p;*p=*q;*q=t;

        }

     

二、填空題(每空2分,共40分)

        請將每空的正確答案寫在答題卡1-20序號後的橫線上,答在試卷上不得分。

        (1) 結構化程式設計所規定的三種基本控制結構是 【1】 結構.選擇結構和迴圈結構。

        (2) 在七位ASCII碼中,除了表示數字、英文大小寫字母外,還有 【2】 個其它符號。

        (3) 把B盤BAS子目錄下第三個字元為A,且沒有副檔名的全部檔案拷貝到C盤ABC子目錄下的命令是 【3】 。

        (4) 微機中ROM的中文意義是 【4】 儲存空間。

        (5) 啟動MS-DOS系統後,能自動執行的批次檔是 【5】 .BAT。

        (6) 設當前盤為C盤,刪除B盤FOX子目錄中副檔名為.TXT的所有檔案的命令是 【6】 。

        (7) 十進位數53轉換為十六進位數為 【7】 。

        (8) 資料庫管理系統常見的資料模型有層次、網狀和 【8】 三種。

        (9) 買來一張新盤後,在存入檔案前,必須進行 【9】 處理。

        (10) 在微機中,字元的比較就是對它們的 【10】 碼進行比較。

        (11) 以下C語言程式將磁碟中的一個檔案複製到另一個檔案中,兩個檔案名稱在命令列中給出。

        #include <stdio.h>

        main(argc,argv)

        int argc; char *argv[];

        { FILE *f1,*f2; char ch;

        if(argc< 【11】 )

        { printf("Parameters missing!\n"); exit(0); }

        if( ((f1=fopen(argv[1],"r")) = = NULL)||((f2=fopen(argv[2],"w"))

        = = NULL))

        { printf("Can not open file!\n"); exit(0);}

        while( 【12】 )fputc(fgetc(f1),f2);

        fclose(f1); fclose(f2); }

        (12) 以下程式中的trap函數是一個用梯形法求定積分的通用函數。梯形法求定積分的公式為:

        n-1 a-b

        s=((f(a)+f(b))/2+∑ f(a+i*h))*h , h=|----|

        i=1 n

        其中,n為積分小區間數。以下程式調用trap函數求定積分,被積函數是:

        f(x)=x*x+3*x+2,且n=1000,a=0,b=4。

        #include <stdio.h>

        3include <math.h>

        double trap(fun,a,b)

        double (*fun)(),a,b;

        { double t,h;

        int i,n=1000;

        t=0.5*((*fun)(a)+(*fun)(b)); h=fabs(a-b)/(double)(n);

        for(i=1;i<=n-1;i + + ) t=t+ 【13】 ;

        t=t*h; return(t); }

        double mypoly(x)

        double x;

        { return(x*x+3.0*x+2.0); }

        main()

        { double y,(*pf)(); pf= 【14】 ;

        y=trap(pf,0.0,4.0); printf("%f\n",y); }

        (13) 以下程式求a數組中的所有素數的和,函數isprime用來判斷自變數是否為素數。素數是只能被1和本身整除且大於1的自然數。

        #include <stdio.h>

        main()

        { int i,a[10],*p=a,sum=0;

        printf("Enter 10 num:\n");

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

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

        if(isprime(*(p+ 【15】 )) = = 1){ printf("%d",*(a+i)); sum+=*(a+i);

        }

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

        isprime(x)

        int x;

        { int i; for(i=2;i<=x/2;i + + )

        if(x%i = = 0) return (0); 【16】 ; }

        (14) 以下程式調用invert函數按逆序重新放置a數組中元素的值。a數組中的值在main函數中讀入。

        #include <stdio.h>

        #define N 10

        invert(s,i,j)

        int *s,i,j;

        { int t; if(i<j){ t=*(s+i); *(s+j)=(s+j);*(s+j)=t; invert(s, 【17】 ,j-1);}}

        main()

        { int a[N],i;

        for(i=0;i<N;i + + ) scanf("%d",a+ 【18】 );

        invert(a,0,N-1);

        for(i=0;i<N;i + + ) printf("%d",a[i]);

        printf("\n"); }

        (15) 以下程式建立了一個帶有頭結點的單向鏈表,鏈表結點中的資料通過鍵盤輸入,當輸入資料為-1時,表示輸入結束(鏈表頭結點的data 域不放資料,表空的條件是ph->next

        = = NULL).

        #include<stdio.h>

        struct list { int data;struct list *next;};

        【19】 creatlist()

        { struct list *p,*q,*ph; int a;

        ph=(struct list *) malloc(sizeof(struct list));

        p=q=ph; printf("Input an integer number,enter -1 to end:\n");

        scanf("%d",&a):

        while(a!=-1)

        { p=(struct list *)malloc(sizeof(struct list));

        p->data=a; q->next=p; 【20】 =p; scanf("%d",&a); }

        p->next='\0'; return(ph); }

        main()

        { struct list *head; head=creatlist();}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.