2004年4月計算機(jī)等級考試二級C筆試試卷(含參考答案)

字號:


    2004年4月全國計算機(jī)等級考試二級C筆試試卷
    全國計算機(jī)等級考試二級筆試試卷
    基礎(chǔ)知識和C語言程序設(shè)計
    一、 選擇題((1)~(40)每題1分,(41)~(50)每題2分,共60分)
    1、 1MB等于()
    A)1000字節(jié) B)1024字節(jié) C)1000╳1000字節(jié) D)1024╳1024字節(jié)
    2、 與十六進(jìn)制數(shù)200等值得十進(jìn)制數(shù)為()
    A)256 B)512 C)1024 D)2048
    3、 所謂“*機(jī)“是指()
    A)單片機(jī)B)單板機(jī) C)不裝備任何軟件的計算機(jī) D)只裝備操作系統(tǒng)的計算機(jī)
    4、 能將高級語言編寫的源程序轉(zhuǎn)換為目標(biāo)程序的是()
    A)鏈接程序 B)解釋程序 C)編譯程序 D)編輯程序
    5、 在64為計算機(jī)中,一個字長所占字節(jié)數(shù)為()
    A)64 B)8 C)4 D)1
    6、 在Windows環(huán)境下,當(dāng)一個應(yīng)用程序窗口被最小化后,該應(yīng)用程序()
    A)繼續(xù)在后臺運(yùn)行 B)繼續(xù)在前臺運(yùn)行
    C)終止運(yùn)行 D)暫停運(yùn)行
    7、在Windows環(huán)境下,能實現(xiàn)窗口移動的操作是()
    A)用鼠標(biāo)拖動窗口中的任何部位 B)用鼠標(biāo)拖動窗口的邊框
    C)用鼠標(biāo)拖動窗口的控制按鈕 D)用鼠標(biāo)拖動窗口的標(biāo)題欄。
    8、 在Windows環(huán)境下,PrintScreen鍵的作用是()
    A)打印當(dāng)前窗口的內(nèi)容 B)打印屏幕內(nèi)容
    C)復(fù)制屏幕到剪貼板 D)復(fù)制當(dāng)前窗口到剪貼板
    9、 Internet的通信協(xié)議是()
    A)TCP/IP B)BBS C)WWW D)FTP
    10、 下列敘述中正確的是()
    A)計算機(jī)病毒只感染可執(zhí)行文件
    B)計算機(jī)病毒只感染文本文件
    C)計算機(jī)病毒只能通過軟件復(fù)制的方式進(jìn)行傳播
    D)計算機(jī)病毒可以通過網(wǎng)絡(luò)或讀寫磁盤方式進(jìn)行傳播
    11、一個算法應(yīng)該具有“確定性”等5個特性,下面對另外4個特性的描述中錯誤的是
    A)有零個或多個輸入 B)有零個或多個輸出
    C)有窮性 D)可行性
    12、 以下敘述中正確的是()
    A)C語言的源程序不必通過編譯就可以直接運(yùn)行
    B)C語言中的每條可執(zhí)行語句最終都將被轉(zhuǎn)換成二進(jìn)制的機(jī)器指令
    C)C源程序經(jīng)編譯形成的二進(jìn)制代碼可以直接運(yùn)行
    D)C語言中的函數(shù)不可以單獨進(jìn)行編譯
    13、 以下符合C語言語法的實型常量是()
    A)1.2E0.5 B)3.14.159E C).5E-3 D)E15
    14、 以下4組用戶定義標(biāo)識符中,全部合法的一組是()
    A)_main B)If C)txt D)int
     enclude -max REAL k_2
     sin turbo 3COM _001
    15、 若以下選項中的變量已正確定義,則正確的賦值語句是()
    A)x1=26.8%3 B)1+2=x2 C)x3=0x12 D)x4=1+2=3;
    16、 設(shè)有以下定義
    int a=0;
    double b=1.25;
    char c=’A’;
    #define d 2
    則下面語句中錯誤的是()
    A)a++; B)b++ C)c++; D)d++;
    17、 設(shè)有定義:float a=2,b=4,h=3;,以下C語言表達(dá)式與代數(shù)式 計算結(jié)果不相
    符的是()
    A)(a+b)*h/2 B)(1/2)*(a+b)*h C)(a+b)*h*1/2 D)h/2*(a+b)
    18、 有以下程序
    main( )
    {
     int x=102,y=012;
     printf(“%2d,%2d\n”,x,y);
    } 執(zhí)行后輸出結(jié)果是()
    A)10,01 B002,12 C)102,10 D)02,10
    19、以下4個選項中,不能看作一條語句的是()
    A){;} B)a=0,b=0,c=0; C)if(a>0); D)if(b==0) m=1;n=2;
    20、設(shè)有定義:int a,*pa=&a;以下scanf語句中能正確為變量a讀入數(shù)據(jù)的是()
    A)scanf(“%d”,pa); B)scanf(“%d”,a);
    C)scanf(“%d”,&pa); D)scanf(“%d”,*pa);
    21、以下程序段中與語句k=a>b?(b>c?1:0):0;功能等價的是()
    A)if((a>b)&&(b>c)) k=1; B) if((a>b)||(b>c)) k=1
     else k=0;
    C)if(a<=b) k=0; D)if(a>b) k=1;
     else if(b<=c) k=1; else if(b>c) k=1;
     else k=0;
    22、有以下程序
    main( )
    { char k; int I;
     for(i=1;i<3;i++)
     { scanf(“%c”,&k);
     switch(k)
     { case ‘0’: printf(“another\n”);
     case ‘1’: printf(“number\n”);
     }
     }
    }
    程序運(yùn)行時,從鍵盤輸入:01<回車>,程序執(zhí)行后的輸出結(jié)果是()
    A) another B)another C)another D)number
     number number number number
     another number
    23、有以下程序
    main( )
    { int x=0,y=5,z=3;
     while(z-->0&&++x<5) y=y-1;
     printf(“%d,%d,%d\n”,x,y,z);
    } 程序執(zhí)行后的輸出結(jié)果是()
    A)3,2,0 B)3,2,-1 C)4,3,-1 D)5,-2,-5
    24、有以下程序
    main( )
    { int i,s=0;
     for(i=1;i<10;i+=2) s+=i+1;
     printf(“%d\n”,s);
    } 程序執(zhí)行后的輸出結(jié)果是()
    A)自然數(shù)1~9的累加和 B)自然數(shù)1~10的累加和
    C)自然數(shù)1~9中的奇數(shù)之和 D)自然數(shù)1~10中的偶數(shù)之和
    25、有以下程序
    main( )
    { int i,n=0;
     for(i=2;i<5;i++)
     { do
     { if(i%3) continue;
     n++;
     } while(!i);
     n++;
     }
     printf(“n=%d\n”,n);
    } 程序執(zhí)行后的輸出結(jié)果是()
    A)n=5 B)n=2 C)n=3 D) n=4
    26、若程序中定義了以下函數(shù)
     double myadd(double a,double b)
     { return (a+b);}
    并將其放在調(diào)用語句之后,則在調(diào)用之前應(yīng)該對該函數(shù)進(jìn)行說明,以下選項中錯誤的說明是()
    A)double myadd(double a,b); B)double myadd(double,double);
    C)double myadd(double b,double a); D)double myadd(double x,double y);
    27、有以下程序
     char fun(char x , char y)
     { if(x     return y;
     }
     main( )
     { int a=’9’,b=’8’,c=’7’;
     printf(“%c\n”,fun(fun(a,b),fun(b,c)));
     } 程序的執(zhí)行結(jié)果是()
    A)函數(shù)調(diào)用出錯 B)8 C)9 D)7
    28、設(shè)有定義:int n=0,*p=&n,**q=&p;則以下選項中,正確的賦值語句是()
    A)p=1; B)*q=2; C)q=p; D)*p=5;
    29、有以下程序
    void f(int v , int w)
    { int t;
     t=v;v=w;w=t;
    }
    main( )
    { int x=1,y=3,z=2;
     if(x>y) f(x,y);
     else if(y>z) f(y,z);
     else f(x,z);
     printf(“%d,%d,%d\n”,x,y,z);
    } 執(zhí)行后輸出結(jié)果是()
    A)1,2,3 B)3,1,2 C)1,3,2 D)2,3,1
    30、有以下程序段
    int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;
    b=p[5];
    b中的值是()
    A)5 B)6 C)8 D)9
    31、有以下程序
    main( )
    { char a[]=”abcdefg”,b[10]=”abcdefg”;
     printf(“%d %d\n”,sizeof(a),sizeof(b));
    } 執(zhí)行后輸出結(jié)果是()
    A)7 7 B)8 8 C)8 10 D)10 10
    32、有以下程序
    void swap1(int c[])
    { int t;
     t=c[0];c[0]=c[1];c[1]=t;
    }
    void swap2(int c0,int c1)
    { int t;
     t=c0;c0=c1;c1=t;
    }
    main( )
    { int a[2]={3,5},b[2]={3,5};
     swap1(a); swap2(b[0],b[1]);
     printf(“%d %d %d %d\n”,a[0],a[1],b[0],b[1]);
    } 其輸出結(jié)果是()
    A)5 3 5 3 B) 5 3 3 5 C)3 5 3 5 D)3 5 5 3
    33、有以下程序
    void sum(int *a)
    { a[0]=a[1];}
    main( )
    { int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
     for(i=2;i>=0;i--) sum(&aa[i]);
     printf(“%d\n”,aa[0]);
    } 執(zhí)行后的輸出結(jié)果是()
    A)4 B)3 C)2 D)1
    34、有以下程序
    int f(int b[][4])
    { int i,j,s=0;
     for(j=0;j<4;j++)
     { i=j;
     if(i>2) i=3-j;
     s+=b[i][j];
     }
     return s;
    }
    main( )
    { int a[4][4]={{1,2,3,4},{0,2,4,5},{3,6,9,12},{3,2,1,0}};
     printf(“%d\n”,f(a));
    } 執(zhí)行后的輸出結(jié)果是()
    A)12 B)11 C)18 D)16
    35、有以下定義
    #include
    char a[10],*b=a;
    不能給數(shù)組a輸入字符串的語句是()
    A)gets(a) B)gets(a[0]) C)gets(&a[0]); D)gets(b);
    36、有以下程序
    main( )
    { char *p[10]={“abc”,”aabdfg”,”dcdbe”,”abbd”,”cd”};
     printf(“%d\n”,strlen(p[4]));
    } 執(zhí)行后輸出結(jié)果是()
    A)2 B)3 C)4 D)5
    37、有以下程序
    int a=2;
    int f(int *a)
    {return (*a)++;}
    main( )
    { int s=0;
     { int a=5;
     s+=f(&a);
     }
     s+=f(&a);
     printf(“%d\n”,s);
    } 執(zhí)行后輸出結(jié)果是()
    A)10 B)9 C)7 D)8
     38、有以下程序
     #define f(x) x*x
     main( )
     { int i;
     i=f(4+4)/f(2+2);
     printf(“%d\n”,i);
     } 執(zhí)行后輸出結(jié)果是()
    A)28 B)22 C)16 D)4
    39、設(shè)有以下語句
    typedef struct S
    { int g; char h;} T;
    則下面敘述中正確的是()
    A)可用S定義結(jié)構(gòu)體變量 B)可以用T定義結(jié)構(gòu)體變量
    C)S是struct類型的變量 D)T是struct S類型的變量
    40、有以下程序
    struc STU{
     char name[10];
     int num;
     };
    void f1(struct STU c)
    { struct STU b={“LiSiGuo”,2042};
     c=b;
    }
    void f2(struct STU *c)
    { struct STU b={“SunDan”,2044};
     *c=b;
    }
    main( )
    { struct STU a={“YangSan”,2041},b={“WangYin”,2043};
     f1(a);f2(&b);
     printf(“%d %d\n”,a.num,b.num);
    } 執(zhí)行后的輸出結(jié)果是()
    A)2041 2044 B)2041 2043 C)2042 2044 D)2042 2043
    41、有以下程序
    main( )
    { unsigned char a,b;
     a=4|3;
     b=4&3;
     printf(“%d %d\n”,a,b(;
    } 執(zhí)行后輸出結(jié)果是()
    A) 7 0 B)0 7 C)1 1 D)43 0
    42、下面程序的功能是輸出以下形式的金字塔圖案是:
     *
     ***
     *****
     *******
    main( )
    { int i,j;
     for(i=1;i<=4;i++)
     { for(j=1;j<=4-i;j++) printf(“ “);
     for(j=1;j<=_______;j++) printf(“*”);
     printf(“\n”);
    }
    } 在下劃線處應(yīng)填入的是()
    A)i B)2*i-1 C)2*i+1 D)i+2
    43、有以下程序
    void sort(int a[],int n)
    { int i,j,t;
     for(i=0;i     for(j=i+2;j     if(a[i]}
    main()
    { int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
     sort(aa,10);
     for(i=0;i<10;i++) printf(“%d”,aa[i]);
     printf(“\n”);
    } 其輸出結(jié)果是()
    A)1,2,3,4,5,6,7,8,9,10, B)10,9,8,7,6,5,4,3,2,1,
    C)9,2,7,4,5,6,3,8,1,10, D)1,10,3,8,5,6,7,4,9,2,
    44、以下程序段中,不能正確賦字符串(編譯時系統(tǒng)會提示錯誤)的是()
    A) char s[10]=”abcdefg”; B) char t[]=”abcdefg”,*s=t;
    C) char s[10];s=”abcdefg”; D) char s[10];strcpy(s,”abcdefg”);
    45、有以下程序
    #include
    main(int argc ,char *argv[ ])
    { int i,len=0;
     for(i=1;i printf(“5d\n”,len);
    } 經(jīng)編譯鏈接后生成的可執(zhí)行文件是ex.exe,若運(yùn)行時輸入以下帶參數(shù)的命令行
    ex abcd efg h3 k44
    執(zhí)行后輸出結(jié)果是()
    A)14 B)12 C)8 D)6
    46、有以下程序
    void f(int a[],int i,int j)
    { int t;
     if(i     { t=a[i]; a[i]=a[j];a[j]=t;
     f(a,i+1,j-1);
     }
    }
    main( )
    { int i,aa[5]={1,2,3,4,5};
     f(aa,0,4);
     for(i=0;i<5;i++) printf(“%d,”,aa[i]); printf(“\n”);
    } 執(zhí)行后輸出結(jié)果是()
    A)5,4,3,2,1, B)5,2,3,4,1, C)1,2,3,4,5, D)1,2,3,4,5,
    47、有以下程序
    struct STU
    { char name[10];
     int num;
     int Score;
    };
    main( )
    { struct STU s[5]={{“YangSan”,20041,703},{“LiSiGuo”,20042,580},
     {“wangYin”,20043,680},{“SunDan”,20044,550},
     {“Penghua”,20045,537}},*p[5],*t;
     int i,j;
     for(i=0;i<5;i++) p[i]=&s[i];
     for(i=0;i<4;i++)
     for(j=i+1;j<5;j++)
     if(p[i]->Score>p[j]->Score)
     { t=p[i];p[i]=p[j];p[j]=t;}
     printf(“5d %d\n”,s[1].Score,p[1]->Score);
    } 執(zhí)行后輸出結(jié)果是()
    A)550 550 B)680 680 C)580 550 D)580 680
    48、有以下程序
    #include
    struct NODE{
     int num;
     struct NODE *next;
     };
    main( )
    { struct NODE *p,*q,*r;
     int sum=0;
     p=(struct NODE *)malloc(sizeof(struct NODE));
     q=(struct NODE *)malloc(sizeof(struct NODE));
     r=(struct NODE *)malloc(sizeof(struct NODE));
    p->num=1;q->num=2;r->num=3;
    p->next=q;q->next=r;r->next=NULL;
    sum+=q->next->num;sum+=p->num;
    printf(“%d\n”,sum);
    } 執(zhí)行后的輸出結(jié)果是
    A)3 B)4 C)5 D)6
    49、有以下程序
    #include
    main( )
    { FILE *fp; int i,k=0,n=0;
     fp=fopen(“d1.dat”,”w”);
     for(i=1;i<4;i++) fprintf(fp,”%d”,i);
     fclose(fp);
     fp=fopen(“d1.dat”,”r”);
     fscanf(fp,”%d%d”,&k,&n); printf(“%d %d\n”,k,n);
     fclose(fp);
    } 執(zhí)行后輸出結(jié)果是()
    A)1 2 B)123 0 C)1 23 D) 0 0
    50、有以下程序(提示:程序中fseek(fp,-2L*sizeof(int),SEEK_END);語句的作用是使位置指針從文件尾向前移2*sizeof(int)字節(jié))
    #include
    main( )
    { FILE *fp; int i,a[4]={1,2,3,4},b;
     fp=fopen("data.dat","wb");
     for(i=0;i<4;i++) fwrite(&a[i],sizeof(int),1,fp);
     fclose(fp);
     fp=fopen("data.dat","rb");
     fseek(fp,-2L*sizeof(int).SEEK_END);
     fread(&b,sizeof(int),1,fp);/*從文件中讀取sizeof(int)字節(jié)的數(shù)據(jù)到變量b中*/
     fclose(fp);
     printf("%d\n",b);
    } 執(zhí)行后輸出結(jié)果是()
    A)2 B)1 C) 4 D)3
    二、填空題(每空2分,共40分)
    1、E-mail地址由用戶名和域名兩部分組成,這兩部分的分隔符為【1】。
    2、計算機(jī)網(wǎng)絡(luò)分為廣域網(wǎng)和局域網(wǎng),因特網(wǎng)屬于【2】。
    3、從Windows環(huán)境進(jìn)入MS-DOS方式后,返回Windows環(huán)境的DOS命令為【3】。
    4、在Windows環(huán)境下,只要在“開始”菜單中單擊【4】選項,就可以查閱最近打開過的文檔清單。
    5、計算機(jī)的運(yùn)算速度可以用MIPS來描述,1MIPS是指每秒執(zhí)行【5】條指令。
    6、已知字符A的ACSII碼值為65,以下語句的輸出結(jié)果是【6】
     char ch=’B’;
     printf(“%c %d\n”,ch,ch);
    7、有以下語句段
     int n1=10,n2=20;
     printf(“【7】”,n1.n2);
    要求按以下格式輸出n1和n2的值,每個輸出行從第一列開始,請?zhí)羁铡?BR>    n1=10
    n2=20
    8、有以下程序
    main( )
    { int t=1,i=5;
     for(;i>=0;i--) t*=i;
     printf(“%d\n”,t);
    } 執(zhí)行后輸出結(jié)果是【8】。
    9、有以下程序
    main( )
    { int n=0,m=1,x=2;
     if(!n) x-=1;
     if(m) x-=2;
     if(x) x-=3;
     printf(“%d\n”,x);
    } 執(zhí)行后輸出結(jié)果是【9】。
    10、有以下程序
    #include
    main( )
    { char ch1,ch2; int n1,n2;
     ch1=getchar(); ch2=getchar();
     n1=ch1-‘0’; n2=n1*10+(ch2-‘0’);
     printf(“%d\n”,n2);
    } 程序運(yùn)行時輸入:12<回車>,執(zhí)行后輸出結(jié)果是【10】。
    11、有以下程序
    void f( int y,int *x)
    {y=y+*x; *x=*x+y;}
    main( )
    { int x=2,y=4;
     f(y,&x);
     printf(“%d %d\n”,x,y);
    } 執(zhí)行后輸出的結(jié)果是【11】。
    12、函數(shù)fun的功能是計算xn
    double fun(double x,int n)
    { int i; double y=1;
     for(i=1;i<=n;i++) y=y*x;
     return y;
    } 主函數(shù)中已經(jīng)正確定義m,a,b變量并賦值,并調(diào)用fun函數(shù)計算:m=a4+b4-(a+b)3。實現(xiàn)這一計算的函數(shù)調(diào)用語句為【12】。
    13、下面rotate函數(shù)的功能是:將n行n列的矩陣A轉(zhuǎn)置為A’,例如:
     1 2 3 4 1 5 9 13
     5 6 7 8 2 6 10 14
    當(dāng) A= 9 10 11 12 則 A’= 3 7 11 15
     13 14 15 16 4 8 12 16
    請?zhí)羁?BR>    #define N 4
    void rotate(int a[][N])
    { int i,j,t;
     for(i=0;i     for(j=0;【13】;j++)
     { t=a[i][j];
     【14】;
     a[j][i]=t;
     }
    }
    14、以下sstrcpy( )函數(shù)實現(xiàn)字符串復(fù)制,即將t所指字符串復(fù)制到s所指向內(nèi)存空間中,形成一個新的字符串s。請?zhí)羁铡?BR>    void sstrcpy(char *s,char *t)
    { while(*s++=【15】);}
    main( )
    { char str1[100],str2[]=”abcdefgh”;
     sstrcpy(str1,str2);
     printf(“%s\n”,str1);
    }
    15、下列程序的運(yùn)行結(jié)果是:【16】
    #include
    char *ss(char *s)
    { return s+strlen(s)/2;}
    main( )
    { char *p,*str=”abcdefgh”;
     p=ss(str); printf(“%s\n”,p);
    }
    16、下面程序的運(yùn)行結(jié)果是:【17】
    int f( int a[], int n)
    { if(n>1) return a[0]+f(&a[1],n-1);
     else return a[0];
    }
    main ( )
    { int aa[3]={1,2,3},s;
     s=f(&aa[0],3); printf(“%d\n”,s);
    }
    17、以下程序中給指針p分配三個double型動態(tài)內(nèi)存單元,請?zhí)羁铡?BR>    # include
    main ( )
    { double *p;
     p=(double *) malloc(【18】);
     p[0]=1.5;p[1]=2.5;p[2]=3.5;
     printf(“%f%f%f\n”,p[0],p[1],p[2]);
    }
    18、以下程序的運(yùn)行結(jié)果是【19】
    # include
    typedef struct student{
     char name[10];
     long sno;
     float score;
     }STU;
    main( )
    { STU a={“zhangsan”,2001,95},b={“Shangxian”,2002,90},c={“Anhua”,2003,95},d,*p=&d;
     d=a;
     if(strcmp(a.name,b.name)>0) d=b;
     if(strcmp(c.name,d.name)>0) d=c;
     printf(“%ld%s\n”,d.sno,p->name);
    }
    19、以下sum函數(shù)的功能是計算下列級數(shù)之和。
    S=1+x+x2/2!+x3/3!+........+xn/n!
    請給函數(shù)中的各變量正確賦初值。
    double sum( double x, int n )
    { int i; double a,b,s;
     【20】
     for( i=1;i<=n;i++)
     { a=a*x; b=b*i; s=s+a/b; }
     return s;
    }
    附參考答案
    01~10:DBCCB ADCAD
    11~20:BBCAC DBCDA
    21~30: ACBDD ADDCD
    31~40: CBADB ACADA
    41~50: ABCCD ACBBD
    填空題:
    1、@
    2、廣域網(wǎng)
    3、EXIT或exit
    4、文檔
    5、百萬條或一百萬條或1000000條
    6、B 66
    7、n1=%d\nn2=%d
    8、0
    9、-4
    10、12
    11、8 4
    12、fun(a,4)+fun(b,4)-fun(a+b,3);
    13、j<=i
    14、a[i][j]=a[j][i]
    15、*t++
    16、6
    17、efgh
    18、3*sizeof(double)
    19、2002Shangxian
    20、a=1.0;b=1.0;s=1.0;