電腦等級考試二級C語言模擬試卷(一)

来源:https://www.cnblogs.com/cs-whut/archive/2022/11/08/16868067.html
-Advertisement-
Play Games

簡介: 註冊樹模式,屬於結構型的設計模式。一種很簡單的設計模式 適用場景: 類似IOC。寫一個龐大的類庫的時候,為了方便各種資源的歸納,可以統一放到一棵樹上。 優點: 把一個個游兵散將一樣的對象進行統一管理。 另外可以根據項目的業務場景自定義層級。 缺點: 增加項目的複雜性。 純粹的註冊樹寫法,缺少 ...


一、選擇題(每小題1分,共40分)

(1)數據的存儲結構是指    

A)存儲在外存中的數據

B)數據所占的存儲空間量

C)數據在電腦中的順序存儲方式

D)數據的邏輯結構在電腦中的表示

(2)下列關於棧的描述中,錯誤的是    

A)棧是先進後出的線性表 

B)棧只能順序存儲

C)棧具有記憶作用

D)對棧的插入與刪除操作中,不需要改變棧底指針

(3)對於長度為n的線性表,在最壞情況下,下列各排序法所對應的比較次數中正確的是  

A)冒泡排序為n/2                                      B)冒泡排序為n

C)快速排序為n                                         D)快速排序為n(n-1)/2

(4)對長度為n的線性表進行順序查找,在最壞情況下所需要的比較次數為  

A)log2n                    B) n/2                       C) n                             D) n+1

(5)下列對於線性鏈表的描述中正確的是        

A)存儲空間不一定是連續,且各元素的存儲順序是任意的

B)存儲空間不一定是連續,且前件元素一定存儲在後件元素的前面

C)存儲空間必須連續,且前件元素一定存儲在後件元素的前面

D)存儲空間必須連續,且各元素的存儲順序是任意的

(6)下列對於軟體的描述中正確的是        

A)軟體測試的目的是證明程式是否正確

B)軟體測試的目的是使程式運行結果正確

C)軟體測試的目的是儘可能多地發現程式中的錯誤

D)軟體測試的目的是使程式符合結構化原則

(7)為了使模塊儘可能獨立,要求    

A)模塊的內聚程式要儘量高,且各模塊間的耦合程式要儘量強

B)模塊的內聚程式要儘量高,且各模塊間的耦合程式要儘量弱

C)模塊的內聚程式要儘量低,且各模塊間的耦合程式要儘量弱

D)模塊的內聚程式要儘量低,且各模塊間的耦合程式要儘量強

(8)下列描述中正確的是        

A)程式就是軟體

B)軟體開發不受電腦系統的限制

C)軟體既是邏輯實體,又是物理實體

D)軟體是程式、數據與相關文檔的集合

(9)數據獨立性是資料庫技術的重要特點之一。所謂數據獨立性是指  

A)數據與程式獨立存放

B)不同的數據被存放在不同的文件中

C)不同的數據只能被對應的應用程式所使用

D)數據與程式間的互不依賴性,包括數據的物理獨立性和數據的邏輯獨立性

(10)用樹形結構表示實體之間聯繫的模型是    

A)關係模型               B)網狀模型            C)層次模型                 D)面向對象模型

(11)以下選項中可作為C語言合法常量的是    

A)-80                         B)-080                  C)-8e1.0                      D)-80.0e

(12)以下敘述中,正確的是        

A)用C程式實現的演算法必須要有輸入和輸出操作

B)用C程式實現的演算法可以沒有輸出但必須要有輸入

C)用C程式實現的演算法可以沒有輸入但必須要有輸出

D)用C程式實現的演算法可以既沒有輸入也沒有輸出

(13)以下不能定義為用戶標識符的是  

A)Main                     B)_0                      C)_int                         D)sizeof

(14)以下選項中,不能作為合法常量的是    

A)1.234e04               B)1.234e0.4            C)1.234e+4                 D)1.234e0

(15)數字字元0的A SCII值為48,若有以下程式

main()

{   char  a='1',b='2';

     printf("%c,",b++);

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

}

程式運行後的輸出結果是      

A)2,2                        B)3,2                     C)2,50                        D)50,2

(16)有以下程式

main()

{   int m=12,n=34;

     printf("%d%d",m++,++n);

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

}

程式運行後的輸出結果是    

A)12353514                B)12353513             C)12343514                  D)12343513

(17)有定義語句:int  b; char  c[10];  ,則正確的輸入語句是    

A)scanf("%d%s",&b,&c);                              B)scanf("%d%s",&b,c);

C)scanf("%d%s",b,c);                                  D)scanf("%d%s",b,&c);

(18)有以下程式

main()

{   int  m,n,p;

    scanf("m=%dn=%dp=%d",&m,&n,&p);

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

}

若想從鍵盤上輸入數據,使變數m中的值為123,n中的值為456,p中的值為789,則正確的輸入是  

A)m=123n=456p=789                                 B)m=123  n=456  p=789

C)m=123,n=456,p=789                                D)123   456   789

(19)有以下程式

main()

{

   int  a,b,d=25;

   a=d/10%9;

   b=a&&(-1);

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

}

程式運行後的輸出結果是      

A)2,0                         B)2,1                       C)6,0                            D)6,1

(20)有以下程式

main()

{     int  i=1,j=2,k=3;

      if (i++==1&&(++j==3||k++==3))

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

}

程式運行後的輸出結果是  

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

(21)若整型變數a、b、c、d中的值依次為:1、4、3、2。則條件表達式a<b?a:c<d?c:d的值   

A)1                            B)2                          c)3                               D)4

(22)有以下程式

main()

{   char  a[7]="a0\0a0\0";int  i,j;

     i=sizeof(a);  j=strlen(a);

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

}

程式運行後的輸出結果是     

A)2    2                      B)6    2                    C)7    2                         D)7    6

 (23)有以下程式

main()

{

   int p[8]={11,12,13,14,15,16,17,18},i=0,j=0;

   while(i++<7)  if(p[i]%2)   j+=p[i];

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

}

程式運行後的輸出結果是    

A)42                          B)45                        C)56                             D)60

 (24)以下能正確定義一維數組的選項是    

A)int  a[5]={0,1,2,3,4,5};                               B)char  a[]={0,1,2,3,4,5};

C)char  a={'A','B','C'};                                   D)int  a[5]="0123";

(25)有以下程式

int  f1(int  x,int  y) {return  x>y?x:y;}

int  f2(int  x,int  y) {return  x>y?y:x;}

main()

{   int  a=4,b=3,c=5,d=2,e,f;

     e=f2(f1(a,b),f1(c,d));

    f=f1(f2(a,b),f2(c,d));

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

}

程式運行後的輸出結果是                 

A)2,5                       B)3,4                    C)4,3                         D)5,2

(26)有以下程式

void  f(int  *x,int  *y)

{     int  t;

      t=*x;*x=*y;*y=t;

}

main()

{   int  a[8]={1,2,3,4,5,6,7,8},i,*p,*q;

     p=a;q=&a[7];

     while(p<q)

    {

      f(p,q);

      p++;

      q--;

    }

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

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

}

程式運行後的輸出結果是                       

A)8,2,3,4,5,6,7,1,                     B)5,6,7,8,1,2,3,4,

C)1,2,3,4,5,6,7,8,                     D)8,7,6,5,4,3,2,1,

(27)有以下程式

main()

{

   int  a[3][3],*p,i;

   p=&a[0][0];

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

       p[i]=i;

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

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

}

程式運行後的輸出結果是              

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

(28)以下敘述中錯誤的是    

A)對於double類型數組,不可以直接用數組名對數組進行整體輸入或輸出

B)數組名代表的是數組所占存儲區的首地址,其值不可改變

C)當程式執行中,數組元素的下標超出所定義的下標範圍時,系統將給出“下標越界”的出錯信息

D)可以通過賦初值的方式確定數組元素的個數

(29)有以下程式

#define  N  20

fun(int  a[],int  n,int m)

{   int i,j;

     for(i=m;i>=n;i--)

        a[i+1]=a[i];

}

main()

{

   int i,a[N]={1,2,3,4,5,6,7,8,9,10};

   fun(a,2,9);

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

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

}

程式運行後的輸出結果是   

A)10234                     B)12234                   C)12334                       D)12344

(30)有以下程式

main()

{

   int  c=35;  printf("%d\n",c&c);

}

程式運行後的輸出結果是                            

A) 0                          B) 1                        C) 35                           D) 70

(31)程式中若有如下的說明和定義語句

char  fun(char  *);

main()

{

   char  *s="one",a[5]={0},(*f1)()=fun,ch;

   ……

}

以下選項中,對函數fun的正確調用語句是                    

A)(*f1)(a);               B)*f1(*s);                C)fun(&a);                    D)ch=*f1(s)

(32)以下敘述中,正確的是                  

A)預處理命令行必須位於源文件的開頭

B)在源文件的一行上可以有多條預處理命令

C)巨集名必須用大寫字母表示

D)巨集替換不占用程式的運行時間

(33)若有以下說明和定義

union  dt

{

    int  a;   char  b;  double  c;

}data;

以下敘述中錯誤的是                          

A)data的每個成員起始地址都相同

B)變數data所占記憶體位元組數與成員c所占位元組數相等

C)程式段:data.a=5; printf("%f\n",data.c);輸出結果為5.000000

D)data可以作為函數的實參

(34)以下語句或語句組中,能正確進行字元串賦值的是        

A)char  *sp;  *sp="right!";                            B)char s[10];  s="right!";

C)char  s[10];  *s="right!";                            D)char  *sp="right!";

(35)有以下程式

main()

{

   int  a=1,b;

   for(b=1;b<=10;b++)

   {

      if(a>=8)   break;

      if(a%2==1)  {  a+=5;  continue;}

      a-=3;

   }

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

}

程式運行後的輸出結果是              

A)3                            B)4                          C)5                              D)6

(36)有以下程式

main()

{

   char  s[]="159",*p;

   p=s;

   printf("%c",*p++);

   printf("%c",*p++);

}

程式運行後的輸出結果是              

A)12                          B)15                        C)16                             D)59

(37)有以下函數

fun(char  *a,char  *b)

{

   while((*a!='\0')&&(*b!='\0')&&(*a==*b))

   {   a++;   b++;}

   return  (*a-*b);

}

該函數的功能是                                       

A)計算a和b所指字元串的長度之差

B)將b所指字元串複製到a所指字元串中

C)將b所指字元串連接到a所指字元串後面

D)比較a和b所指字元串的大小

(38)有以下結構體說明和變數定義,如圖所示,指針pqr分別指向此鏈表中三個連續結點。

struct  node

{

     int data;  

     struct node  *next;

} *p,*q,*r;

現要將q所指結點從鏈表中刪除,同時保持鏈表的連續,以下不能完成指定操作的語句是  

 

A)p->next=q->next;                                      B)p->next=p->next->next;

C)p->next=r;                                                D)p=q->next;

(39)以下與函數fseek(fp,0L,SEEK_SET)有相同作用的是              

A)feof(fp)                  B)ftell(fp)                C)fgetc(fp)                    D)rewind(fp)

(40)有以下程式

#include  "stdio.h"

void WriteStr(char  *fn,char  *str)

{

   FILE  *fp;

   fp=fopen(fn,"W");

   fputs(str,fp);

   fclose(fp);

}

main()

{

   WriteStr("t1.dat","start");

   WriteStr("t1.dat","end");

}

程式運行後,文件t1.dat中的內容是                        

A)start                        B)end                      C)startend                     D)endrt

 二、程式填空題(18分)

函數fun的功能是:計算

 

的前n項。若x=2.5,函數值為12.182340。

請在程式的下畫線處填入正確的內容並把下畫線刪除,使程式得出正確的結果。

註意:部分源程式在文件BLANK1.C中。不得增行或刪行,也不得更改程式的結構。

試題程式:

#include  <stdio.h>
double fun(double  x, int  n)
{  
    double  f, t;  int  i;
    f = 1.0;
/**********found**********/
    t=___1___;
/**********found**********/
    for(i=___2___;i<n;i++)
    {
/**********found**********/
       t*=x/___3___;
       f += t;
    }
    return  f;
}
int main()
{  
    double  x, y;
    x=2.5;
    y = fun(x, 12);
    printf("The result is :\n");
    printf("x=%-12.6f,y=%-12.6f\n", x, y);
    return 0;
}

三、程式修改題(18分)

下列給定程式中fun函數功能是:將n個無序整數從小到大排序。請改正程式中的錯誤,使它能得出正確的結果。註意:部分源程式在文件MODI1.C中,不得增行或刪行,也不得更改程式的結構!

試題程式:

#include <stdio.h>
#include <stdlib.h>
fun ( int  n, int  *a )
{  
    int  i, j, p, t;
    for ( j = 0; j<n-1 ; j++ )
    {  
       p = j;
/************found************/
       for (i=j+1; i<n-1 ; i++ )
         if ( a[p]>a[i] )
/************found************/
             t=i;
       if ( p!=j )
       { t = a[j]; a[j] = a[p]; a[p] = t; }
    }
}
void putarr( int  n,  int  *z )
{  
    int  i;
    for ( i = 1; i <=  n; i++, z++ )
    {  
        printf( "%4d", *z );
        if ( !( i%10 ) )  printf( "\n" );
    } 
    printf("\n");
}
int main()
{  
    int  aa[20]={9,3,0,4,1,2,5,6,8,10,7}, n=11;
    printf( "Before sorting %d numbers:\n", n ); 
    putarr( n, aa );
    fun( n, aa );
    printf( "After sorting %d numbers:\n", n ); 
    putarr( n, aa );
    return 0;
}

四、程式設計題(24分)

編寫函數int fun(int lim, int aa[MAX]),其功能是求出小於或等於lim的所有素數並放在aa數組中,並返回所求出的素數的個數。

註意:部分源程式在文件PROG1.C中。請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括弧中填入你編寫的若幹語句。

試題程式:

#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#define MAX 100
int fun(int lim, int aa[MAX])
{

}
void main()
{
   FILE *wf;
   int limit,i,sum;
   int aa[MAX];
   system("CLS");
   printf("輸入一個整數:");
   scanf("%d",&limit);
   sum=fun(limit,aa);        
   for(i=0;i<sum;i++)
   {
      if(i%10==0&&i!=0)    /*每行輸出10個數*/
         printf("\n ");
      printf("%5d ",aa[i]);
   }
   wf=fopen("out.dat","w");
   sum=fun(15,aa);        
   for(i=0;i<sum;i++)
   {
      if(i%10==0&&i!=0)    /*每行輸出10個數*/
         fprintf(wf,"\n");
      fprintf(wf,"%5d ",aa[i]);
   }
   fclose(wf);
}    
一、選擇題
( 1)~(10):D B D C A  C B D D C
(11)~(15):A C D B A  A B A B D
 (21)~(30):A C B B C  D D C C C
(31)~(40):A D C D B  B D D D B
二、程式填空題
(11.0213)i
三、程式改錯題
  (1)錯誤: for (i=j+1; i<n-1 ; i++ )
         正確: for (i=j+1; i<n ; i++ )
  (2)錯誤: t=i;
         正確: p=i; 
四、程式設計題
    int i,j,k=0;
    for (i=2;i<=lim;i++)
    {
        for (j=2;j<i;j++)
            if (i%j==0) break;
        if (j>=i)
            aa[k++]=i;
    }
        return k;
參考答案:
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 故障檢測(Failure Detection)是 Group Replication 的一個核心功能模塊,通過它可以及時識別集群中的故障節點,並將故障節點從集群中剔除掉。如果不將故障節點及時剔除的話,一方面會影響集群的性能,另一方面還會阻止集群拓撲的變更。 下麵結合一個具體的案例,分析 Group ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 在AndroidManifest.xml註冊ACTION事件 <activity android:name="com.test.app.MainActivity" android:configChanges="orientation|ke ...
  • 隊列結構 一.認識隊列 受限的線性結構: 我們已經學習了一種受限的線性結構:棧結構. 並且已經知道這種受限的數據結構對於解決某些特定問題,會有特別的 效果. 下麵,我們再來學習另外一個受限的數據結構:隊列. 隊列(Queue),它是一種受限的線性表,先進先出(FIFO First ln First ...
  • 項目調試的困境 程式開發總會遇到各種各樣的問題,為什麼實際結果和預期結果不一致? 這個時候如果能深入程式內部抽絲剝繭去一探究竟再好不過! 而chrome工具是前端開發的殺手鐧,經常聽到的一句話是: 出問題了?F12看看... 前端調試的手法一般就兩種: 服務端(添加調試代碼) 客戶端(開發者工具) ...
  • 前兩篇文章分享了基於 vite3 vue3 的組件庫基礎工程 *vue3-component-library-archetype* 和用於快速創建該工程的工具 *yyg-cli*,但在中大型的企業級項目中,通常會自主搭建這些腳手架或加速器。優雅哥希望每位前端伙伴能知其所以然,故接下來的文章將進入 *... ...
  • 軟體系統架構設計的目標不在於設計本身,而在於架構設計意圖的傳達。圖形化有助於在團隊間進行高效的信息同步,但不同的圖形化方式需要語義一致性和效率間實現平衡。C4模型通過不同的抽象層級來表達系統的靜態結構,並提供了最小集的抽象建模元素,為設計人員提供了一種低認知負載、易於學習和使用的高效建模方式。 ...
  • 1,設計模式概述 1.1 軟體設計模式的產生背景 "設計模式"最初並不是出現在軟體設計中,而是被用於建築領域的設計中。 1977年美國著名建築大師、加利福尼亞大學伯克利分校環境結構中心主任克裡斯托夫·亞歷山大(Christopher Alexander)在他的著作《建築模式語言:城鎮、建築、構造》中 ...
  • 面向對象 一、三大特征之繼承 python三大特征: 封裝、繼承、多態 三者中繼承最為核心,實際應用多,感受較為直觀 封裝和多態略微抽象 1、繼承的概念 繼承的含義: ​ 在現實生活中,繼承表示人與人之間資源的從屬關係 ​ 例如:兒子繼承父親 ​ 在編程的世界中,繼承表示類與類之間的資源從屬關係 ​ ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...