c語言程序設計第五版習題答案解析復習課程_第1頁
c語言程序設計第五版習題答案解析復習課程_第2頁
c語言程序設計第五版習題答案解析復習課程_第3頁
c語言程序設計第五版習題答案解析復習課程_第4頁
c語言程序設計第五版習題答案解析復習課程_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

語言程序設計第五版習題答案解析精品文檔習題解析與答案第1章C語言概述一.簡做題1.概述C語言的主要特點.【解答】(1)語言簡潔、緊湊,使用方便、靈活.(2)數(shù)據(jù)類型豐富,表達水平強.(3)運算符多樣.C語言中的運算符包含的范圍非常廣泛.(4)具有結(jié)構(gòu)化的限制語句.如if-else語句、while語句、dowhile語句、switch語句、for語句.(5)允許直接訪問物理地址.C語言中含有的位和指針運算,能夠直接對內(nèi)存地址進行訪問操作.(6)所生成的目標代碼質(zhì)量高,可移植性好..構(gòu)成C語言程序的根本單位是什么?它由哪幾局部組成?【解答】函數(shù)是構(gòu)成C語言程序的根本單位.一個完整的C程序一般由文件包含、宏定義、函數(shù)說明、變量和一個或假設干個函數(shù)組成..C語言程序的運行一般要經(jīng)過哪幾個步驟?【解答】(1)編輯;(2)編譯;(3)連接,生成EXES:件;(4)執(zhí)行.二.運行程序?qū)懡Y(jié)果.輸入下面程序并運行.main()inta1,a2,x;a1=100;a2=50;x=a1-a2;printf("x=%dn〞,x);}【解答】運行結(jié)果為:x=50.輸入下面程序并運行.main(){inta1,a2,x;a1=10;a2=20;x=a1*a2;printf("a1=%dn",a1,a2);printf("x=%dn〞,x);}【解答】運行結(jié)果為:a1=10,a2=20收集于網(wǎng)絡,如有侵權(quán)請聯(lián)系治理員刪除

精精品文檔x=200.輸入下面程序并運行#include<stdio.h>main()(priprintf("I******\n");printf("*****\n");printf("****\n");printf("***\n");printf("**\n");printf("*\n");}【解答】運行結(jié)果為:

***************思考:可以修改程序,使之輸出平行四邊形,等腰三角形等圖形三.編程題1.參照本章例題,編寫一個C程序,用于顯示如下信息:*************************IloveCprograms!*************************【分析與提示】①要有文件包含語句#include<stdio.h>.C語言中沒有數(shù)據(jù)的輸入、輸出等功能,數(shù)據(jù)的輸入、輸出都是通過調(diào)用系統(tǒng)提供的庫函數(shù)scanf和printf等來實現(xiàn)的.這些函數(shù)的說明都包括在stdio.h文件中.②main是主函數(shù)的名稱.用{}括起來的內(nèi)容是函數(shù)體,函數(shù)體由假設干條語句組成,這是計算機要執(zhí)行的局部,每條語句以分號“「‘結(jié)束.③注意顯示的信息有三行,所以要用到換行符“n〞.參考代碼:#include<stdio.h>main()priprintf("I************************\n")printf("IloveCprograms!\n")priprintf("I************************\n")收集于網(wǎng)絡,如有侵權(quán)請聯(lián)系治理員刪除精品文檔第2章數(shù)據(jù)類型及其運算一.簡做題.c語言中的數(shù)據(jù)類型主要有哪幾類?【解答】「短整型(shortint)'整型J整型(int)I長整型(longint)根本類型J字符型(char)廣單精度(float)C\…一…[實型(浮點型)4L雙精度(double)I枚舉類型(enum)/「數(shù)組類型構(gòu)造類型J結(jié)構(gòu)體類型(struct)I共用體類型(union)指針類型空類型(void).字符常量與字符串常量有什么區(qū)別?【解答】字符常量用單括號括起,字符串常量用雙括號括起;字符常量存儲時占1個字節(jié),字符串常量存儲時除了n個字符外,還有系統(tǒng)加上的字符串終止符\0,所以字符串常量存儲時占n+1個字節(jié)..C語言中的常量包括哪幾類?各自是如何構(gòu)成的?【解答】C語言中的常量是一些其值預先定的量,并且在程序執(zhí)行過程中其值不再發(fā)生變化.常量的分類遵循根本數(shù)據(jù)類型分類原那么,C語言編譯系統(tǒng)自動將其存放在于類型相應的內(nèi)存單元中.其類別包含整形常量、浮點常量、字符常量、字符串常量和枚舉常量.整形常量又分為十進制整形常量、八進制整形常量、十六進制整形常量.浮點常量分成十進制形式和指數(shù)形式.C語言中的,字符常量是用單括號括起來的一個字符或是字符序列,而字符串常量是用一對雙括號括起來的零個或者多個字符組成的序列..簡述指針、變量的指針、變量的值、指針變量與指針變量的值的含義是什么?【解答】C語言中將地址又稱為“指針〞.一個變量所分配的內(nèi)存空間首字節(jié)地址,稱為該變量的指針(地址),變量的值就被放入所分配的地址單元中.地址一旦被分配,就不會再改變,所以,指針是一個常量.既然是常量就可以把它賦給一個變量.用來存放指針的變量,被稱為指針變量.一個指針變量的值是變量的地址,一個指針變量可以被賦予不同的指針值..下面哪些是不合法的常量?說明不合法的理由.,3.1415926,0892,'M,'n',0xabc,0.618E-6,"Morning",3.8e-3.14【解答】非法常量有:0892——含有非八進制數(shù)字8和93.8e-3.14——非法指數(shù)形式7?點常量:規(guī)定e后面的指數(shù)必須為整數(shù).收集于網(wǎng)絡,如有侵權(quán)請聯(lián)系治理員刪除精品文檔.下面對變量定義的語句哪些不正確?為什么?請改正.charc1,inta2;(2)INTa,b;FLOATx,y;(3)a,b:char;charif;(5)inta,b(6)Inta:b:c;⑺inta,x;floatx,y;【解答】charc1,inta2;錯誤.定義不同類型的變量時,應用分號彼此分開.改正為:charc1;inta2;INTa,b;FLOATx,y;錯誤.C語言中表示類型名的關(guān)鍵字必須小寫.改正為:inta,b;floatx,y;a,b:char;錯誤.C語言中變量定義格式為:類型名變量名;改正為:chara,b;charif;錯誤.變量名不能與C語言的關(guān)鍵字重名.改正為:charf1;inta,b錯誤.變量定義以語句形式出現(xiàn),應以分號結(jié)尾.改正為:inta,b;Inta:b:c;錯誤.類型名不能有大寫字母,相同類型名之間用逗號分隔.改正為:inta,b,c;⑺inta,x;floatx,y;錯誤.在同一程序位置上,同一變量名不能重復定義充當兩個不同的變量.改正為:inta,x;floatx1,y;.下述字符串常量的長度是多少?在內(nèi)存中存儲時各自占用的單元數(shù)又是多少?“Hello!〞(2)“ABC?〞(3)“765+123=7【解答】“Hello!〞字符串長度為6,占用內(nèi)存字節(jié)數(shù)為7.“ABC?〞字符串長度為9,占用內(nèi)存字節(jié)數(shù)為10.由于其中\(zhòng)n\\\064\?各自只占一個字符的位置.“765+123=?該字符串不是合法的,由于\765表示的值太大,超出合法的ASCII字符集的范圍.二.運行程序?qū)懡Y(jié)果.以下程序的執(zhí)行結(jié)果是.main(){inti,j;i=15;printf("%d,%d,i++,i--);收集于網(wǎng)絡,如有侵權(quán)請聯(lián)系治理員刪除

精品文檔)【解答】14,15.以下程序的執(zhí)行結(jié)果是.main()(inta=20,b=10,c,*p1,*p2;p1=&a;p2=&b;c=(-*p1)/(*p2)+6;printf("a=%d,b=%d\n",a,b);printf("*p1=%d,*p2=%d\n",*p1,*p2);printf("c=%d\n",c);)【分析與提示】P2pP2p1a【解答】a=20,b=10*p1=20,*p2=10c=4.以下程序的執(zhí)行結(jié)果是.#include<stdio.h>main()(chara='G',b='o',c='o',d='d';a=a+32;b=b-6;c=c+3;d=d+8;printf("%c%c%c%c\n",a,b,c,d);)【分析與提示】從ASCII代碼表可以看出,字符"G'、"o〞、“o〞、“d〞的ASCII代碼值為71、111、101,因此,'G+32、'o'-6、'o'+3、'd'+8的值分別是103、105、114、108,它們所對應的字符分別是“g〞、"i〞、"r〞、“l(fā)〞.常用結(jié)論:(1)在C語言中,字符數(shù)據(jù)可以按其ASCII代碼值參加整數(shù)運算.由于英文字母在ASCII代碼表中是按順序排列的,所以在計算‘o'+3代表的字母時,可從字符‘o'其順序向后取3個字母,該字母是“r〞.收集于網(wǎng)絡,如有侵權(quán)請聯(lián)系治理員刪除精品文檔(2)從ASCII代碼表可以看出“小寫字母〞-“對應大寫字母〞的結(jié)果是32,因此可推算出如下等式:大寫字母的ASCII值+32=對應小寫字母的ASCII值;小寫字母的ASCII值-32=對應大寫字母的ASCII值.【解答】girl.以下程序的執(zhí)行結(jié)果是.#include<stdio.h>main(){intx;x=-3+4*5-6;printf("x1=%d\n",x);x=3+4%5-6;printf("x2=%d\n",x);x=-3*4%-6;printf("x3=%d\n",x);}【分析與提示】x1=11(4*5是20,-3+20是17,17-6等于11)x2=1(4%駢于4,3+4等于7,7-6等于1)x3=0(-3*4等于-12,-12%-6等于0)【解答】x1=11x2=1x3=0.以下程序的執(zhí)行結(jié)果是.#include<stdio.h>main(){printf("%d\n",NULL);printf("%d,%c\n〞,49,49);printf("%d,%c,%o\n〞,48+10,48+10,48+10);}【分析與提示】0(NULL勺ASCII碼值是0)49,1(數(shù)字1的ASCII碼值是49)58,:,72(48+10等于58,正好是“:〞的ASCII碼值,八進制表示是72)【解答】049,158,:,72三、改錯題.請修改以下程序,使其能夠通過編譯.#include<stdio.h>VoidMain(){inta=6;b=8;收集于網(wǎng)絡,如有侵權(quán)請聯(lián)系治理員刪除精品文檔intc;c=a*b;printf('%d,c);)【答案】錯誤的地方有3處:(1)第2行關(guān)鍵字應該小寫;(2)定義b時前面應該用逗號;(3)打印語句的格式應該用雙引號括起來.正確的程序如下:#include<stdio.h>voidmain(){inta=6,b=8;intc;c=a*b;printf("%d",c);).請修改以下程序,使其能夠正確運行.#include<stdio.h>voidmain();{floatf=7.12;charc=c;printf("%dn〞,int(f%3));printf("%c,c);)【答案】錯誤的地方有3處:(1)第2行main();不應該有分號;(2)定義charc="c";時,字符常量應該用單引號;(3)打印語句printf("%dn〞,int(f%3));的格式有錯,應該在f前的int用括號括起來,由于實型數(shù)據(jù)不能執(zhí)行取余運算.正確的程序如下:#include<stdio.h>voidmain(){floatf=7.12;charc='c';printf("%d\n",((int)f%3));printf("%c",c);)第3章順序結(jié)構(gòu)程序設計一.簡做題.程序有哪三種根本結(jié)構(gòu)?【解答】程序的三種根本結(jié)構(gòu)為:順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu).收集于網(wǎng)絡,如有侵權(quán)請聯(lián)系治理員刪除精品文檔.C語言的語句有哪幾類?表達式語句與表達式有什么不同?【解答】C語句可分為以下五類:表達式語句、函數(shù)調(diào)用語句、限制語句、復合語句和空語句.其中表達式語句與表達式的區(qū)別在于表達式語句是表達式加上“;〞組成.二、填空題1.符號'&'是運算符,&a是指.C語言中的空語句就是.Scanf函數(shù)中的“格式字符〞后面應該是,而不應該是假設想輸出字符%那么應該在“格式字符〞的字符串中用表示.intx=7;執(zhí)行x+=x-=x+x;后x的值是.inta=10,b=20;a+=b;b=a-b;a-=b;的功能是.答案:1.地址、變量a的內(nèi)存地址..一個分號..變量地址,變量名.,連續(xù)2個%號..-14.交換變量a,b的值,打印出a=20,b=10o三.運行程序?qū)懡Y(jié)果.以下程序的執(zhí)行結(jié)果是.#include<math.h>main(){doubled=3.2;intx,y;x=1.2;y=(x+3.8)/5.0;printf("%d\n",d*y);)【解答】0.以下程序的執(zhí)行結(jié)果是.main(){doubled;floatf;longl;inti;i=f=l=d=20/3;printf("%d%ld%f%f\n",i,l,f,d);)【解答】666.0000006.000000.以下程序的執(zhí)行結(jié)果是.main(){intk=17;printf("%d,%o,%x\n",k,k,k);)【解答】17,21,11.以下程序的執(zhí)行結(jié)果是.收集于網(wǎng)絡,如有侵權(quán)請聯(lián)系治理員刪除精品文檔#include<stdio.h>main()(chara,b,c,d;a='A',b='B',c='C',d='D';printf("%1c\n",a);printf("%2c\n",b);printf("%3c\n",c);printf("%4c\n",d);}【分析與提示】可以用%c格式輸出的,也可以用%#式輸出,所以與%md近似,m指出了要輸出數(shù)據(jù)的寬度.假設數(shù)據(jù)位數(shù)小于m,那么左端補空格,假設數(shù)據(jù)位數(shù)大于m,那么按實際位數(shù)輸出.【解答】ABCD.以下程序的執(zhí)行結(jié)果是.#include<stdio.h>main()(charc1,c2;scanf("%c%c",&c1,&c2);printf("c1=%c,c2=%c,c3=%d,c4=%d",c1++,--c2,c1,c2);}【解答】運行輸入:AB麗車>運行結(jié)果為:c1=A,c2=A,c3=65,c4=66.以下程序的執(zhí)行結(jié)果是.#include<stdio.h>main()(charc1,c2;scanf("%c,%c",&c1,&c2);++c1;--c2;printf("c1=%c,c2=%c\n",c1,c2);}【分析與提示】例如當輸入B,C<回車>,B,C的ASCII碼值為66,67,執(zhí)行++c1;--c2;后,c1為66+1變成67即C,c2為67-1變成66即B.【解答】運行輸入:B,C<回車>,運行結(jié)果為:c1=C,c2=B.以下程序的執(zhí)行結(jié)果是.main()(收集于網(wǎng)絡,如有侵權(quán)請聯(lián)系治理員刪除精品文檔charch='a';inta=98;unsignedb=1000;longc=123456789;floatx=3.14;doubley=1.2345678;printf("(1)a=%d,a=%c,ch=%d,ch=%c\n",a,a,ch,ch);printf("(2)b=%u\n",b);printf("(3)c=%ld\n",c);printf("(4)x=%f,y=%f\n",x,y);printf("(5)x=%e,y=%e\n",x,y);printf("(6)y=%-10.2f\n",y);}【解答】(1)a=98,a=b,ch=97,ch=a(2)b=1000(3)c=123456789(4)x=3.140000,y=1.234568(5)x=3.14000e+00,y=1.23457e+00(6)y=1.23.以下程序的執(zhí)行結(jié)果是.#include<stdio.h>main(){inta,b;floatx;scanf("%d,%d",&a,&b);x=a/b;printf("\nx=%f\n",x);}【解答】運行輸入:2,2<回車,,運行結(jié)果為:1.000000.當輸入12345,a時,給出程序的運行結(jié)果,執(zhí)行結(jié)果是.#include<stdio.h>main(){inta;charc;scanf("%3d,%c",&a,&c);printf("\n%d,%d\n",a,c);}【分析與提示】%md,m指出了要輸出數(shù)據(jù)的寬度.假設數(shù)據(jù)位數(shù)小于m,那么左端補空格,假設數(shù)據(jù)位數(shù)大于m那么按實際位數(shù)輸出.a的ASCII碼值是97.【解答】12345,97.分析下面程序,在鍵盤上輸入數(shù)據(jù)才能使得變量a=10,b=20,c1='A,c2='a',x=1.5,y=-3.75,z=67.8.程序如下:#include<stdio.h>main()收集于網(wǎng)絡,如有侵權(quán)請聯(lián)系治理員刪除精品文檔(inta,b;floatx,y,z;charc1,c2;scanf("%5d%5d%c%c%f%f%*f,%f',&a,&b,&c1,&c2,&x,&y,&z);printf("a=%d,b=%d,c1=%c,c2=%c,x=%f,y=%f,z=%f",a,b,c1,c2,x,y,z);}【分析與提示】按%5d格式/&入a與b的值時,要先鍵入三個空格,然后再鍵入10與20.%*f是用來禁止賦值的.在輸入時,對應%*f位置可以隨意輸入一個數(shù)(我們輸入1.5,該數(shù)不會賦值給任何變量的).【解答】運行輸入:一」」10一」-20Aa1.5--3.75-1.5,67.8<回車?.一個程序中,使用了多個scanf函數(shù)輸入數(shù)據(jù),用a=3,b=7,x=8.5,y=71.82,c1='A',c2='a'輸入到每個變量,應該如何輸入數(shù)據(jù)?main()(inta,b;floatx,y;charc1,c2;scanf("a=%d,b=%d",&a,&b);scanf("x=%f,y=%e",&x,&y);scanf("c1=%cc2=%c",&c1,&c2);printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n",a,b,x,y,c1,c2);}【分析與提示】在使用多個scanf函數(shù)輸入數(shù)據(jù)時,第一個輸入行末尾輸入的回車被第二個scanf函數(shù)吸收,因此在第二、三個scanf函數(shù)的雙引號后放置一個空格以抵消上行輸入的回車鍵.假設沒有一個空格,那么按上面輸入的數(shù)據(jù)會出錯.【解答】運行輸入:a=3,b=4<回車>X=8,y=71.82<回車>C1=AC2=a回車?運行結(jié)果:a=3,b=7,x=8.500000,y=71.820000,c1=A,c2=a四.編程題.由鍵盤輸入1個字母,輸出其ASCII碼值.【分析與提示】將一個字符常數(shù)賦給一個字符變量,并不是把該字符本身放到內(nèi)存單元中去,而是將該字符的ASCII代碼放到內(nèi)存單元中,因此,字符型數(shù)據(jù)也可以像整型數(shù)據(jù)那樣使用,可以用來表示一些特定范圍內(nèi)的整數(shù).所以int型與char型變量的值可以互換,分別用%c?口%~不同格式輸出就行了.但是注意這種轉(zhuǎn)換是有條件的.由于,char變量在內(nèi)存占一個字節(jié),而int整型變量占2個字節(jié).當int型高位字節(jié)是0時,char與int可以互換;假設不是0,那么不可以互換.例如,用%c格式輸出時,取低位字節(jié),高位字節(jié)被舍棄.收集于網(wǎng)絡,如有侵權(quán)請聯(lián)系治理員刪除精品文檔參考代碼:#include"stdio.h"main()(charch;ch=getchar();printf("%c,%d",ch,ch);)【解答】運行輸入:B<回車,運行結(jié)果:B,66.從鍵盤上輸入一個大寫字母,把它轉(zhuǎn)換成小寫字母,然后顯示出來.【分析與提示】大寫字母轉(zhuǎn)換小寫時ASCII碼值+32,相反的,小寫字母轉(zhuǎn)換成大寫字母時ASCII碼值-32.參考代碼:#include<stdio.h>main()(charx1,x2;printf("x1=?\n");scanf("%c",&x1);x2=x1+32;printf("%c,%c\n",x1,x2);)【解答】運行輸入:A<回車,運行結(jié)果:A,a.從鍵盤上輸入兩個實型數(shù),求兩數(shù)的和、差、積,輸出結(jié)果時要求小數(shù)局部占兩位.【提示】結(jié)果要求保存2位小數(shù),所以輸出的結(jié)果格式為%.2f0main()(floatx,y,a,b,c;printf("pleaseinputx,y:");scanf("%f,%f',&x,&y);a=x+y;b=x-y;c=x*y;printf("x=%f,y=%f\n",x,y);printf("x+y=%.2f\nx-y=%.2f\nx*y=%.2f\n",a,b,c);)【解答】運行輸入:pleaseinputx,y:10,20<回車〉運行結(jié)果:x=10.000000,y=20.000000x+y=30.00收集于網(wǎng)絡,如有侵權(quán)請聯(lián)系治理員刪除精品文檔x-y=-10.00x*y=200.00.編寫一個程序,求出給定半徑r的圓以及內(nèi)正n邊形的面積,并且輸出計算結(jié)果.r和n的值由用戶輸入._,.2...、.【分析與提示】由數(shù)學知識得到:半徑為r圓的面積sr,半徑為r圓-一.2的內(nèi)接正n邊形的面積Anrsin/2,其中2/n處理步驟:提示信息,接收參數(shù)值;計算圓的面積;計算正n邊形的面積;輸出結(jié)果.參考代碼:#include<stdio.h>#include<math.h>#definePI3.14main(){intn;floatr,s,area;printf("PleaseinputtheradiusandtheN.:\n");scanf("%f%d〞,&r,&n);s=PI*r*r;area=(n*r*r*sin(2*PI/n))/2.0;printf("S=%.2f\tA=%.2f\n",s,area);return(0);}運行結(jié)果如下:PleaseinouttheradiusandtheN.;15S=3.14A=2.38.華氏溫度與攝氏溫度之間的轉(zhuǎn)換公式是:c5/9(F32),編寫一個程序,將用戶輸入的華氏溫度轉(zhuǎn)換成攝氏溫度,并予以輸出.【分析與提示】首先要定義輸入輸出溫度為浮點型,且5/9兩數(shù)相除結(jié)果為整數(shù),5/9的值為0,故不能寫成5/9,而應寫成(5.0/9.0)*(f-32).結(jié)果要求保存2位小數(shù),所以輸出的結(jié)果格式為%5.2f0參考代碼:#include<stdio.h>main(){intf;floatc;printf("\npleaseinputtheF:");scanf("%d",&f);收集于網(wǎng)絡,如有侵權(quán)請聯(lián)系治理員刪除精品文檔c=5.0/9*(f-32);/*不能寫成5/9,兩數(shù)相除結(jié)果為整數(shù),5/9的值為0*/printf("theC.temperatureis:%.2f',c);return(0);}【解答】運行結(jié)果如下:pleaseinputtheF:75<回車〉theC.te,[eratureis:23.89.由鍵盤輸入5個學生的計算機成績,計算他們的平均分并保存2位小數(shù).【分析與提示】方法與上題類似,同樣是保存兩位有效數(shù)字%6.2f0參考代碼:main(){inta,b,c,d,e;floattotal,aver;printf("Pleseinput5students'scores:\n");scanf("%d,%d,%d,%d,%d",&a,&b,&c,&d,&e);total=a+b+c+d+e;aver=total/5.0;printf("Average:%6.2f\n",aver);}【解答】運行輸入:80,93,75,68,87<回車,運行結(jié)果:Average:80.60.編寫將輸入的英里轉(zhuǎn)換為公里,每英里等于5380英尺,每英尺等于12英寸,每英寸等于2.54厘米,每公里等于100000厘米.main(){doublemile,k;printf("entermile:");scanf("%lf",&mile);k=mile*5380*12*2.54/100000;printf("%lfmileis%lfkilometern",mile,k);}【解答】運行:entermile:2/2.000000mileis3.279648kilometer第4章選擇結(jié)構(gòu)程序設計4.1習題收集于網(wǎng)絡,如有侵權(quán)請聯(lián)系治理員刪除精品文檔一.填空題.a=3,b=4,c=5.邏輯表達式a+b>c&&b==c的值為,!(a>b)&&c||1的值為,!(a+b)+c-1&&b+c/2的值為二【分析與提示】此題考查運算符的優(yōu)先級別.【解答】0;1;1二、運行程序?qū)懡Y(jié)果.以下程序運行的運行結(jié)果為.#include<stdio.h>main(){inta=3,b=8,c=9,d=2,e=4;intmin;min=(a<b)?a:b;min=(min<c)?min:c;min=(min<d)?min:d;min=(min<e)?min:e;printf("Minis%d\n",min);}【分析與提示】此題程序的功能為:找出a,b,c,d,e中最小的值并輸出.【解答】Minis2.假設輸入3,4<回車>,以下程序運行的運行結(jié)果為;假設輸入4,3<回車>,以下程序運行的運行結(jié)果為.#include<stdio.h>main(){inta,b,c;printf("Inputa,b:");scanf("%d,%d",&a,&b);if(a>=b){c=a*b;printf("%d*%d=%d\n"a,b,c);}else{c=a/b;printf("%d/%d=%d\n';a,b,c);}}【分析與提示】此題程序的功能為:從鍵盤輸入變量a,b,計算c的值(假設a>=b,那么c=a*b,假設a<b貝Uc=a/b),并輸出a,b,c的值.【解答】3/4=0;4*3=12.以下程序運行的運行結(jié)果為.#include<stdio.h>main()intx=1,y=0,a=0,b=0;switch(x)case1:收集于網(wǎng)絡,如有侵權(quán)請聯(lián)系治理員刪除精品文檔switch(y){case0:a++;break;b++;break;}a++;b++;break;}printf("a=%d,b=%d\n",a,b);}【分析與提示】此題中case1:后面是一個switch語句,執(zhí)行完該語句后,直接執(zhí)行case2:后面的語句.【解答】a=2,b=1三.編程題.輸入一個字母,假設為小寫,那么把它變成大寫輸出.【分析與提示】小寫字母的ASCII碼值與其對應的大寫字母的ASCII碼值相差32.參考代碼:main(){charc;printf("請輸入一個字母\n");scanf("%c",&c);if(c>='a'&&c<=z')c=c-32;printf("%c\n",c);}.企業(yè)發(fā)放的獎金根據(jù)利潤提成.利潤(I)低于或等于10萬元時,獎金可提10%利潤高于10萬元,低于20萬元時,低于10萬元的局部按10%是成,高于10萬元的局部,可可提成7.5%;20萬到40萬之間時,高于20萬元的局部,可提成5%40萬到60萬之間時高于40萬元的局部,可提成3%60萬到100萬之間時,高于60萬元的局部,可提成1.5%,高于100萬元時,超過100萬元的局部按1%提成,從鍵盤/&入當月利潤I,求應發(fā)放獎金總數(shù)?【分析與提示】請利用數(shù)軸來分界,定位.注意定義時需把獎金定義成長整型.參考代碼:main()(longinti;intbonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;if(i<=100000)bonus=i*0.1;收集于網(wǎng)絡,如有侵權(quán)請聯(lián)系治理員刪除精品文檔elseif(i<=200000)bonus=bonus1+(i-100000)*0.075;elseif(i<=400000)bonus=bonus2+(i-200000)*0.05;elseif(i<=600000)bonus=bonus4+(i-400000)*0.03;elseif(i<=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;printf("bonus=%d",bonus);}.由鍵盤輸入三個整數(shù)ab、c,用條件運算符求出其中最大值和最小值.【分析與提示】首先比擬輸入的a,b的大小,并把大數(shù)裝入max小數(shù)裝入min中,然后再與c比擬,假設max小于c,那么把c賦予max;如果c小于min,那么把c賦予min.因此max內(nèi)總是最大數(shù),而min內(nèi)總是最小數(shù).最后輸出max和min的值即可.參考代碼:main(){inta,b,c,max,min;scanf("%d,%d,%d",&a,&b,&c);max=a>b?a:b;max=max>c?max:c;min=a<b?a:b;min=min<c?min:c;printf("最大值為:%d,最小值為:%d\n",max,min);).有一函數(shù):x「(x<1)y=2x-1(1<x<10)I3x-11(x>10)編一程序,輸入一個x值,輸出y值.【分析與提示】此題考查if語句的嵌套,應當注意if與else的配對關(guān)系.從最內(nèi)層開始,else總是與它上面最近的(未曾配對的)if配對.參考代碼:main(){floatx,y;printf("請輸入x的值\n");scanf("%f",&x);if(x<1)y=x;else收集于網(wǎng)絡,如有侵權(quán)請聯(lián)系治理員刪除精品文檔if(x>=10)y=3*x-11;elsey=2*x-1;printf("x=%6.2f,y=%6.2f',x,y);).從鍵盤上輸入星期號,并顯示該日期的英文名字.【分析與提示】本實例知識點:switch語句.switch語句的限制流程是:首先計算表達式的值,然后依次與每一個case中的常量值進行比擬,一旦發(fā)現(xiàn)了某個能夠匹配的值,就執(zhí)行該case后面的語旬組,直到遇到break語句為止.如果表達式的值與所有case中的常量都不匹配,那么執(zhí)行default后面的語句組.參考代碼:main(){intxqh;charywm;printf("請輸入星期號(1?7):\n");scanf("%d〞,&xqh);switch(xqh){case1:printf("Monday");break;printf("Tuesday");break;printf("Wednesday");break;printf("Thursday");break;printf("Friday");break;printf("Saturday");break;printf("Sunday");break;default:printf("error");))6.某市不同車牌的出租車3公里的起步價和計費分別為:夏利7元/公里,3公里以外2.1元/公里;富康8元/公里,3公里以外2.4元/公里;桑塔納9元,3公里以外2.7元/公里.編程:從鍵盤輸入乘車的車型及行車公里數(shù),輸出應付車資.【分析與提示】可設三個變量,分別表示乘車的車型、行車公里數(shù)和應付車資,根據(jù)乘車的車型和行車公里數(shù),計算出應付的車資.參考代碼:main(){intcx;/*定義乘車的車型變量cx*/floatgl,cf;/*定義行車公里數(shù)變量gl、應付車資變量cf*/printf("\t1-夏利\n\t2-富康\n\t3-桑塔納\n");printf("\t請輸入車型(1-3):");收集于網(wǎng)絡,如有侵權(quán)請聯(lián)系治理員刪除精品文檔scanf("%d",&cx);printf("\n\t請輸入行車公里數(shù):");scanf("%f',&gl);switch(cx){case1:if(gl<=3)cf=7.0;elsecf=7+(gl-3)*2.1;break;if(gl<=3)cf=8.0;elsecf=8+(gl-3)*2.4;break;if(gl<=3)cf=9.0;elsecf=9+(gl-3)*2.7;}printf("應付車資為%.1f\n",cf);}7.給一個不多于5位的正整數(shù),要求:①求出它是幾位數(shù);②分別打印出每一位數(shù)字;③按逆序打印出各位數(shù)字.如原數(shù)為12345,那么逆序為54321.【分析與提示】此題的思路是:設5個變量,分別代表個位、十位、百位、千位和萬位.從個位起,依次將各個位取出來,按取出的順序組合成新的數(shù)據(jù),并記錄當前取出的數(shù)字的個數(shù).參考代碼:#include"stdio.h"main(){unsignedx,m,n=0,w=0;unsignedge=0,shi=0,bai=0,qian=0,wan=0;printf("請輸入一個正整數(shù)");scanf("%u",&x);m=x;ge=m%10;m=m/10;w=1;n=ge;if(m){shi=m%10;m=m/10;w=2;n=n*10+shi;if(m){bai=m%10;m=m/10;w=3;n=n*10+bai;if(m){qian=m%10;m=m/10;w=4;n=n*10+qian;if(m){wan=m;w=5;n=n*10+wan;}}}}printf("\n%u為%u位數(shù)",n,w);printf("\n正整數(shù)的原序為:%u",x);printf("\n正整數(shù)的逆序為:%u",n);}收集于網(wǎng)絡,如有侵權(quán)請聯(lián)系治理員刪除精品文檔注:當該程序輸入一個較大的5位數(shù)時,輸出結(jié)果就不正確了,思考為什么?動手試一下怎樣修改該程序.第5章循環(huán)結(jié)構(gòu)程序設計一、填空題i.下面程序的功能是用“輾轉(zhuǎn)相除法〞求兩個正整數(shù)的最大公約數(shù).請?zhí)羁?#include<stdio.h>main()intr,mn;scanf("%d%d"&m&n);if(m<n(1);r=m%n;while(r){m=n;n=r;(2);}printf("%d\n",n);}【分析與提示】輾轉(zhuǎn)相除法:兩數(shù)相除,假設不能整除,那么以除數(shù)作為被除數(shù),余數(shù)作為除數(shù),繼續(xù)相除,直到余數(shù)為0時,當前除數(shù)就是最大公約數(shù)C【解答】(1)r=m;m=n;n=r;(2)r=m%n;二.運行程序?qū)懡Y(jié)果.以下程序運行的運行結(jié)果為.#include<stdio.h>main()inty=10;do{y--;}while(--y);printf("%d〞,y--);}【分析與提示】注意y--與y--的運算順序.【解答】0.以下程序運行的運行結(jié)果為.main(){intx=3,y=6,z=2;while(x++!=(y-=1)){z+=1;if(y<x)break;printf("%d,%d,%dn",x,y,z);收集于網(wǎng)絡,如有侵權(quán)請聯(lián)系治理員刪除精品文檔))【解答】4,5,3.以下程序運行的運行結(jié)果為.main()(inta=1,b=0;for(;a<3;a++)switch(a++)(case1:b--;case2:b++;case3:b+=3;break;)printf("%dn〞,b);)【解答】3.以下程序運行的運行結(jié)果為omain()(intx=10,y=10,i;for(i=0;i<2;y=i++)printf("%4d%4d,x--,y);)【解答】101090三.編程題.求s=1+2+4+8+—+64的值.【分析與提示】此題為數(shù)學項求和問題,數(shù)學項間的關(guān)系為:第n項的值為第n-1項的值2倍.參考代碼:main()(inti,s=0,t=1;while(t<=64){s=s+t;t=2*t;)printf("s=%d\n",s);).求s=1+1/2+1/3+…+1/100的值.【分析與提示】此題為分數(shù)數(shù)學項求和問題,要想得到每一項的正確結(jié)果,分式中的分子、分母至少要有一個為實型數(shù)據(jù).參考代碼:main(){inti;收集于網(wǎng)絡,如有侵權(quán)請聯(lián)系治理員刪除精品文檔floats=0,t;for(i=1;i<=100;i++){t=1.0/i;s=s+t;)printf("s=%.2f\n",s);).求T=1!+2!+3!+…+10!的值.【分析與提示】此題為數(shù)學項求和問題,數(shù)學項間的關(guān)系為:第n項的值為第n-1項的n倍.參考代碼:main(){longintt=0,tn=1;inti;for(i=1;i<=10;i++){tn=i*tn;t=t+tn;)printf("t=%ld",t);).求s=2/1+3/2+4/3+5/4+…+22/21的值.【分析與提示】請抓住分子與分母的變化規(guī)律.參考代碼:main(){intm;floats=0,n=2.0;for(m=1;m<=21;m++){s=s+n/m;n=n+1;)printf("s=%.2f\n",s);).輸入一行字母,分別統(tǒng)計其中的英文字母、空格、數(shù)字和其他字符的個【分析與提示】利用while語句,條件為輸入的字符不為'\n'.參考代碼:#include"stdio.h"main(){charc;intletters=0,space=0,digit=0,other=0;printf("請輸入一行字符:\n");while((c=getchar())!='\n')收集于網(wǎng)絡,如有侵權(quán)請聯(lián)系治理員刪除精品文檔{if(c>='a'&&c<=z'||c>=’A&&c<=Z')letters++;elseif(c=='')space++;elseif(c>='0'&&c<=9')digit++;elseother++;}printf("字母數(shù)=%d空格數(shù)=%d數(shù)字數(shù)=%d其它字符數(shù)=%d\n",letters,space,digit,other);}.求100以內(nèi)能被8整除的數(shù),并求它們的和.【提示】判斷一個數(shù)m能否被n整除的方法是:將m寸n取余數(shù),假設余數(shù)為0,那么為整除.參考代碼:main(){intn,s=0;for(n=1;n<=100;n++)if(n%8==0){s=s+n;printf("%4d",n);}printf("\ns=%d\n",s);}.打印出所有的“水仙花數(shù)〞.所謂“水仙花數(shù)〞是指一個三位數(shù),其中各位數(shù)字的立方和等于該數(shù)本身.例如153=13+53+33.【分析與提示】利用for循環(huán)限制100?999個數(shù),每個數(shù)分解出個位,十位,百位.參考代碼:main(){inti,j,k,n;printf("水仙花數(shù)是:");for(n=100;n<1000;n++){i=n/100;j=n/10-i*10;k=n%10;if(n==i*i*i+j*j*j+k*k*k)printf("%5d",n);}printf("\n");}.以下面的格式,輸出九九乘法表.收集于網(wǎng)絡,如有侵權(quán)請聯(lián)系治理員刪除

精精品文檔1*1=11*2=22*2=41*3=32*3=63*3=91*9=92*9=183*9=27??9*9=81【提示】分行與列考慮,共9行9列,利用雙重for循環(huán),外循環(huán)i限制行,內(nèi)循環(huán)j限制列.參考代碼:main(){inti,j;for(i=1;i<10;i++){for(j=1;j<=i;j++)printf("%d*%d=%-4d〞,j,i,j*i);printf("\n");}}.用for循環(huán)打印輸出以以下圖案.***********(圖形a)(圖形b)輸出圖形a程序代碼:#include"stdio.h"main(){inti,j,k;限制打印行數(shù)*/限制空格輸出位置*/限制每行*的輸出個數(shù)*/限制打印行數(shù)*/TOC\o限制打印行數(shù)*/限制空格輸出位置*/限制每行*的輸出個數(shù)*/限制打印行數(shù)*/{for(j=0;j<10+i;j++)/*printf("");for(k=0;k<4;k++)/*printf("*");printf("\n");}}輸出圖形b序代碼:#include“stdio.h"main(){inti,j,k;for(i=0;i<4;i++)/*{收集于網(wǎng)絡,如有侵權(quán)請聯(lián)系治理員刪除精品文檔for(j=0;j<3-i;j++)/*限制空格輸出位置*/printf("");for(k=0;k<2*i+1;k++)/*限制每行*的輸出個數(shù)*/printf(…);printf("n〞);)).猴子吃桃子問題.猴子第一天摘下假設干個桃子,當即吃了一半,還不過癮,又多吃了一個.第二天早上又將剩下的桃子吃掉一半,又多吃了一個.以后每天早上都吃了前一天剩下的一半零一個.到第十天早上再想吃時,見只剩一個桃子了.求第一天共摘了多少個桃子.【提示】采取逆向思維的方法,從后往前推斷.參考代碼:main(){intday,x1,x2;day=9;x2=1;while(day>0){x1=(x2+1)*2;x2=x1;day--;)printf("桃子總數(shù)=%d\n",x1);).求出500以內(nèi)所有素數(shù).【提示】判斷素數(shù)的方法:用一個數(shù)分別去除2到sqrt(這個數(shù)),如果能被整除,那么表明此數(shù)不是素數(shù),反之是素數(shù).參考代碼:#include"math.h"main(){intm,k,i,n=0;for(m=2;m<=500;m++){k=sqrt(m);for(i=2;i<=k;i++)if(m%i==0)break;if(i>=k+1){printf("%-5d",m);n=n+1;if(n%10==0)printf("\n");))printf("\n");收集于網(wǎng)絡,如有侵權(quán)請聯(lián)系治理員刪除精品文檔).輸入一個整數(shù)(0~99999),判斷它的位數(shù),并重新組合成同樣位數(shù)的最大值.如,輸入1345,輸出5431.【提示】先求出該整數(shù)的位數(shù);其次分解出每一位數(shù)(個位、十位、百位、千位、萬位);接著將5個位數(shù)進行排序;最后根據(jù)整數(shù)的位數(shù)重新組合成同樣位數(shù)的最大值.參考代碼:main(){longintnum,t,d1,d2,d3,d4,d5,n;/*分別代表個位,十位,百位,千位,萬位和位數(shù)*/printf("請輸入一個整數(shù)(0-99999):");scanf("%ld",&num);if(num>9999)n=5;elseif(num>999)n=4;elseif(num>99)n=3;elseif(num>9)n=2;elsen=1;printf("n=%ld\n",n);d5=num/10000;d4=(num-d5*10000)/1000;d3=(num-d5*10000-d4*1000)/100;d2=(num-d5*10000-d4*1000-d3*100)/10;d1=num-d5*10000-d4*1000-d3*100-d2*10;if(d5Vd4){t=d5;d5=d4;d4=t;}if(d5Vd3){t=d5;d5=d3;d3=t;}if(d5Vd2){t=d5;d5=d2;d2=t;}if(d5<d1){t=d5;d5=d1;d1=t;}if(d4Vd3){t=d4;d4=d3;d3=t;}if(d4Vd2){t=d4;d4=d2;d2=t;}if(d4vd1){t=d4;d4=d1;d1=t;}if(d3Vd2){t=d3;d3=d2;d2=t;}if(d3vd1){t=d3;d3=d1;d1=t;}if(d2vd1){t=d2;d2=d1;d1=t;}收集于網(wǎng)絡,如有侵權(quán)請聯(lián)系治理員刪除精品文檔switch(n){case5:num=d5*10000+d4*1000+d3*100+d2*10+d1;break;case4:num=d5*1000+d4*100+d3*10+d2;break;case3:num=d5*100+d4*10+d3;break;case2:num=d5*10+d4;break;case1:num=d5;}printf("重組后的數(shù)為:%ld\n",num);}13.求證100以內(nèi)哥德巴赫猜測是成立的.即:100以內(nèi)任何一個大的偶數(shù)(大于等于6)都可以表示成兩個素數(shù)之和.【分析與提示】我們先不考慮怎樣判斷一個數(shù)是否為素數(shù),而從整體上對這個問題進行考慮,可以這樣做:讀入一個偶數(shù)n,將它分成p和q,使n=p+q.怎樣分呢?可以令p從2開始,每次加1,而令q=n-p,如果p、q均為素數(shù),那么正為所求,否那么再試.參考代碼:#include<math.h>#include<stdio.h>main(){intj,n,p,q,flagp,flagq;printf("pleaseinputn:\n");scanf("%d",&n);if(((n%2)!=0)||(n<=4))printf("inputdataerror!\n");else{p=1;do{p=p+1;q=n-p;flagp=1;for(j=2;j<=(int)(sqrt(p));j++)/*判斷p是否為素數(shù)*/{if((p%j)==0){flagp=0;break;/*不是素數(shù),退出循環(huán)*/}}flagq=1;for(j=2;j<=(int)(sqrt(q));j++)/*判斷q是否為素數(shù)*/{if((q%j)==0){flagq=0;break;/*不是素數(shù),退出循環(huán)*/收集于網(wǎng)絡,如有侵權(quán)請聯(lián)系治理員刪除

精精品文檔)),p,q);}while(flagp*flag,p,q);printf("%d=%d+%d\n",n}}第6章數(shù)組與指針一.簡做題1、什么是數(shù)組,為什么在c語言中引用數(shù)組?【解答】數(shù)組是有序的、且具有相同性質(zhì)類型的數(shù)據(jù)集合.引用數(shù)組來實現(xiàn)成批地處理數(shù)據(jù).2、在C語言中如何表示一個字符串?【解答】運用字符型數(shù)組來表示字符串.3、指針是指什么?【解答】指針就是地址.二.運行程序?qū)懡Y(jié)果.以下程序的執(zhí)行結(jié)果是.main(){intk,a[6]={1,2,3,4,5,6};for(k=5;k>0;--k)if(a[k]%2==0)printf("%d",a[k]);}【提示】從后向前把能被2整除的數(shù)組元素輸出.【解答】642.以下程序的執(zhí)行結(jié)果是.#include<stdio.h>main(){charstr[]="SSSWLIA",c;intk;for(k=2;(c=str[k])!='\0';k++){switch(c){caseT:++k;break;case'L':continue;default:putchar(c);continue;}收集于網(wǎng)絡,如有侵權(quán)請聯(lián)系治理員刪除精品文檔putchar('*');))【提示】從字符串中第3個字符開始,把符合要求的字符運用輸出字符函數(shù)putchar()輸出;最后在其后輸出一個"*".【解答】SW*.以下程序的執(zhí)行結(jié)果是.main()(charss[10]="12345〞;strcat(ss,"6789'');gets(ss);printf("%s",ss);)假設/&入"ABC"【分析與提示】運用字符串連接函數(shù)strcat(),把兩個用"12345〞和“6789〞連接,對其重新賦值后,原有數(shù)值被刷新輸出新值.【解答】"ABC".以下程序的執(zhí)行結(jié)果是.#include<string.h>main()(chara[]="Monday",b[]="day";strcpy(a,b);printf("%s\t%s\n",a,b);printf("%c\t%c\n",a[4],a[5]);)【分析與提示】把b字符串的內(nèi)容拷貝到a字符串中,分別顯示a和b用內(nèi)容;再顯示數(shù)組元素a[4]和a[5]的內(nèi)容.【解答】daydayay.以下程序的執(zhí)行結(jié)果是.main()(intx[8]={8,7,6,5,0,0},*s;s=x+3;printf("%d",s[2]);}【分析與提示】運用指針顯示數(shù)組元素值.需要注意的是把數(shù)組x第3個元素的地址,賦給了指針變量s,所以s[2]里面存儲的是x[5],即00【解答】0.以下程序的執(zhí)行結(jié)果是.main(){收集于網(wǎng)絡,如有侵權(quán)請聯(lián)系治理員刪除精品文檔inta=7,b=8,*p,*q,*r;p=&a;q=&b;r=p;p=q;q=r;printf("%d,%d,%d,%d",*p,*q,a,b);)【分析與提示】指針變量存儲地址,而不是數(shù)值.【解答】8,7,7,8.以下程序的執(zhí)行結(jié)果是.main()(chara[]="language",b[]="programe";char*p,*q;p=a;q=b;while(*p&&*q)(if((*p)==(*q))printf("%c",*p);p++;q++;))【分析與提示】程序功能是,輸出兩個字符串中相同的字符.【解答】gae.以下程序的執(zhí)行結(jié)果是.include<stdio.h>include<string.h>main()(chara[80]="AB",b[80]="LMNP";inti=0;strcat(a,b);while(a[i++]!='\0')b[i]=a[i];puts(b);)【分析與提示】把b用內(nèi)容連接到a用上,再通過循環(huán)對b用重新賦值.【解答】LBLMNP三.編程題.已有10個數(shù),求它們當中的最大值.【分析與提示】運用一維數(shù)組保存10個數(shù),依次比擬保存最大值.參考代碼:main()(inti,a;intn[10]={8,2,4,6,7,1,0,85,32,54};a=n[0];收集于網(wǎng)絡,如有侵權(quán)請聯(lián)系治理員刪除精品文檔for(i=1;i<10;i++)if(n[i]>a)a=n[i];printf("a=%d\n",a);).從鍵盤輸入10個學生的成績,建立一個一維數(shù)組,求學生的平均分.【分析與提示】把10個學生的成績保存在一維數(shù)組,運用一重循環(huán)計算所有成績的總和,在此根底上計算平均值.參考代碼:main(){inti;floata[10],sum=0,ave;printf("輸入10個學生的成績:");for(i=0;i<10;i++){scanf("%f',&a[i]);sum=sum+a[i];)ave=sum/10;printf("10個學生的平均成績是%5.2f.",ave);).將兩個一維整型數(shù)組中的對應元素相加后顯示出來.【分析與提示】把數(shù)組下標相同的元素值相加.參考代碼:#include<stdio.h>main(){inti;intx[5]={10,8,7,6,5};inty[5]={-3,9,-10,-2,4};intz[5];for(i=0;i<5;i++)z[i]=x[i]+y[i];printf("\n相加后一維數(shù)組為:");for(i=0;i<5;i++)printf("%d",z[i]);}.線性查找.【分析與提示】從數(shù)組的第一個元素開始,依次將要查找的數(shù)和數(shù)組中元素比擬,直到找到該數(shù)或找遍整個數(shù)組為止.參考代碼:main(){inttable[10]={2,4,6,8,10,12,14,16,18,20};收集于網(wǎng)絡,如有侵權(quán)請聯(lián)系治理員刪除

精品文檔intfind=0,i,x;printf("請輸入要找的數(shù):");scanf("%d",&x);for(i=0;i<10;i++)if(x==table[i]){find=1;break;}if(find==1)printf("%d在table[%d]中\(zhòng)n",x,i);elseprintf("沒有找到數(shù)%d\n",x);}.求一個4X4矩陣對角線元素之和.【分析與提示】假設設置矩陣行列坐標分別為i和j,那么對角線元素下標滿足以下條件:i==j或i+j=3.參考代碼:main(){inta[4][4],i,j,sum=0;for(i=0;i<4;i++)for(j=0;j<4;j++){scanf("%d",&a[i][j]);if(i==j||i+j==3)sum=sum+a[i][j];}printf("對角線元素之和:%d",sum);}.將兩個二維數(shù)組對應元素加起來,存到另一個二維數(shù)組中.14b=14b=25361020a=30405060」【分析與提示】運用雙重循環(huán),把行列下標均相同的元素值相加.參考代碼:main(){inta[3][2]={10,20,30,40,50,60};intb[3][2]={1,4,2,5,3,6};intc[3][2];inti,j;for(i=0;i<3;i++){for(j=0;j<2;j++){c[i][j]=a[i][j]+b[i][j];printf("%4d",c[i][j]);收集于網(wǎng)絡,如有侵權(quán)請聯(lián)系治理員刪除精品文檔)printf("\n");)).找出一個二維數(shù)組中的鞍點.【分析與提示】所謂鞍點指該位置上的數(shù)在該行上最大,在該列上最小.注意并不是所有的二維數(shù)組都有鞍點.參考代碼:#defineN3#defineM3main()(inta[M][N],(*p)[N];/*p為指向一維數(shù)組的指針*/intmax,maxi,maxj;inti,j,k,m,n;intflag1=0,flag2=0;p=a;printf("給數(shù)組輸入數(shù)據(jù):\n");for(i=0;i<M;i++)for(j=0;j<N;j++)scanf("%d",p[i]+j);for(i=0;i<N;i++)(max=*p[i];for(j=0;j<M;j++)if(*(p[i]+j)>max){max=*(p[i]+j);maxj=j;}for(k=0,flag1=1;k<N&&flag1;k++)if(max>*(p[k]+j))flag1=0;if(flag1){printf("\n第%~行,第%~列的%~是鞍點!\n",i,maxj,max);flag2=1;}}if(!flag2)printf("\n矩陣中無鞍點!");}.用指針數(shù)組給一個整型二維數(shù)組輸入數(shù)值,并求出各行元素的和.【分析與提示】用二維數(shù)組a各行的首地址賦予指針數(shù)組p的各個元素,通過此循環(huán)嵌套,為各個數(shù)組元素賦值.main(){inta[3][3],*p[3],i,j,sum;收集于網(wǎng)絡,如有侵權(quán)請聯(lián)系治理員刪除精品文檔forfor(i=0;i<3;i++)p[i]=a[i];/*把二維數(shù)組元素*/for(i=0;i<3;i++)/**/for(j=0;j<3;j++)scanf("%d",p[i]+j);printf("和分別為:");for(i=0;i<3;i++)/**/{sum=0;for(j=0;j<3;j++)sum=sum+*(p[i]+j);printf("%d",sum);/*}}9.用指針實現(xiàn)合并兩個字符串.【分析與提示】a各行的首地址賦予指針數(shù)組p的各個通過此循環(huán)嵌套,為各個數(shù)組元素賦值通過此循環(huán)嵌套,求各行數(shù)組元素的和分行輸出每一行的和值*/把第二個字符串中字符逐個賦值給第一個字符串,需要注意的是兩個字符數(shù)組下標變量的初值不同參考代碼:#include<stdio.h>#include<string.h>main(){chars1[40],s2[20],*p1,*p2;inti,j,n;p1=s1;p2=s2;printf("輸入第一個字用:");gets(p1);printf("\n輸入第二個字用:");gets(p2);n=strlen(p1);for(i=n,j=0;*(p2+j)!='\0';i++,j++)*(p1+i)=*(p2+j);*(p1+i尸\0';printf("\n輸出合并后字用為:");puts(p1);}10.從輸入的5個字符串中找出最長的一個字符串輸出.【分析與提示】運用測試字符用長度函數(shù)strlen,進行用比擬參考代碼:include<stdio.h>include<string.h>收集于網(wǎng)絡,如有侵權(quán)請聯(lián)系治理員刪除精品文檔main()(chara[5][80],*sp;inti;for(i=0;i<5;i++)gets(a[i]);for(i=0;i<5;i++)if(strlen(sp)<strlen(a[i]))sp=a[i];printf("thelongeststringis%s",sp);}第7章函數(shù)與指針一.運行程序?qū)懡Y(jié)果.以下程序運行的結(jié)果為.intx1=30,x2=40;main()(intx3=10,x4=20;swap(x3,x4);swap(x2,x1);printf("%d,%d,%d,%d\n〞,x3,x4,x1,x2);}swap(intx,inty){x1=x;x=y;y=x1;}【提示】此題考查全局變量的作用范圍.【解答】10,20,40,40.以下程序運行的結(jié)果為o#include<stdio.h>voidnum(){externintx,y;inta=15,b=10;x=a-b;y=a+b;}intx,y;main(){inta=7,b=5;x=a+b;y=a-b;num();printf("%d,%d\n",x,y);}【分析與提示】用extern進行外部變量說明.收集于網(wǎng)絡,如有侵權(quán)請聯(lián)系治理員刪除精品文檔【解答】5,25.以下程序運行的結(jié)果為omain(){inta[5]={5,10,-7,3.7),i,j,t;sort(a);for(i=0;i<=4;i++)printf("%3d",a[i]);)sort(inta[]){inti,j,t;for(i=0;i<4;i++)for(j=0;j<4-i;j++)if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;})【提示】該程序的功能是將5個數(shù)由小到大進行排序.【解答】-735710.以下程序運行的結(jié)果為.#defineSQR(x)2*x+1main(){inta,b,c;a=3;b=2;c=1;a*=SQR(b+c)/SQR(b+c);printf("%d\n",a);}【提示】a*=SQR(b+c)/SQR(b+c);宏展開為a*=2*b+c+1/2*b+c+1;【解答】21.以下程序運行的結(jié)果為ovoidswap1(intx,inty){intt;t=x;x=y;y=t;return;}voidswap2(int*x,int*y){intt;t=*x;*x=*y;*y=t;return;}main(){intx=3,y=5;printf("%d,%d\n",x,y);swap1(x,y);printf("%d,%d\n",x,y);swap2(&x,&y);收集于網(wǎng)絡,如有侵權(quán)請聯(lián)系治理員刪除

精品文檔printf("%d,%d\n",x,y);)【提示】注意指針變量做函數(shù)參數(shù)時,改變形參的值就等同與改變了實參的值.【解答】3,53,55,3.以下程序運行的結(jié)果為clongfib(intg)switch(g)Case0:return0;ase1:ase2:return1;}return(fib(g-1)+fib(g-2));}main(){longk;k=fib(7);printf("k=%ld\n",k);}【提示】注意函數(shù)遞歸調(diào)用的條件.【解答】k=13二.編程題.圓的半徑為R,求它的面積.#i#include<stdio.h>/*#include<math.h>/*#definePI3.14159/*main()/*{floatarea(float);/*說明*/floatr,s;/*包含文件*/包含數(shù)學庫函數(shù)*/宏定義*/主函數(shù)*/函數(shù)area的原型,即函數(shù)主函數(shù)中的局部變量定義*/pri*/printf(“請輸入半徑n");scanf("%f',&r);s=area(r);/*printf(“圓的半徑為n",r);printf(“圓的面積為n",s);)floatarea(floata)/*調(diào)用area函數(shù)*/定義函數(shù)area*/收集于網(wǎng)絡,如有侵權(quán)請聯(lián)系治理員刪除精品文檔{floatd;d=PI*a*a;return(d);/*返回計算結(jié)果*/)【提示】本程序由主函數(shù)main()和自定義函數(shù)area()組成.程序的前2句是文件包含語句,即把輸入、輸出標準函數(shù)和數(shù)學函數(shù)的文件包含到本程序中.第3句是宏定義語句,即用標識符PI來代替數(shù)字3.14159.運行:請輸入半徑:1.1/顯示:圓的半徑為:1.1圓的面積為:3.801324.編寫一個函數(shù)輸出三個數(shù)中的最大值.【提示】在main()函數(shù)中輸入數(shù)據(jù),調(diào)用求3個數(shù)最大信函數(shù).intmax(intx,inty,intz){intt;if(x>=y)t=x;elset=y;if(t<z)t=z;return(t);)main(){intx,y,z;printf("input3numbers:");scanf("%d%d%d",&x,&y,&z);printf("max=%d\n",max(x,y,z));)n逆序輸出.即假設n=456,那么輸出十位和百位n逆序輸出.即假設n=456,那么輸出十位和百位分別放入c,b,a中,然【提示】將一個三位數(shù)n分解為個位、后逆序輸出.intrec(intx){inta,b,c;a=x/100;b=x%100/10;c=x%10;return(c*100+b*10+a);)main(){intrec(intx);inty,z;printf("inputanumber(100-999):");收集于網(wǎng)絡,如有侵權(quán)請聯(lián)系治理員刪除精品文檔scanf("%d",&y);z=rec(y);printf("thechangednumberis:%d\n",z);).編寫比擬兩字符串是否相等的函數(shù).【提示】按ASCII碼值大小比擬,將兩個字符串自左至右逐個字符相比,直到出現(xiàn)不同的字符或遇到'\0'為止.如果全部字符相同,那么認為相等,如果出現(xiàn)不同的字符,那么以第一個不同的字符的比擬結(jié)果為準.比擬結(jié)果由函數(shù)值帶回.參考代碼:#include<stdio.h>intcmp();main(){intresu;chars1[100],s2[100];printf("Pleaseinputs1:\n");gets(s1);printf("Pleaseints2:\n");gets(s2);resu=cmp(s1,s2);printf("%s與%$的比擬結(jié)果是%d.",s1,s2,resu);)intcmp(s1,s2)chars1[],s2[];{inti=0;while((s

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論