黄色在线观看视频-黄色在线免费看-黄色在线视频免费-黄色在线视频免费看-免费啪啪网-免费啪啪网站

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

05年9月等級考試二級C語言考前密卷(十一)


     (28)有以下程序
  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<3;i++) printf("%d",a[1][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,l,
  答案:D
  評析;本程序中函數f的作用是交換指針變量x和y所指向的存儲單元的值。
  
  (29)有以下程序
  main()
  {
  im a[3][3],*p,i;
  p=&a[0][o];
  for(i=0;j<9;i++) p[i]=I;
  for(i=0;j<3;i++)printf("%d",a[1][i]);
  )
  程序運行后的輸出結果是________。
  A)012  B)123  C)234  D)345
  答案:D
  評析:本題賦值后,a的數組元素的值分別為a[01[0]=0,a[0][1]=1,a[0][2]=2,a[1][0]=3,a[1][1]=4,a[1][2]=5,a[2][0]=6,a[2][1]=7,a[2][2]=8,故本題輸出的值為345。
  
  (30)以下敘述中錯誤的是________。
  A)對于double類型數組,不可以直接用數組名對數組進行整體輸入或輸出
  B)數組名代表的是數組所占存儲區的首地址,其值不可改變
  C)當程序執行中,數組元素的下標超出所定義的下標范圍時,系統將給出"下標越
  界"的出錯信息
  D)可以通過賦初值的方式確定數組元素的個數
  答案:C
  評析:在c語言中,如果出現下標越界的情況,系統不管在編譯還是執行時都不會給出"下標越界"的錯誤提示。
  
  (31)有以下程序
  #define N20
  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=O;i<5;i++) printf("%d",a[i]);
  }
  程序運行后的輸出結果是________。
  A)10234  B)12344  C)12334  D)12234
  答案:C
  評析:本題函數fun的作用是將指定的數組元素(從下標n到下標m)向后移一位。由函數調用"fun(a,2,9);"可知,函數fun用于將a[2]到a[9]的各元素依次向后移一位,移完后,a數組中各元素的值分別為1,2,3,3,4,5,6,7,8,9,10,故輸出的前5個數組元素為12334。
  
  (32)有以下程序
  main()
  {
  int a[3][2]={0},(*ptr)[2],i,j;
  for(i=0;i<2;i++) {ptr=a+i; scanf("%d",ptr); ptr++;}
  for(i=0;i<3;i++)
  { for(i=0;j<2;j++) printf("%2d",a[i][j]);
  printf("\n");
  }
  }
  若運行時輸入:1 2 3<回車>,則輸出結果是________。
  A)產生錯誤信息
  B)l 0  C)l 2  D)l 0
  2 O   3 0   2 0
  0 0   0 O   3 0
  答案:B
  評析:二維數組a,通過a[3][2]={0}將數組中的各個元素初始化為0,指針變量ptr,指向包含2個元素的一維數組。a[0][0]:l,a[1][0]=2,故本題的輸出選B。
  
  (33)有以下程序
  prt(int *m, int n)
  { int i;
  for(i=O;i<n;i++) m[i]++;
  )
  main()
  {
  int a[]={ 1,2,3,4,5 },i;
  prt(a,5);
  for(i=O;i<5;i++)
  printf("%d,",a[i]);
  程序運行后的輸出結果是________。
  A)l,2,3,4,5,  B)2,3,4,5,6,  C)3,4,5,6,7,  D)2,3,4,5,1,
  答案:B
  評析:用數組名作函數實參時,不是把數組的值傳遞給形參,而是把實參數組的起始地址傳遞給形參數組,這樣兩個數組就共同占用同一段內存單元。
  
  (34)有以下程序
  main()
  { int a[]={1,2,3,4,5,6,7,8,9,0},*p;
  for(p=a;p<a+10;p++)printf("%d,",*p);
  }
  程序運行后的輸出結果是________。
  A)l,2,3,4,5,6,7,8,9,0,  B)2,3,4,5,6,7,8,9,10,1,
  C)0,1,2,3,4,5,6,7,8,9,  D)l,l,1,l,l,l,l,l,l,l,
  答案:A
  評析:c語言規定數組變量名代表數組的首地址,即第0號元素的地址。本題將a數組中的值全部輸出,即為l,2,3,4,5,6,7,8,9,0,。
  
  (35)有以下程序
  #define P 3
  void F(int x){return(P*x*x);}
  main()
  {printf("%d\n",F(3+5));}
  程序運行后的輸出結果是________。
  A)192  B)29  C)25  D)編譯出錯
  答案:D
  評析:return語句用于從被調函數帶回一個函數值。void關鍵字表示"無類型",即不需要從被調函數中帶回函數值,所以不需要return語句,故編譯時出錯。
  
  (36)有以下程序
  main()
  {int c=35;printf("%d\n",c&C);}
  程序運行后的輸出結果是________。
  A)0  B)70  C)35  D)1
  答案:C
  評析:按位"與"時,1&1=1,其他都等O。因為本題中相與的兩個值相等,即對應位上的二進制值相等,所以"與"的結果也即為其值本身。
  
  (37)以下敘述中正確的是________。
  A)預處理命令行必須位于源文件的開頭
  B)在源文件的一行上可以有多條預處理命令
  C)宏名必須用大寫字母表示
  D)宏替換不占用程序的運行時間
  答案:D
  評析:通常,預處理命令位于源文件的開頭,也可以寫在函數與函數之間;不能在一行上寫多條預處理命令:宏名一般習慣用大寫字母表示,以便與變量名相區別,但這并非規定,也可用小寫字母。
  
  (38)若有以下說明和定義
  union dt
  {int a;har b;ouble c;}data;
  以下敘述中錯誤的是________。
  A)data的每個成員起始地址都相同
  B)變量data所占的內存字節數與成員c所占字節數相等
  C)程序段:data.a=5;pintf("%f\n",data.C);輸出結果為5.000000
  D)data可以作為函數的實參
  答案:C
  評析:union是表示共用體的關鍵字,成員a,b,c共占用同一個內存空間,data的每個成員起始地址都相同;共用體變量所占的內存長度等于最長的成員的長度,故變量'data所占的內存字節數與成員c所占字節數相等;執行"data.a=5;printf("%f\n",data.C);"printf函數只是將內存中的數據以不同的類型輸出,而不能將內存中的整型數據自動轉換為等值的浮點數,故C是錯誤的。
  
  (39)以下語句或語句組中,能正確進行字符串賦值的是________。
  A)char*sp;*sp="right!";  B)char s[lO];s="right! ";
  C)char s[10];*s="right! ";  D)char*sp="right! ";
  答案:D
  評析:選項A定義了字符型的指針變量sp,則*sp存儲的是第一個字符,而給它賦的是字符串,故錯;
  選項B表示代表數組的首地址,而題中給它賦的是字符串,所以錯誤;
  選項c定義了一個字符型的數組s[10],再通過+s給數組元素賦初值,這時是與選項A相同的錯誤。
  
  (40)設有如下說明
  typedef struct ST
  {long a; int b; char c[2];}NEW;
  則下面敘述中正確的是________。
  A)以上的說明形式非法  B)ST是一個結構體類型
  C)NEW是一個結構體類型  D)NEW是一個結構體變量
  答案:C
  評析:typedef關鍵字用于聲明一個新的類型名代替已有的類型名。
  本題中如果沒有用typedef進行定義的話,則struct ST為結構體類型,現在用typedef定義后,相當于用NEW代表了struct ST這一結構體類型,故NEW為結構體類型。
  
  (41)有以下程序
  main()
  {  int a=1,b;
  for(b=l;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
  答案:B
  評析:break和continue的區別是:continue語句只結束本次循環,而不是終止整個循環的執行;而break語句則是結束整個循環過程,.不再判斷執行的條件是否成立。
  
  (42)有以下程序
  main()
  { char s[]="l 59",*p;
  p=s;
  printf("%c",*p++);printf("%c",*p++);
  }
  程序運行后的輸出結果是________。
  A)15  B)16  C)12  D)59
  答案:A
  評析:本題通過"p=s"將指針變量p指向字符數組s,在第一次輸出時,由于++和*為同一優先級,"*p++"相于"+(p++)"。p指向s[1],輸出為s[1]的值。
  
  (43)有以下函數
  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所指字符串的大小
  答案:D
  評析:字符串的比較規則是對兩個字符串自左至右逐個字符相比(按ASCII碼值大小比較),直到出現不同的字符或遇到'\0'為止,相等,則返回0,否則返回第一個不等字符串的ASCII碼的差值。
  
  (44)有以下程序
  main()
  { int num[4][4]={{1,2,3,4},{5,6,7,8),{9,10,11,12},{13,14,15,16}},i,j;
  for(i=O;i<4;i++)
  {  for(j=0;j<=i.j++)printf("%4c",' ');
  for(j______; j<4;j++)printf("%4d",num[i][j]);
  printf("\n");
  }
  }
  若要按以下形式輸出數組右上半三角
  l  2  3  4
  6  7  8
  11 12
  16
  則在程序下劃線處應填入的是________
  A)i-l  B)i  C)i+1  D)4-i
  答案:B
  評析:本題程序為二重循環,外循環控制輸出數據的行數,內循環控制輸出數據的列數。從本題輸出的形式來看,程序要求輸出的是4行4列。
  
  (45)有以下程序
  point(char*p){p+=3;}
  main()
  { char b[4]={'at,lb','c','d.},*p=b;
  poim(p);primf("%c\n",*p);
  }
  程序運行后的輸出結果是________.
  A)a  B)b  C)c  D)d
  答案:A
  評析:在c語言中,函數的參數傳遞方式采用按值傳遞,因此不能通過調用函數的方式來改變指針本身的值,只能改變指針所指變量的值。
  
  (46)程序中若有如下說明和定義語句
  char fun(char*);
  main()
  {
  char *s="one; a[5]={O},(*f1)()=fun,ch;
  }
  以下選項中對函數fun的正確調用語句是________.
  A)(*f1)(a);  B)*f1(*s);  C)fun(&a);  D)ch=*fl(s);
  答案:A
  評析:題中將函數fun的入口地址賦給了指針變量f1,這時f1和fun都指向函數的開頭,調用*fl。就是調用函數fun.
  
  (47)有以下結構體說明和變量定義,如圖所示:
  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;
  答案:D
  評析:要想將q所指結點從鏈表中刪除,同時保持鏈表的連續,必需使p結點的next指向r,在四個選項中,只有選項D不能做到。
  
  (48)以下對結構體類型變量td的定義中,錯誤的是________。
  A) typedef struct aa             B) struct aa
  { int n;                  { int n;
  float m;                    float m;
  }AA;                }td;
  AA td;                   struct aa td;
  C) street                 D) struct
  { int n;                  { int n;
  float m;                    float m;
  }aa;                  }td;
  struct aa td;
  答案:C
  評析:選項c中的aa本身就為結構體變量名,所以不能再用它來定義結構體變量,故此種定義方法是錯誤的:
  
  (49)以下與函數fseek(f1),0L,SEEK_SET)有相同作用的是________。
  A)feof(fp)   B)ftell(fp)   C)fgetc(fp)  D)rewind(fp)
  答案:D
  評析:fseek函數用于改變文件的位置指針。
  本題中"fseek(fp,0L,SEEK_SET)"的作用是將位置指針移到文件頭。
  feof的作用是判斷文件是否結束,已指到文件的末尾,則返回值為非零,否則為零。
  ftell的作用是得到流式文件中的當前位置,用相對于文件開頭的位移量來表示。
  fgets的作用是指定文件讀入二個字符串。
  
  (50)有以下程序
  #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("tl.dat","end");
  }
  程序運行后,文件t1.dat中的內容是________。
  A)start   B)end   C)startend    D)endrt
  答案:B
  評析:兩次使用"寫入"的方式打開同一個文件,在第二次打開時,文件指針指向文件頭,所以此次寫入的數據覆蓋了文件原有的數據,故本題中t1.dat的內容為end。
  
  二、填空題(每空2分,共40分)
  
  請將每空的正確答案寫在【1】至【20】序號的橫線上,答在試卷上不得分。
  
  (1)某二叉樹中度為2的結點有18個,則該二叉樹中有一___【1】___ 一個葉子結點。
  答案:【1】19
  評析:二叉樹的性質3:在任意一棵二叉樹中,度為0的結點(即葉子結點)總是比度為2的結點多一個。本題中度為2的結點數為18,故葉子結點數為18+1=19個。
  
  (2)在面向對象方法中,類的實例稱為___【2】___.
  答案:【2】對象
  評析;將屬性、操作相似的對象歸為類,也就是說,類是具有共同屬性、共同方法的對象的集合。所以,類是對象的抽象,它描述了屬于該對象類型的所有對象的性質,而一個對象則是其對應類的一個實例。
  
  (3)診斷和改正程序中錯誤的工作通常稱為___【3】___.
  答案:【3】程序調試
  評析:程序調試的任務是診斷和改正程序中的錯誤。它與軟件測試不同,軟件測試是盡可能多地發現軟件中的錯誤。先要發現軟件的錯誤,然后借助于一定的調試工具去找出軟件錯誤的具體位置。軟件測試貫穿整個軟件生命期,調試主要再開發階段。
  
  (4)在關系數據庫中,把數據表示成二維表,每一個二維表稱為___【4】___。
  答案:【4】關系
  評析:在關系數據庫中,把數據表示成二維表,而一個二維表就是一個關系。
  
  (5)問題處理方案的正確而完整的描述稱為___【5】___。
  答案:【5】算法
  評析:所謂算法是指解題方案的準確而完整的描述。
  
  (6)以下程序運行時,若從鍵盤輸入:10 20 30<回車>,輸出的結果是___【6】___.   #include<stdio.h>
  main()
  { int i=0,j=0,k=0;
  scanf("%d%*d%d",&i,&j,&k);
  printf("%d%d%d\n"I,j,k);
  }
  答案:【6】10300
  評析:在scanf格式控制符中,如果在%后有一個"*"附加說明符,表示跳過它指定的列數。本題中""%d%*d%d""表示將10賦給i,%+d表示讀入整數但不賦給任何變量,然后再讀入整數30賦給變量j,那么變量k并沒有重新賦值,仍為初始值0。所以輸出的結果為10300。
  
  (7)以下程序運行后的輸出結果是___【7】___。
  #define S(x)4*x*x+l
  main()
  { inti=6,j=8;
  printf("%d\11",S(i+j));
  }
  答案:【7】81
  評析;帶參數的宏定義是按#define命令行中指定的字符串從左到右進行轉換。本題中替換的式子為:4*i+j*i+j+l,代入i,j的值得81。
  
  (8)以下程序運行后的輸出結果是___【8】___。
  main()
  { int a=3,b=4,c=5,t=99;
  if(b<a&&a<C)t=a;a=c;c=t;
  if(a<c&&b<C)t=b;b=a;a=t;
  printf("%d%d%d\n",a,b,C);
  }
  答案:【8】4 5 99
  評析:本題需特別注意的是";"的問題,不能把"t=a;a=c;c=t;"誤認為是第一個if的語句,實際上,只有"t=a;"才是第一個if的語句。
  
  (9)以下程序運行后的輸出結果是___【9】___。
  main()
  { int a,b,c;
  a=10;b=20;c=(a%b<1)||(a/b>1);
  printf("%d %d %d\n",a,b,C);
  }
  答案:【9】10 20 0
  評析:本題中"(a%b<1)‖(a/b>1)"的運算順序為先算括號→算術運算符→關系運算符→邏輯運算符。其中a%b=10,a/b=0,所以a%b<l的值為0,a/b>l值也是0,故整個表達式的結果為0,所以輸出的a,b,c的值為10 20 0。
  
  (10)以下程序運行后的輸出結果是___【10】___。
  main()
  {char c1,c2;
  for(c1='0',c2='9';c1<c2;c1++,c2--) printf("%c%c",c1,c2);
  printf("\n");
  }
  答案:【10】0918273645
  評析:本題程序的作用是通過for循環將0-9這10個數字從前向后,同時也從后向前依次輸出。
  
  (11)已知字符A的ASCII代碼值為65,以下程序運行時若從鍵盤輸入:B33<回車>,
  則輸出結果是_____。
  #include<stdio.h>
  main()
  {chara,b;
  a=getchar();scanf("%dt",&b);
  a=a-'a'+'O';b=b*2;
  printf("%c%c\n",a,b);
  }
  答案:【11】1 B
  評析:c語言使字符型數據和整型數據之間可以通用。題中執行"a=getchar();"后,a的值B,在內存中的表現形式為ASCII碼66;執行"scanf("%d"&b);"后,b在內存中的表現形式為33,然后經過"a=a-'A'+'0';b=b*2;"運算,得出a的值為字符'1',b的值為ASCII碼66,最后以字符型輸出為l B。
  
  (12)以下程序中,fun函數的功能是求3行4列二維數組每行元素中的最大值。請填空。
  void fun(int, int, int(*)[4],int *);
  main()
  { int a[a][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;
  fun(3,4,a,b);
  for(i=O;i<3;i++) printf("%4d",b [i]);
  printf("\n");
  }
  void fun(int m,int n, int ar[][4],int *br)
  { int i,j,x;
  for(i=O;i<m;i++)
  ( x=ar[i][0];
  For(j=O;j<n;j++) if(x<ar[i][j]) x=ar[i][j];
  ___【12】___=x;
  }
  }
  答案:【12】br[I]或*(br+i)
  評析:二維數組a存放3行4列的數組元素,一維數組b用于存放每行的最大數。在函數fun中,外層for循環用于控制行數,內層for循環用于控制列數。
  
  (13)以下程序運行后的輸出結果是___【13】___。
  void swap(int x, int y)
  { int t;
  t=x;x=y;y=t;printf("%d %d ",x,y);
  }
  main()
  { int a=3,b=4;
  swap(a,b); printf("%d %d",a,b);
  答案:【13】4 3 3 4
  評析:用變量作為函數的實參時,屬單向傳遞,即"值傳送"方式,此種函數參數的傳遞方式只能由實參傳給形參,不能由形參傳回來給實參。
  
  (14)以下程序運行后的輸出結果是___【14】___。
  #include <string.h>
  void fun(char *s, int p, int k)
  { int i;
  for(i=p;i<k-1;i++) s[i]=s[i+2];
  }
  main()
  { char s[]="abcdefg";
  fun(s,3,strlen(s)); puts(s);
  }
  答案:【14】abcfg
  評析:函數fun的作用是將s所指的字符串中從第p十3到第k+1個字符向前移動兩個位置。本題程序是將數組s中從第6個元素開始的值分別向前移動兩個位置。在執行fun函數時,p的值是3,k的值是7,
  所以,具體執行"for(i=p;i<k-1;i++)s[i]=s[i+2];"語句的過程如下:
  i=3:判斷i<k-1成立,執行s[3]=s[5],此時,s[3l=f;
  i=4:判斷i<k-1成立,執行s[4]=s[6],此時,s[4]=g;
  i=5:判斷i<k-l成立,執行s[5]=s[7],此時,s[5]='\O':
  i=6:判斷i<k-1不成立,返回主函數輸出s的值,即為abcfg。
  
  (15)以下程序運行后的輸出結果是___【15】___。
  #include <string.h>
  main()
  { char ch[]="abc",x[3][4]; int i;
  for(i=O;i<3;i++) strcpy(x[i],ch);
  for(i=O;i<3;i++) printf("%s",&x[i][i]);
  printf("\n");
  }
  答案:【15】abcbcc
  評析:字符數組ch的值'abc'分別復制到了二維數組x的每一行,使得二維數組中每一行的值均為'abc',再通過第二個for循環打印出每一行上所要求輸出的字符串。
  
  (16)以下程序運行后的輸出結果是___【16】___。
  fun(int a)
  int b=0;static int c=3;
  b++;c++;
  return(a+b+C);
  }
  main()
  {int i,a=5;
  for(i=0;i<3;i++)printf("%d%d",i,fun(a));
  printf("\n");
  }
  答案:【16】010111212
  評析:靜態局部變量是在編譯時賦初值的,在程序運行時它已有初值。
  
  (17)以下程序運行后的輸出結果是___【17】___。
  struct NODE
  { int k;
  struct NODE *link;
  };
  main()
  { struct NODE m[5],*p=m,*q=m+4;
  int i=0;
  while(p!=q) {
  p->k=++i; p++;
  q->k=i++; q--;
  }
  q->k=i;
  for(i=0;i<5;i++) printf("%d",m[i].k);
  printf("n");
  }
  答案:【17】13431
  評析:程序執行過程如下:
  p=m,q=m+4,條件p!=q成立,執行p->k=++i;,由于是"前加",所以m[O].k=1.執行p++后p=m+l;執行q->k=i++;,由于是"后加",所以m[4].k=1,然后使得i加上1,即i=2,q--后,q=m+3:
  p=m+l,q=m+3,條件p!=q成立,執行p->k=++i;,由于是"前加",所以i=3,m[0].k=3,執行p++后p=m+2;執行q->k=i++;,由于是"后加",所以m[4].k=3,i=4,q--后,q=m+2;
  p=m+2,q=m+2,條件p!=q不成立,則執行q->k=i;即m[2].k=4;故輸出的值為13431。
  
  (18)以下程序中函數huiwen的功能是檢查一個字符串是否是回文,當字符串是回文,
  時,函數返回字符串:yes!,否則函數返回字符串:no!,并在主函數中輸出,所謂回
  文即正向與反向的拼寫都一樣,例如:adgda。請填空。
  #include <string.h>
  char *huiwen(char *str)
  { char *pl,*p2; int i,t=0;
  pl=str;p2=___【18】___;
  for(i=0;i<=strlen(str)/2;i++)
  if(*pl ++!=*p2--) {t=l ;break;}
  if(___【19】___) retum("yes!");
  else return("no!");
  }
  main()
  { char str[50];
  printf("Input:"); scanf("%s",str);
  printf("%s\n",___【20】___ );
  }
  答案:【18】pl+(strlen(str)-1)或str+(strlen(str)-1)
  【19】t==0或!(tl=0)或t!=l或!t
  【20】huiwen(str)
  評析:本題的要求是判斷從鍵盤輸入的字符串是否是回文,但在主函數中并沒有完成此功能的代碼,故第20空應該填調用函數huiwen代碼,即huiwen(str)。
  由于回文字符串是指正向與反向拼寫都一樣,所以對于一個字符串,如果正向順序與反向順序對應位置上的字符一樣,則此字符串即為回文。在函數huiwen中,已用"pl=str"使得pl指向字符串str的第一個字符的地址,則第18空語句的功能應該是使得p2指向字符串str的最后一個字符串的地址,故填pl+(strlen(str)-1),由于p1與str指向的是同一個地址,所以,第18空也可以填str+(strlen(str)-1)。
  在進行for循環時,如果pl所指向的字符與p2指向的字符不相同,則說明,字符串str不是回文,則用t=l標記,并退出循環,執行下面的if語句,由于題中要求如果是回文,則返回"yes!",否則,返回"no!"。故當t=O的時候,說明字符串str為回文,所以第19應填t==O或!(t!=O)或t!=l或!t。

   相關閱讀:   
    -----------------------------------------------
    05年9月等級考試二級C語言考前上機密卷2
     05年9月等級考試二級C語言考前上機密卷1
     05年9月等級考試二級C語言考前密卷(十)
     05年9月等級考試二級C語言考前密卷(九)
     05年9月等級考試二級C語言考前密卷(八)
     05年9月等級考試二級C語言考前密卷(七)
     05年9月等級考試二級C語言考前密卷(六)
     05年9月等級考試二級C語言考前密卷(五)
     05年9月等級考試二級C語言考前密卷(四)
     05年9月等級考試二級C語言考前密卷(三)
    ------------------------------------------------

文章搜索
版權聲明:如果計算機等級考試網所轉載內容不慎侵犯了您的權益,請與我們聯系800@exam8.com,我們將會及時處理。如轉載本計算機等級考試網內容,請注明出處。
主站蜘蛛池模板: 欧美黄色高清视频 | 久久人人爽人人爽人人爽 | 蜜桃欧美性大片 | 日日操免费视频 | 亚洲黄色三级 | 天天摸夜夜添夜夜添国产 | 国内精品视频在线播放一区 | 中文字幕日韩亚洲 | 亚洲欧美日本在线观看 | 欧美三级又粗又硬 | 亚洲国产精品久久久久网站 | 日日摸夜夜添夜夜爽免费视频 | 黄色三级网站 | 999国内精品视频免费 | 天天躁日日躁aaaaxxxx | 日韩成人性视频 | 天天干影院 | 人人爽人人爽人人爽 | 日韩精品一区二区三区中文版 | 狠色狠狠色狠狠狠色综合久久 | 在线中文字幕网 | 激情影院成人区免费观看视频 | 韩国成人在线视频 | 成人看片软件 | 欧美h片在线 | 亚洲精品成人 | 日本α级片 | 午夜精品视频在线看 | 波多野结衣一区二区三区 | 国产亚洲精品综合在线网址 | 中文字幕国产日韩 | 黄网站在线观看永久免费 | 有b吗在线视频 | 中文字幕一区二区三区在线不卡 | 性色毛片免费视频 | 一级毛片成人午夜 | 亚洲欧美在线播放 | 国产无限免费观看黄网站 | aaa在线观看高清免费 | 亚洲综合20p| 婷婷人人爽人人爽人人片 |