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

首頁 - 網校 - 題庫 - 直播 - 雄鷹 - 團購 - 書城 - 模考 - 學習通 - 導航 - 510 -
首頁考試吧網校題庫直播雄鷹510團購書城模考論壇實用文檔作文大全寶寶起名
2015中考
法律碩士
2015高考
MBA考試
2015考研
MPA考試
在職研
中科院
考研培訓
專升本
自學考試 成人高考
四 六 級
GRE考試
攻碩英語
零起點日語
職稱英語
口譯筆譯
申碩英語
零起點韓語
商務英語
日語等級
GMAT考試
公共英語
職稱日語
新概念英語
專四專八
博思考試
零起點英語
托福考試
托業考試
零起點法語
雅思考試
成人英語三級
零起點德語
等級考試
華為認證
水平考試
Java認證
職稱計算機 微軟認證 思科認證 Oracle認證 Linux認證
公 務 員
導游考試
物 流 師
出版資格
單 證 員
報 關 員
外 銷 員
價格鑒證
網絡編輯
駕 駛 員
報檢員
法律顧問
管理咨詢
企業培訓
社會工作者
銀行從業
教師資格
營養師
保險從業
普 通 話
證券從業
跟 單 員
秘書資格
電子商務
期貨考試
國際商務
心理咨詢
營 銷 師
司法考試
國際貨運代理人
人力資源管理師
廣告師職業水平
衛生資格 執業醫師 執業藥師 執業護士
會計從業資格
基金從業資格
統計從業資格
經濟師
精算師
統計師
會計職稱
法律顧問
ACCA考試
注冊會計師
資產評估師
高級經濟師
審計師考試
高級會計師
注冊稅務師
國際內審師
理財規劃師
美國注冊會計師
一級建造師
安全工程師
設備監理師
公路監理師
公路造價師
二級建造師
招標師考試
物業管理師
電氣工程師
建筑師考試
造價工程師
注冊測繪師
質量工程師
巖土工程師
注冊給排水
造價員考試
注冊計量師
環保工程師
化工工程師
暖通工程師
咨詢工程師
結構工程師
城市規劃師
材料員考試
消防工程師
監理工程師
房地產估價
土地估價師
安全評價師
房地產經紀人
投資項目管理師
環境影響評價師
土地登記代理人
寶寶起名
繽紛校園
實用文檔
入黨申請
英語學習
思想匯報
作文大全
工作總結
求職招聘 論文下載 直播課堂
您現在的位置: 考試吧 > 軟件水平考試 > 模擬試題 > 程序員 > 正文

2014下半年軟考程序員考前最后沖刺題及答案解析(5)

考試吧整理“2014下半年軟考程序員考前最后沖刺題及答案解析(5)”供考生參考,更多2014年軟考備考資料請關注考試吧軟件水平考試網。

  二、程序分析

  1.main()

  { char str[]="1234567";

  int i;

  for(j=0;i<7;i十=3)

  printf("%s\n",str+i);

  }

  【解析】分析份循環語句可知,控制變量 i的值只能依次等于0、3、6。再分析輸出語句中的輸出格式,這是字符串格式,要求輸出表達式是存放字符串的首地址。而輸出表達式是“str+i”。我們針對i不同值來-一分析:i=0,str+0就是str,其中存放的字符串是“1234567”,所以第1行上的輸出就是:1234567。當 i=3時,str+3,代表了數組元素str[3]的地址,從這兒開始的字符率串是“4567”,所以第2行輸出的是:4567。同樣道理,i=6時, str+6是元素str[6]的地址,從該地址存放的字符率是"7",所以第3行輸出的是:7。

  【參考答案】 1234567

  4567

  7

  2.struct a{ char name[10];

  int age;

  }aa[3]={{"abc",20},{"def",21},{"ghi",22}};

  main()

  { struct a *paa=aa;

  printf("%c%c%c",(*(paa+1)).name[0]

  (*paa++).name[1]

  (*(paa+1)).name[2]);

  }

  【解析】本程序并不復雜,關鍵在于如何使用指向結構型數組的指針變量來引用該數組元素,以及如何引用結構型成員是數組的數組元素。

  首先看結構型a及對應數組aa的定義和賦予的初值。

  結構型a共有兩個成員,一個是字符型數組name,另一個是整型age。

  結構型數組aa有3個元素,所賦予的初值如下:

  aa[0].name="abc" aa[0].age=20

  aa[1].name="def" aa[1].age=21

  aa[2].name="ghi" aa[2].age=22

  主函數中的第1個語句是定義結構型指針變量paa,并且使它指向結構型數組aa的首地址。注意,此后的*paa就是aa[0],*(paa+i)就是aa[i]。

  現在可以分析輸出語句了。輸出格式是3個字符格式,按照printf()函數的規定,表達式表中表達式計算順序是自右向左進行的,下面依次討論這3個字符格式對應的輸出表達式。

  第3個輸出表達式是“(*(paa十1)).name[2]",其中的“*(paa+1)”代表“aa[1]”,所以該表達式就是“aa[1].name[2]”,對應的字符是'f'。

  第 2個輸出表達式是"(*paa++).name[1]”,其中“*ppa++”的“*”和“++”是同級運算符,結合性是自右向左的,所以“++”先計算,由于是后綴,所以要先計算“*paa”,它代表“aa[0]”,所以該表達式就是“aa[0].name[1]”,對應的字符是'b'。注意,最后要對paa進行“++”運算,使其指向aa[1]。

  第 1個輸出表達式是“(*(paa+1)).name[0]”,注意現在的paa以及指向aa[1]了,所以其中的“*(paa+1)”代表“aa[2]”,所以該表達式就是“aa[2].name[0]”,對應的字符是'g'。

  現在可以得出結論:程序的輸出是 3個字符:gbf

  【參考答案】gbf

  3.main()

  { int x1,x2,x3,x4;

  x1=x2=x3=x4=1;

  switch(x1)

  { case 1:switch(x2)

  { case 0:x3++;break;

  case 1:x4--;

  }

  case 2:x3++,x4--;

  }

  printf("%d%d",x3,x4);

  }

  【解析】本題的關鍵是嵌套的多分支語句switch。注意在執行switch語句前,變量x1、x2、x3、x4已經賦值,他們的值均為1。執行外層switch語句時,用于控制分支選擇的變量x1的值為1,所以要執行的是“case 1”的分支。該分支又是一個switch語句,用于控制分支選擇的變量x2的值為1,所以需要執行的是“case 1”的分支。該分支執行的語句是“x4--”,使得x4的值變為0。接著退出該分支,即退出內層的switch語句。由于外層的switch語句的“case 1”分支中沒有“break”語句,所以將繼續執行其后的“case 2”分支,即執行“x3++,x4--;”,結果x3等于2, x4等于-1。再退出外層switch語句,執行輸出語句,此時,變量x3的值為2;變量x4的值為-1。所以輸出結果是2-1。

  【參考答案】2-1。

  4.conv(b)

  int b;

  { if(b>=2)conv(b/2);

  printf("%d",b%2);

  return;

  }

  main()

  { int d;

  scanf("%d",&d);

  conv(d);

  }

  說明:本程序執行時從鍵盤上輸入:22后跟回車鍵。

  【解析】主函數中輸入整數22存入變量d中,然后調用函數。conv()。此時將把實參d中的22傳遞給形參b。然后再執行函數體,函數體中前面一條語句是單分支語句,當b>=2時再用“b/2”調用自己,顯然這是一個遞歸調用的函數。下面我們來詳細分析遞歸調用的過程:

  第1次調用函數(b=22),滿足條件,引起第2次調用自己(b/2=11)

  第2次調用函數(b=11),滿足條件,引起第3次調用自己(b/2=5)

  第3次調用函數(b=5),滿足條件,引起第4次調用自己(b/2=2)

  第4次調用函數(b=2),滿足條件,引起第2次調用自己(b/2=1)

  第5次調用函數(b=1),不滿足條件,執行輸出語句,輸出結果為 b%2=1%2=1

  執行第5次調用的返回,執行第今次調用時的輸出語句,輸出結果為b%2=2%2=0

  執行第4次調用的返回,執行第3次調用時的輸出語句,輸出結果為b%2=5%2=1

  執行第3次調用的返回,執行第2次調用時的輸出語句,輸出結果為b%2=11%2=1

  執行第2次調用的返回,執行第1次調用時的輸出語句,輸出結果為b%2=22%2=0

  執行第1次調用的返回,將返回主函數,結束程序的運行。

  所以程序運行的輸出結果是:10110。

  【參考答案】10110。

  5.void f(p1,p2)

  int *p1,*p2;

  { int i,j;

  *p2=0;

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

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

  *p2+=*(pl+i*3+j);

  return;

  }

  main()

  { int a[3][3]={{1,2},{3,4},{5,6}};

  int s;

  f(a,&s);

  printf("%d",s);

  }

  【解析】本程序是由一個無返回值的函數f()和主函數組成的。先看主函數,定義了一個3行3列的二維數組a,并且給a賦了初值,初值如下:

  a[0][0]=1 a[0][1]=2 a[0][2]=0

  a[1][0]=3 a[1][1]=4 a[1][2]=0

  a[2][0]=5 a[2][1]=6 a[2][2]=0

  接著調用無返回值的函數f(),然后輸出變量s中的值,顯然這個s中的值是在函數f()中獲得的。

  接下來分析函數f()。該函數有兩個形參,第1個形參是指針變量p1,對應的實際參數是數組a的首地址,即調用該函數后,指針變量p1是指向二維數組a的首地址。第2個形參也是指針變量p2,對應的實參是變量s的地址,即函數調用后指針變量p2是指向變量s的。再來分析函數體。前面定義了兩個變量i和j,從后面的循環語句中看出是二重循環的控制變量。接著,通過“*p2=0”,給變量s賦值0。二重for循環的循環體是“*p2+=*(p1+i*3+j)”,其中的“*p2”是代表變量s的,“*(p1+i*3+j)”是代表數組元素a[i][j],這個賦值語句是把a[i][j]加到變量s中(即求數組元素的和)。現在只要分析清楚二重循環是對哪些數組元素進行求和的就可以得出變量s的值了。

  下面是對二重循環的執行記錄:

  i=0 j=0 對應a[0][0],其值為1

  j=1 對應a[0][1],其值為2

  j=2 對應a[0][2],其值為0

  i=1 j=1 對應a[1][1],其值為4

  j=2 對應a[1][2],其值為0

  i=2 j=2 對應a[2][2],其值為0

  所以,s=a[0][0]+a[0][l]+a[0][2]+a[1][1]+a[2][2]+a[2][2]= 1+2+0+4+0+0=7。

  【參考答案】7

  6. main()

  { int i,a[5];

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

  a[i]=9*(i-2+4*(i>2))%5;

  for(i=4;i>=0;i--)

  printf("=",a[i]);

  }

  【分析】我們可以按照程序中語句執行的順序,記錄各個變量及數組元素值的方法來解決這種閱讀程序寫運行結果的問題。首先執行第1個for循環。

  i=0, i<5的條件成立,執行循環體。

  a[0]=9*(0-2+4*(0>2))%5=9*(-2)%5=-18%5=-3

  i=1,1<5的條件成立,執行循環體。

  a[1]=9*(1-2十4*(1>2))%5=9*(-1)%5=-9%5=-4

  1=2,i<5的條件成立,執行循環體。

  a[2]=9*(2-2十4*(2>2))%5=9*(0)%5=0%5=0

  i=3,i<5的條件成立,執行循環體。

  a[3]=9*(3-2+4*(3>2))%5=9*(5)%5=45%5=0

  1=4,1<5的條件成立,執行循環體。

  a[4]=9*(4-2+4*(4>2))%5=9*(6)%5=54%5=4

  i=5,1<5的條件不成立,退出第1個for循環。

  注意,計算中的“i>2”是關系運算,結果只能為1或0;“x%5”是模運算,結果是x除5的余數,且余數的符號和x符號相同。

  再執行第2個for循環。

  i=4,i>=0的條件成立,執行循環體。輸出數組元素a[4]的值,等于4

  i=3,i>=0的條件成立,執行循環體。輸出數組元素a[3」的值,等于0

  i=2,1>=0的條件成立,執行循環體。輸出數組元素a[2」的位,等于0

  i=1,i>=0的條件成立,執行循環體。輸出數組元素a[1]的值,等于-4

  i=0,1>=0的條件成立,執行循環體。輸出數組元素a[0]的值,等于-3

  i=-1,i>=0的條件不成立,退出第2個for循環。

  【參考答案】 4 0 0 -4 -3

  7.main()

  { char s[][6]={”1234”,”56789”},*p[2];

  int i,sum=0;

  p[0]=s[0],p[1]=s[1];

  for(i=0;p[0][i」!=’\0’;i++,i++)

  sum=10*sum+p[0][i]-’0’;

  for(i=1;p[1]「i」!=’\0’;i++,i++)

  sum=10*sum+p[1][i]-’0’;

  printf("%d",sum);

  }

  【解析】本程序的第1條語句是定義2行5列的二維字符型數組s,并且賦了初值如下:

  s[0][0]='1's[0][1]='2's[0][2]='3's[0][3]='4's[0][4]='\0'

  s[1][0]='5's[1][1]='6's[1][2]='7's[1][3]='8's[1][4]='9'S[1][5]='\0'

  此外還定義了字符型指針數組p,利用第3條語句賦了值,結果如下:

  p[0]指向以“s[0][i]”為數組名的一維數組首地址,即p[0][i]就相當于s[0][i]

  p[1]指向以“s[1][i]”為數組名的一維數組首地址,即p[1][i]就相當于s[1][i]

  第2條語句定義了整型變量i(用于單重循環的控制變量)和sum,并對sum清0。

  第4條語句是for循環,控制變量i初值為0,每次加2,控制循環的條件是“p[0」[i]!='\

  0',注意其中的“p[0][i]”就是“s[0][i]”,這個控制循環的條件可以理解為“二維字符型數組元素s[0][i]不是字符串的結束標記則繼續循環”。從控制變量i的取位來看,二維字符型數組元素只能取s[0][0]、s[0][2],因為下一個數組元素是s[0][4],該元素值是'\0'。再分析循環體中的語句,其中“ p[0][i]-'0'”是將數組元素s[0][i]中存放的數組字符減去'0',結果將是該數字字符對應的一位整數,整個語句是將sum變量中的原值乘以10以后再加上當前的數字。循環結束后的sum值就是s[0」[0」和s[0][2]中的兩個數字組成的2位十進制數,結果為13。

  按照同樣的道理,可以分析出第2個for循環作用是完全相同的,它是把s[1」[1」、s[1][3]中的兩個數字(前者為6,后者為8)拼接到sum的原值中,結果sum中值為十進制整數1368。程序的最后一個語句就是輸出變量sum中的整數值。

  【參考答案】 1368

  8.int p(m,n)

  int m,n;

  { int i,pp;

  for(i=pp=1;i

  PP*= m;

  return(pp);

  }

  main()

  { printf("%d"、 p(3,4));

  }

  【解析】主函數中只有一條輸出語句,輸出結果是函數調用“p(3,4)”的返回值。所以本題的關鍵是函數p的功能。

  分析函數p(),有兩個參數m、n。函數體中關鍵的是for循環語句。分析這個循環語句可以看出,控制變量是i,初值為1;,終值為n,每次循環i加1。所以是標準的次數型循環,共計循環n次。循環體中是將參數m的值乘到變量pp中,變量pp在開始循環時已經設置初值為1,所以整個循環是將n個m乘到pp中。顯然循環語句的功能是計算m”。而函數的返回值正是這個變量pp中的值。

  由此分析可知,函數調用“p(3,4)”的返回值就是34。結果為 81,也就是本程序的輸

  出結果。

  【參考答案】81

上一頁  1 2 

  相關推薦:

  2014年軟件水平考試《程序員》考試講義匯總

  2014年軟件水平考試程序員考前練習題及答案匯總

  2014計算機軟考程序員考試全真模擬題及答案匯總

文章搜索
軟件水平考試欄目導航
版權聲明:如果軟件水平考試網所轉載內容不慎侵犯了您的權益,請與我們聯系800@exam8.com,我們將會及時處理。如轉載本軟件水平考試網內容,請注明出處。
Copyright © 2004- 考試吧軟件水平考試網 All Rights Reserved 
中國科學院研究生院權威支持(北京) 電 話:010-62168566 傳 真:010-62192699
主站蜘蛛池模板: 欧美日韩精品一区二区在线线 | 美女又美女又黄又免费网站 | 亚洲综合激情丁香六月 | 伊人久久综在合线亚洲不卡 | a级成人毛片久久 | 国产卡1卡2卡三卡在线 | 日韩午夜免费 | 一级一级一级一级毛片 | 精品精品国产理论在线观看 | 一级一级特黄女人精品毛片视频 | 激情黄网 | 二区三区在线观看 | 成人观看天堂在线影片 | 亚洲高清中文字幕一区二区三区 | 国产亚洲欧美一区二区 | 手机在线伦理片 | 免费大片黄日本在线观看 | 欧美精选在线 | 久久亚洲精品成人 | 国产日韩欧美综合 | 国产90后美女露脸在线观看 | 国产精品成人观看视频免费 | 亚洲经典激情春色另类 | 日韩亚洲欧美视频 | 男女性爽大片视频男女生活 | 欧美成人一级片 | 久久国产偷 | 波多野结衣免费视频观看 | 天天影视涩香欲综合网 | 欧美精品第三页 | 丁香伊人五月综合激激激 | 免费a级人成a大片在线观看 | 天天网综合 | 国产黄色一级片 | 日韩欧美亚洲中字幕在线播放 | www亚洲成人 | 亚洲一区 中文字幕 | 亚洲国产欧美另类 | 香蕉视频免费版 | 精品国产日韩亚洲一区二区 | 欧美整片sss|