首頁 考試吧論壇 Exam8視線 考試商城 網(wǎng)絡(luò)課程 模擬考試 考友錄 實用文檔 求職招聘 論文下載
2011中考 | 2011高考 | 2012考研 | 考研培訓(xùn) | 在職研 | 自學(xué)考試 | 成人高考 | 法律碩士 | MBA考試
MPA考試 | 中科院
四六級 | 職稱英語 | 商務(wù)英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT
新概念英語 | 成人英語三級 | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學(xué)習(xí) | 法語 | 德語 | 韓語
計算機等級考試 | 軟件水平考試 | 職稱計算機 | 微軟認(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ò)編輯
衛(wèi)生資格 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 執(zhí)業(yè)護士
會計從業(yè)資格考試會計證) | 經(jīng)濟師 | 會計職稱 | 注冊會計師 | 審計師 | 注冊稅務(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í) | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲
您現(xiàn)在的位置: 考試吧(Exam8.com) > 計算機等級考試 > 計算機二級 > C語言 > 上機題庫 > 正文

05年9月等級考試二級C語言考前上機密卷1

   1.程序填空
  
  給定程序的功能是判斷字符ch是否與串str中的某個字符相同:若相同,什么也不做,若不同,則插在串的最后。
  請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果
  注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
  試題程序:
  #include <stdio.h>
  #include <string.h>
  void fun(char*str, char ch )
  {  while ( *str && *str != ch ) str++;
  if( *str  1  ch )
  { str[0] =ch;
  2  = 0;
  }
  }
  main( )
  {  char s[81], c;
  printf( "\nPlease enter a string:\n" ); gets ( s );
  printf ("\n Please enter the character to search : " );
  c = getcharO;
  fun( 3  ) ;
  printf( "\nThe result is %s\n", s);
  1.程序填空
  【答案】
  (1)!=
  (2)str[1]
  (3)s,c
  【評析】
  (1)fun函數(shù)中先設(shè)置了二個循環(huán)從字符串str中尋找字符ch,如果找到則中斷循環(huán)并保留字符ch的地址,否則一直循環(huán)到串尾"。因此通過判斷*str的內(nèi)容即可判斷是否已找到字符ch。
  (2)如果沒有找到字符ch,則在while循環(huán)后str指針指向串結(jié)束符Ox00,此時應(yīng)將字符ch寫入這里并在下一地址寫入一個串結(jié)束符Ox00,所以應(yīng)該是"str[1]。O;"語句。
  (3)此句是調(diào)用fun()函數(shù),括弧中是其實際參數(shù)。
  
  2.程序修改
  
  給定程序modi.c中,函數(shù)fun的功能是:'根據(jù)形參m的值(2≤m≤9),在m行m列的二維數(shù)組中存放如下所示的數(shù)據(jù),由main()函數(shù)輸出。
  例如,若輸入2    ︳若輸入4
  則輸出:       ︳則輸出:
      1 2     ︳     1 2 3 4
      2 4     ︳     2 4 6 8
             ︳     3 6 9 12
             ︳     4 8 12 16
  請改正程序中的錯誤,使它能得出正確結(jié)果。
  注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
  試題程序:
  #include <stdio.h>
  #include <conio.h>
  #define M 10
  int a[M][M]={0};
  fun(int **a, int m)
  { int j,k;
  for (j=0;j<m;j++)
  for (k=0;k<m;l~++)
  a[j][k]=k*j;
  }
  main()
  {  int i,j,n;
  clrscr0;
  printf("Enter n:");scanf("%d",&n);
  fun(a,n);
  for(i=0;i<n;i++)
  {  forO=O;j<n;j++)
  print f("%4d",a[i] [j] );
  printf("\n");
  }
  2.程序修改
  【答案】
  (1)錯誤:第5行fun(int**a,int m)
  正確:fun(int a[][M],Int m)
  (2)錯誤:第9行 a[j][k]=k*j;
  正確:a[j][k]=(k+1)*(j+1);
  【評析】
  第5行:第二個形參m是用戶輸入的維數(shù),沒有別的名堂,第一個形參是為了指明在函數(shù)fun()中要產(chǎn)生的多維數(shù)組,"**a"是不能正確表示一個多維數(shù)組的,我們應(yīng)當(dāng)使用"int a[M][M]"。
  第9行:循環(huán)體的內(nèi)容是給m維的多維數(shù)組賦值,這個多維數(shù)組在列方向是由1開始的自然數(shù),在行方向上是行首第一數(shù)的n倍數(shù),顯然,"a[j][k]=k*j;"不符合題意,我們應(yīng)當(dāng)使用"a[j][k]=(k+1)*(j+1);"。
  
  3.程序設(shè)計
  
  已知學(xué)生的記錄由學(xué)號和學(xué)習(xí)成績構(gòu)成,N名學(xué)生的數(shù)據(jù)已存入a結(jié)構(gòu)體數(shù)組中。請編寫函數(shù)fun,函數(shù)的功能是:找出成績最高的學(xué)生記錄,通過形參返回主函數(shù)(規(guī)定只有一個最高分)。已給出函數(shù)的首部,請完成該函數(shù)。
  請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
  試題程序:
  #include <stdio.h>
  #include <string.h>
  #include <conio.h>
  #define N 10
  typedef struct ss
  { char num[10];int s;} STU;
  fun(STU a[],STU *s)
  {
  }
  main()
  {STU
  a[N]= { {"A01",81}, {"A02",89}, {"A03",66}, {"A04", 87}, {"A05",77}, {"A06",90}, {"A07",79}, {"A08",61}, {"A09",80 }, {"A10",71 }},m;
  int i;
  elrser();
  printf("***** The original data *****\n");
  for (i=0;i<N;i++) printf(!'No=%s Mark=%d\n",a[i].num,a[i].s);
  fun(a,&m);
  printf("***** THE RESULT *****\n");
  printfCThe top : %s, %d\n",m.num,m.s);
  NON0( );
  }
  NON0( )
  {\*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/
  FILE *rf, *wf;
  STU a[N], m ;
  Int i;
  rf = fopen("bc09.in", "r,) ;
  wf= fopen("bc09.out", "w") ;
  for(i = 0 ; i < 10; i++) fscanf(rf, "%s %d", a[i].num, &a[i].s) ;
  fun(a, &m) ;
  fprintf (wf, "The top : %s, %d\n", m.num, re.s) ;
  fclose(rf) ;
  fclose(wf) ;
  }
  3.程序設(shè)計
  【答案】
  fun(STU a[],STU。s)
  {  int i;
  STU  *m;
  re=a;
  for(i=1;i<N;i++)/*從前往后集順序比較a數(shù)組中的學(xué)生成績,并使m指針始終指向成績低的學(xué)生記錄*/
  if(a[i].s>m[0].s) m=&a[i];
  s[0].s=m[0].s;
  strcpy(s[0].Num,m[0].num);/*將m指針中的學(xué)生學(xué)號復(fù)制給s數(shù)組中的學(xué)號變量*/
  }
  【評析】
  從題目的要求來看,我們應(yīng)建立一個循環(huán)來尋找成績最高的學(xué)生記錄。我們給出的參考函數(shù)中定義了一個指針存放學(xué)生記錄中的最高成績。

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