首頁 考試吧論壇 Exam8視線 考試商城 網(wǎng)絡(luò)課程 模擬考試 考友錄 實用文檔 求職招聘 論文下載
2013中考 | 2013高考 | 2013考研 | 考研培訓(xùn) | 在職研 | 自學(xué)考試 | 成人高考 | 法律碩士 | MBA考試
MPA考試 | 中科院
四六級 | 職稱英語 | 商務(wù)英語 | 公共英語 | 托福 | 托業(yè) | 雅思 | 專四專八 | 口譯筆譯 | 博思
GRE GMAT | 新概念英語 | 成人英語三級 | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學(xué)習(xí) |
零起點(diǎn)法語 | 零起點(diǎn)德語 | 零起點(diǎn)韓語
計算機(jī)等級考試 | 軟件水平考試 | 職稱計算機(jī) | 微軟認(rèn)證 | 思科認(rèn)證 | Oracle認(rèn)證 | Linux認(rèn)證
華為認(rèn)證 | Java認(rèn)證
公務(wù)員 | 報關(guān)員 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 期貨從業(yè)資格 | 司法考試 | 法律顧問 | 導(dǎo)游資格
報檢員 | 教師資格 | 社會工作者 | 外銷員 | 國際商務(wù)師 | 跟單員 | 單證員 | 物流師 | 價格鑒證師
人力資源 | 管理咨詢師 | 秘書資格 | 心理咨詢師 | 出版專業(yè)資格 | 廣告師職業(yè)水平 | 駕駛員
網(wǎng)絡(luò)編輯 | 公共營養(yǎng)師 | 國際貨運(yùn)代理人 | 保險從業(yè)資格 | 電子商務(wù)師 | 普通話 | 企業(yè)培訓(xùn)師
營銷師
衛(wèi)生資格 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 執(zhí)業(yè)護(hù)士
會計從業(yè)資格考試會計證) | 經(jīng)濟(jì)師 | 會計職稱 | 注冊會計師 | 審計師 | 注冊稅務(wù)師
注冊資產(chǎn)評估師 | 高級會計師 | ACCA | 統(tǒng)計師 | 精算師 | 理財規(guī)劃師 | 國際內(nèi)審師
一級建造師 | 二級建造師 | 造價工程師 | 造價員 | 咨詢工程師 | 監(jiān)理工程師 | 安全工程師
質(zhì)量工程師 | 物業(yè)管理師 | 招標(biāo)師 | 結(jié)構(gòu)工程師 | 建筑師 | 房地產(chǎn)估價師 | 土地估價師 | 巖土師
設(shè)備監(jiān)理師 | 房地產(chǎn)經(jīng)紀(jì)人 | 投資項目管理師 | 土地登記代理人 | 環(huán)境影響評價師 | 環(huán)保工程師
城市規(guī)劃師 | 公路監(jiān)理師 | 公路造價師 | 安全評價師 | 電氣工程師 | 注冊測繪師 | 注冊計量師
化工工程師 | 材料員
繽紛校園 | 實用文檔 | 英語學(xué)習(xí) | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲
計算機(jī)等級考試
您現(xiàn)在的位置: 考試吧(Exam8.com) > 計算機(jī)等級考試 > 計算機(jī)二級 > C語言 > 模擬試題 > 正文

2012年全國計算機(jī)等級二級C語言模擬試題及答案(9)

2012年全國計算機(jī)等級二級C語言模擬試題及答案。

  第09套:

  給定程序中,函數(shù)fun的功能是將不帶頭節(jié)點(diǎn)的單向鏈表結(jié)點(diǎn)數(shù)據(jù)域中的數(shù)據(jù)從小到大排序。即若原鏈表結(jié)點(diǎn)數(shù)據(jù)域從頭至尾的數(shù)據(jù)為:10、4、2、8、6,排序后鏈表結(jié)點(diǎn)數(shù)據(jù)域從頭至尾的數(shù)據(jù)為:2、4、6、8、10。

  請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除, 使程序得出正確的結(jié)果。

  注意:源程序存放在考生文件夾下的BLANK1.C中。

  不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

  給定源程序:

  #include

  #include

  #define N 6

  typedef struct node {

  int data;

  struct node *next;

  } NODE;

  void fun(NODE *h)

  { NODE *p, *q; int t;

  p = h;

  while (p) {

  q = __1__ ;

  while (__2__)

  { if (p->data > q->data)

  { t = p->data; p->data = q->data; q->data = t; }

  q = q->next;

  }

  p = __3__ ;

  }

  }

  NODE *creatlist(int a[])

  { NODE *h,*p,*q; int i;

  h=NULL;

  for(i=0; i

  { q=(NODE *)malloc(sizeof(NODE));

  q->data=a[i];

  q->next = NULL;

  if (h == NULL) h = p = q;

  else { p->next = q; p = q; }

  }

  return h;

  }

  void outlist(NODE *h)

  { NODE *p;

  p=h;

  if (p==NULL) printf("The list is NULL!\n");

  else

  { printf("\nHead ");

  do

  { printf("->%d", p->data);

  p=p->next; }

  while(p!=NULL);

  printf("->End\n");

  }

  }

  main()

  { NODE *head;

  int a[N]= {0, 10, 4, 2, 8, 6 };

  head=creatlist(a);

  printf("\nThe original list:\n");

  outlist(head);

  fun(head);

  printf("\nThe list after inverting :\n");

  outlist(head);

  }

  解題思路:

  本題是考察使用鏈表方法,使用兩重while循環(huán)語句,對鏈表的結(jié)點(diǎn)數(shù)據(jù)進(jìn)行升序排列。

  第一處:由于外循環(huán)變量使用p指針,內(nèi)循環(huán)變量使用q指針,所以q指向必須指向p的next

  指針,因此應(yīng)填寫:p.next。

  第二處:判斷內(nèi)循環(huán)q指針是否結(jié)束,所以應(yīng)填:q。

  第三處:外循環(huán)控制變量p指向自己的next指針,所以應(yīng)填:p.next。

  ***************************************************

  給定程序MODI1.C中函數(shù)fun的功能是: 將s所指字符串中的字母轉(zhuǎn)換為按字母

  序列的后續(xù)字母(但Z轉(zhuǎn)換為A, z轉(zhuǎn)換為a),其它字符不變。

  請改正函數(shù)fun中指定部位的錯誤, 使它能得出正確的結(jié)果。

  注意: 不要改動main函數(shù), 不得增行或刪行, 也不得更改程序的結(jié)構(gòu)!

  給定源程序:

  #include

  #include

  void fun (char *s)

  {

  while(*s!='@')

  { if(*s>='A' & *s<='Z' || *s>='a' && *s<='z')

  { if(*s=='Z') *s='A';

  else if(*s=='z') *s='a';

  else *s += 1;

  }

  (*s)++;

  }

  }

  main()

  { char s[80];

  printf("\n Enter a string with length < 80. :\n\n "); gets(s);

  printf("\n The string : \n\n "); puts(s);

  fun ( s );

  printf ("\n\n The Cords :\n\n "); puts(s);

  }

  解題思路:

  第一處: 使用while循環(huán)來判斷字符串指針s是否結(jié)束,所以應(yīng)改為:while(*s)。

  第二處: 取字符串指針s的下一個位置,所以應(yīng)改為:s++;。

  ***************************************************

  請編寫函數(shù)fun, 函數(shù)的功能是: 移動一維數(shù)組中的內(nèi)容; 若數(shù)組中有n個整數(shù), 要求把下標(biāo)從0到p(含p,p小于等于n-1)的數(shù)組元素平移到數(shù)組的最后。

  例如, 一維數(shù)組中的原始內(nèi)容為: 1,2,3,4,5,6,7,8,9,10; p的值為3。移動

  后, 一維數(shù)組中的內(nèi)容應(yīng)為: 5,6,7,8,9,10,1,2,3,4。

  注意:部分源程序在文件PROG1.C中。

  請勿改動主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。

  給定源程序:

  #include

  #define N 80

  void fun(int *w, int p, int n)

  {

  }

  main()

  { int a[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};

  int i,p,n=15;

  printf("The original data:\n");

  for(i=0; i

  printf("\n\nEnter p: ");scanf("%d",&p);

  fun(a,p,n);

  printf("\nThe data after moving:\n");

  for(i=0; i

  printf("\n\n");

  NONO();

  }

  解題思路:

  本題是考察一維數(shù)組的操作。

  1. 定義一維數(shù)組中間變量b,把n值后面數(shù)組中的內(nèi)容存入b中。

  2. 再把m前的數(shù)組中的內(nèi)容存入b中。

  3. 最后把數(shù)組b的內(nèi)容依次存放到w中。

  參考答案:

  void fun(int *w, int p, int n)

  {

  int i, j = 0, b[N] ;

  for(i = p + 1 ; i < n ; i++) b[j++] = w[i] ;

  for(i = 0 ; i <= p ; i++) b[j++] = w[i] ;

  for(i = 0 ; i < n ; i++) w[i]= b[i] ;

  }

1 2  下一頁

  相關(guān)推薦:

  2012年計算機(jī)等級考試二級VB重點(diǎn)知識匯總

  2012年計算機(jī)等考四級數(shù)據(jù)庫工程師備考筆記匯總

  2012年下半年計算機(jī)等級考試報名時間及入口匯總

文章搜索
計算機(jī)等級考試欄目導(dǎo)航
版權(quán)聲明:如果計算機(jī)等級考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系800@exam8.com,我們將會及時處理。如轉(zhuǎn)載本計算機(jī)等級考試網(wǎng)內(nèi)容,請注明出處。