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

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

簡介: 代理模式,是結構型的設計模式。用於為其它對象提供一種代理以控制對這個對象的訪問。 目標對象可以是遠程的對象、創建開銷大的對象或需要安全控制的對象,並且可以在不改變目標對象的情況下添加一些額外的功能。 適用場景: 調用端不想或不能直接調用的對象。 服務端不想讓調用端看到核心實現。 優點: 服務 ...


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

      (1)下列關於棧敘述正確的是

  A)棧頂元素最先能被刪除                    B)棧頂元素最後才能被刪除

  C)棧底元素永遠不能被刪除                 D)以上三種說法都不對

  (2)下列敘述中正確的是

  A)有一個以上根結點的數據結構不一定是非線性結構

  B)只有一個根結點的數據結構不一定是線性結構

  C)迴圈鏈表是非線性結構

  D)雙向鏈表是非線性結構

  (3)某二叉樹共有7個結點,其中葉子結點只有1個,則該二叉樹的深度為(假設根結點在第1層)

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

  (4)在軟體開發中,需求分析階段產生的主要文檔是

  A)軟體集成測試計劃                                B)軟體詳細設計說明書

  C)用戶手冊                                              D)軟體需求規格說明書

  (5)結構化程式所要求的基本結構不包括

  A)順序結構            B)GOTO跳轉        C)選擇(分支)結構   D)重覆(迴圈)結構

  (6)下列描述中錯誤的是

  A)系統總體結構圖支持軟體系統的詳細設計

  B)軟體設計是將軟體需求轉換為軟體表示的過程

  C)數據結構與資料庫設計是軟體設計的任務之一

  D)PAD圖是軟體詳細設計的表示工具

  (7)負責資料庫中查詢操作的資料庫語言是

  A)數據定義語言  B)數據管理語言        C)數據操縱語言  D)數據控制語言

  (8)一個教師可講授多門課程,一門課程可由多個教師講授。則實體教師和課程間的聯繫是

  A)1:1聯繫              B)1:m聯繫                 C)m:1聯繫             D)m:n聯繫

       (9)有三個關係R、S和T如下:

        則由關係R和S得到關係T的操作是

  A)自然連接            B)交                          C)除                       D)並

  (10)定義無符號整數類為UInt,下麵可以作為類UInt實例化值的是

  A)-369                    B)369                        C)0.369                D)整數集合{1,2,3,4,5}

  (11)電腦高級語言程式的運行方法有編譯執行和解釋執行兩種,以下敘述中正確的是

  A)C語言程式僅可以編譯執行

  B)C語言程式僅可以解釋執行

  C)C語言程式既可以編譯執行又可以解釋執行

  D)以上說法都不對

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

  A)C語言的可執行程式是由一系列機器指令構成的

  B)用C語言編寫的源程式不能直接在電腦上運行

  C)通過編譯得到的二進位目標程式需要連接才可以運行

  D)在沒有安裝C語言集成開發環境的機器上不能運行C源程式生成的.exe文件

  (13)以下選項中不能用作C程式合法常量的是

  A)1,234                  B)'123'                        C)123                     D)"\x7G"

  (14)以下選項中可用作C程式合法實數的是

  A).1e0                    B)3.0e0.2              C)E9                      D)9.12E

  (15)若有定義語句:int a=3,b=2,c=1;,以下選項中錯誤的賦值表達式是

  A)a=(b=4)=3;          B)a=b=c+1;                C)a=(b=4)+c;          D)a=1+(b=c=4);

  (16)有以下程式段

      char name[20];

      int num;

      scanf("name=%s num=%d",name,&num);

  當執行上述程式段,並從鍵盤輸入:name=Lili num=1001<回車>後,name的值為

  A)Lili                                                   B)name=Lili

  C)Lili num=                                         D)name=Lili num=1001

  (17)if語句的基本形式是:if (表達式) 語句,以下關於“表達式”值的敘述中正確的是

  A)必須是邏輯值                                       B)必須是整數值

       C)必須是正數                                          D)可以是任意合法的數值

      (18)有以下程式

  #include  <stdio.h>

  main()

  {  int x=011;

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

  }

  程式運行後的輸出結果是

  A) 9                        B) 10                         C) 11                       D) 12

  (19)有以下程式

  #include  <stdio.h>

  main()

  {  int s;

    scanf("%d",&s);

    while (s>0)

    {  switch(s)

      {  case1:printf("%d",s+5);

         case2:printf("%d",s+4); break;

         case3:printf("%d",s+3);

         default:printf("%d",s+1);break;

       }

       scanf("%d",&s);

    }

  }

  運行時,若輸入1 2 3 4 5 0<回車>,則輸出結果是

  A)6566456              B)66656                    C)66666                  D)6666656

  (20)有以下程式段

  int i,n;

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

  {   n=rand()%5;

      switch (n)

      {  case 1:

         case 3:printf("%d\n",n); break;

         case 2:

         case 4:printf("%d\n",n); continue;

         case 0:exit(0);

      }

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

  }

  以下關於程式段執行情況的敘述,正確的是

  A)for迴圈語句固定執行8次

  B)當產生的隨機數n為4時結束迴圈操作

  C)當產生的隨機數n為1和2時不做任何操作

  D)當產生的隨機數n為0時結束程式運行

  (21)有以下程式

  #include  <stdio.h>

  main()

  {  char s[]="012xy\08s34f4w2";

     int i,n=0;

     for(i=0;s[i]!=0;i++)

        if(s[i]>='0' && s[i]<='9')  n++;

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

  }

  程式運行後的輸出結果是

  A)0                         B)3                           C)7                         D)8

      (22)若i和k都是int類型變數,有以下for語句

       for(i=0,k=-1;k=1;k++)  printf("*****\n");

  下列關於語句執行情況的敘述中正確的是

  A)迴圈體執行兩次                               B)迴圈體執行一次

  C)迴圈體一次也不執行                        D)構成無限迴圈

  (23)有以下程式

  #include  <stdio.h>

  main()

  {  char b,c;   int i;

     b='a';  c='A';

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

     {  if(i%2) putchar(i+b);

        else putchar(i+c);

     }

           printf("\n");

  }

  程式運行後的輸出結果是

  A)ABCDEF             B)AbCdEf                 C)aBcDeF               D)abcdef

  (24)設有定義:double x[10],*p=x;,以下能給數組x下標為6的元素讀入數據的正確語句是

  A)scanf("%f",&x[6]);                                B)scanf("%lf",*(x+6));

  C)scanf("%lf",p+6);                                 D)scanf("%lf",p[6]);

  (25)有以下程式(說明:字母A的ASCII碼值是65)

  #include  <stdio.h>

  void fun(char *s)

  {  while(*s)

     {  if(*s%2)  printf("%c",*s);

        s++;

     }

   }

  main()

  {  char a[]="BYTE";

     fun(a);   printf("\n");

  }

  程式運行後的輸出結果是

  A)BY                      B)BT                         C)YT                      D) YE

  (26)有以下程式段

  #include  <stdio.h>

  main()

  {   …

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

      …

  }

  以下敘述中正確的是

  A)此while語句將無限迴圈

  B) getchar()不可以出現在while語句的條件表達式中

  C)當執行此while語句時,只有按回車鍵程式才能繼續執行

  D)當執行此while語句時,按任意鍵程式就能繼續執行

      (27)有以下程式

  #include  <stdio.h>

  main()

  {  int x=1,y=0;

      if(!x) y++;

     else if(x==0)

        if (x) y+=2;

        else y+=3;

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

  }

  程式運行後的輸出結果是

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

       (28)若有定義語句:char s[3][10],(*k)[3],*p;,則以下賦值語句正確的是

  A)p=s;                    B)p=k;                       C)p=s[0];                D)k=s;

  (29)有以下程式

  #include  <stdio.h>

  void fun(char *c)

  {  while(*c)

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

        c++;

      }

  }

  main()

  {  char s[81];

     gets(s);  fun(s);  puts(s);

  }

  當執行程式時從鍵盤上輸入Hello Beijing<回車>,則程式的輸出結果是

  A)hello beijing         B)Hello Beijing          C)HELLO BEIJING    D)hELLO Beijing

  (30)以下函數的功能是:通過鍵盤輸入數據,為數組中的所有元素賦值。

  #include  <stdio.h>

  #define N 10

  void fun(int x[N])

  {  int i=0;

     while(i<N)  scanf(“%d”,________);

  }

  在程式中下劃線處應填入的是

  A)x+i                      B)&x[i+1]             C)x+(i++)               D)&x[++i]

  (31)有以下程式

  #include  <stdio.h>

  main()

  {  char a[30],b[30];

     scanf("%s",a);

     gets(b);

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

  }

  程式運行時若輸入:

  how are you? I am fine<回車>

  則輸出結果是

  A)how are you?                                         B)how

         I am fine                                                   are you? I am fine

  C)how are you? I am fine                           D)how are you?

  (32)設有如下函數定義

  int fun(int k)

     {   if (k<1) return 0;

      else if(k==1) return 1;

      else return fun(k-1)+1;

  }

  若執行調用語句:n=fun(3);,則函數fun總共被調用的次數是

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

  (33)有以下程式

  #include  <stdio.h>

  int fun (int x,int y)

  {  if (x!=y) return ((x+y)/2);

     else return (x);

  }

  main()

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

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

  }

  程式運行後的輸出結果是

  A)3                         B)6                           C)8                         D)12

       (34)有以下程式

  #include  <stdio.h>

  int fun()

  {   static int x=1;

      x*=2;

      return x;

  }

  main()

  {  int i,s=1;

     for(i=1;i<=3;i++) s*=fun();

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

  }

  程式運行後的輸出結果是

  A)0                         B) 10                         C)30                       D)64

  (35)有以下程式

  #include  <stdio.h>

  #define  S(x) 4*(x)*x+1

  main()

  {   int k=5,j=2;

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

  }

  程式運行後的輸出結果是

  A) 28                       B) 33                         C) 143                    D) 197

  (36)設有定義:struct { char mark[12];int num1;double num2;} t1,t2;,若變數均已正確賦初值,則以下語句中錯誤的是

A)t1=t2;                                                   B)t2.num1=t1.num1;

C)t2.mark=t1.mark;                                D)t2.num2=t1.num2;

  (37)有以下程式

  #include  <stdio.h>

  struct ord

  {  int x,y;}dt[2]={1,2,3,4};

  main()

  {

      struct ord  *p=dt;

      printf("%d,",++(p->x));   printf("%d\n",++(p->y));

  }

  程式運行後的輸出結果是

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

  (38)有以下程式

     #include  <stdio.h>

  struct S

  { int a,b;}data[2]={10,100,20,200};

  main()

  {  struct S p=data[1];

     printf("%d\n",++(p.a));

  }

  程式運行後的輸出結果是

  A)10                       B)11                          C)20                       D)21

  (39)有以下程式

  #include  <stdio.h>

  main()

  {  unsigned char a=8,c;

     c=a>>3;

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

  }

  程式運行後的輸出結果是

  A) 0                        B)1                           C)16                       D) 32

  (40)設fp已定義,執行語句fp=fopen("file","w");後,以下針對文本文件file操作敘述的選項中正確的是

  A)寫操作結束後可以從頭開始讀              B)只能寫不能讀

  C)可以在原有內容後追加寫                      D)可以隨意讀和寫 

二、程式填空題(18分)

下列給定程式中,函數fun的功能是:統計所有小於等於n(n>2)的素數的個數,素數的個數作為函數值返回。

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

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

試題程式:

#include <stdio.h>
int fun(int  n)
{  int  i,j, count=0;
   printf("\nThe prime number between 3 to %d\n", n);
   for (i=3; i<=n; i++) {
/**********found**********/
      for (___1___; j<i; j++)
/**********found**********/
         if (___2___%j == 0)
            break;
/**********found**********/
      if (___3___>=i)
      {  count++; printf( count%15?  "%5d":"\n%5d",i);  }
   }
   return  count;
}
int main()
{  int  n=20, r;
   r = fun(n);
   printf("\nThe number of prime is  :  %d\n", r);
   return 0;
}

三、程式修改題(18分)

下列給定程式中函數fun的功能是:用選擇法對數組中的n個元素進行升序排列。
請修改程式中的錯誤,使它能得出正確的結果。
註意:部分源程式在文件MODI1.C中,不得增行和刪行,也不得更改程式的結構!

試題程式:

#include <stdio.h>
#define  N  20
void  fun(int a[], int n)
{ int i, j, t, p;
  for (j = 0 ;j < n-1 ;j++) {
/************found************/
    p = j
    for (i = j;i < n; i++)
      if(a[i] < a[p])
/************found************/
        p = j;
    t = a[p] ; a[p] = a[j] ; a[j] = t;
  }
}
int main()
{
  int a[N]={9,6,8,3,-1},i, m = 5;
  printf("排序前的數據:") ;
  for(i = 0;i < m;i++) printf("%d ",a[i]); printf("\n");
  fun(a,m);
  printf("排序後的數據:") ;
  for(i = 0;i < m;i++) printf("%d ",a[i]); printf("\n");
  return 0;
}

四、程式設計題:

請編寫函數fun,其功能是:計算並輸出下列多項式的值,

S=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)-1/2n)

例如,若主函數從鍵盤給n輸入8後,則輸出為S=0.662872。

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

試題程式:

#include <stdio.h>
double fun(int  n)
{

}
int main()
{ int  n;  double  s;
  void NONO( );
  printf("Input n:  ");  scanf("%d",&n);
  s=fun(n);
  printf("\ns=%f\n",s);
  NONO();
  return 0;
}
void NONO()
{
  int n, i ; double s ;
  for(i = 0 ; i < 10 ; i++) {
      s = fun(n) ;
     }
}
一、選擇題
( 1)~(10)  :ABDDB   ACDCB
(11)~(20) : ADAAA  ADBAD 
(21)~(30) : BDBCD   CACCC 
(31)~(40) : BBBDC  CBDBB
二、程式填空題
    (1) j-2
    (2) i
    (3) j
三、程式改錯題
    (1)  p=j;
    (2)  p=i;
四、程式設計題
    int i;
    double s=0.0;
    for (i=1;i<=n;i++)
        s=s+1.0/(2*i-1)-1.0/(2*i);
    return s;
參考答案:
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、事件委派 1.理解DOM事件流 事件流描述的是從頁面中接收事件的順序。事件發生時會在元素節點之間按照特定的順序傳播,這個傳播過程即DOM事件流。 DOM事件流分為三個階段: 捕獲階段:從上往下 當前目標階段 冒泡階段:從下往上 事件流如下圖所示: 註意事項: JavaScript代碼中只能執行捕 ...
  • 一.商品列表 1.1 獲取數據 首先能夠進入商品列表的途徑 傳的數據有 瞭解了這個之後就可以開始了,先創建分支 創建編譯模式,並分配初試數據 這個時候就可以獲取數據了 需要的數據 所以在發起請求之前需要整理一下數據,先定義數據 整理數據發起請求 1.2 渲染頁面 ==註意我們可以去定義一個預設的圖片 ...
  • 本文主要記錄 Vue.js 中的 router 管理,涉及如何使用路由實現單頁面應用(SPA)的組件切換,以及路由的一些 API 操作。 ...
  • 1、表單語法 method: 規定如何發送表單數據常用值:get post 在實際網頁開發中通常採用post方式提交表單數據 action: 表示向何處發送表單數據 <form method="post" action="result.html"> <p>名字:<input name="name" ...
  • 1、列表 無序列表和定義列表在網頁製作中應用非常廣泛 什麼是列表: 列表就是信息資源的一種展示形式。它可以使信息結構化和條理化,並以列表的樣式顯示出來,以便瀏覽者能更快捷地獲得相應的信息。 無序列表 <!--ul 聲明無序列表--> <ul> <!--li 聲明列表項--> <li>語文</li> ...
  • 面向對象之魔法方法 一、魔法方法的概念 ​ 定義在類中的雙下方法都可以稱為魔法方法 ​ 不需要人為調用,在特定的條件下會自動觸發,並運行 ​ 類似於__ init__, 當我在使用類產生對象時,會自動觸發 class Foo: # 雙下init就是魔法方法的一種 def __init__(self, ...
  • 職責鏈模式是一種與策略模式類似的設計模式,都是使用多個對象去處理同一個請求。不同的是,職責鏈模式針對的一條鏈路上的所有對象,而不是“非此即彼”的關係。 ...
  • 派生方法實戰 ​ 以上我們學習了通過super()的方法可以重寫父類、額外添加父類中的數據,下麵將通過實戰案例來講述super()方法來重寫、添加父類中的功能代碼 需求: 1、使用json格式,序列化字典d d = { 't1': datetime.date.today(), 't2': datet ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...