POJ Grids基本練習題 資料_第1頁
POJ Grids基本練習題 資料_第2頁
POJ Grids基本練習題 資料_第3頁
POJ Grids基本練習題 資料_第4頁
POJ Grids基本練習題 資料_第5頁
已閱讀5頁,還剩88頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、POJ Grids基本練習題 資料POJ1004 Financial Management- 3 -POJ1664 放蘋果- 5 -POJ2675 計算書費- 7 -POJ2676 整數(shù)的個數(shù)- 9 -POJ2679 整數(shù)的立方和- 11 -POJ2680 化驗診斷- 12 -POJ2684 求階乘的和- 15 -POJ2687 數(shù)組逆序重放- 16 -POJ2688 求字母的個數(shù)- 17 -POJ2689 大小寫字母互換- 18 -POJ2694 逆波蘭表達式- 19 -POJ2696 計算表達式的值- 20 -POJ2699 自整除數(shù)- 22 -POJ2701 與7無關的數(shù)- 23 -PO

2、J2702 密碼翻譯- 24 -POJ2703 騎車與走路- 26 -POJ2707 求一元二次方程的根- 27 -POJ2714 求平均年齡- 29 -POJ2715 誰拿了最多的獎學金- 30 -POJ2718 晶晶赴約會- 33 -POJ2719 陶陶摘蘋果- 34 -POJ2720 大象喝水- 35 -POJ2722 學分績點- 36 -POJ2733 判斷閏年- 38 -POJ2734 十進制到八進制- 39 -POJ2750 雞兔同籠- 40 -POJ2753 菲波那契數(shù)列- 41 -POJ2758 菲波那契數(shù)列(2)- 42 -POJ2764 數(shù)根- 43 -POJ2767 簡單

3、密碼- 45 -POJ2780 Evas Problem- 48 -POJ2786 Pell數(shù)列- 49 -POJ2796數(shù)字求和- 50 -POJ2807兩倍- 51 -POJ 2808校門外的樹- 53 -POJ2856 計算郵資- 55 -POJ2870 求矩陣的加法- 57 -POJ2871 整數(shù)奇偶排序- 59 -POJ2882 Program I- 61 -POJ2883 checking order- 63 -POJ2886 能被3除盡的數(shù)之和- 65 -POJ2887 能被3、5、7整除的數(shù)- 66 -POJ2888字符串中的數(shù)字- 68 -POJ2926 算數(shù)運算- 70 -

4、POJ2927 判斷數(shù)字個數(shù)- 71 -POJ2930 加減乘除- 73 -POJ2933 停車場收費- 75 -POJ2938 按順序輸出- 77 -POJ2943 小白鼠排隊- 78 -POJ3142 球彈跳高度的計算- 80 -POJ3164 奇偶排序- 81 -POJ3195 最大公約數(shù)- 82 -POJ3248 最大公約數(shù)- 83 -POJ3255 十進制到六進制- 85 -POJ3670 計算鞍點- 87 -POJ3708 1的個數(shù)- 89 -POJ3756 多邊形內(nèi)角和- 91 -POJ1004 Financial ManagementTime Limit: 1000ms Mem

5、ory limit: 10000kB 題目描述 Larry graduated this year and finally has a job. He's making a lot of money, but somehow never seems to have enough. Larry has decided that he needs to grab hold of his financial portfolio and solve his financing problems. The first step is to figure out what's been g

6、oing on with his money. Larry has his bank account statements and wants to see how much money he has. Help Larry by writing a program to take his closing balance from each of the past twelve months and calculate his average account balance. 輸入 The input will be twelve lines. Each line will contain t

7、he closing balance of his bank account for a particular month. Each number will be positive and displayed to the penny. No dollar sign will be included. 輸出 The output will be a single number, the average (mean) of the closing balances for the twelve months. It will be rounded to the nearest penny, p

8、receded immediately by a dollar sign, and followed by the end-of-line. There will be no other spaces or characters in the output. 樣例輸入 100.00489.1212454.121234.10823.05109.205.271542.25839.1883.991295.011.75樣例輸出 $1581.42Global No. 6 思路:這道題就是計算一下12個月的平均工資。代碼:#include<iostream>using namespace st

9、d;int main() double a12; int i; for(i=0;i<12;i+) cin>>ai; double sum=0.0; for(i=0;i<12;i+) sum+=ai; double average; average=sum/12; cout<<"$"<<average<<endl; return 0;運行結果:POJ1664 放蘋果Time Limit: 1000ms Memory limit: 65536kB 題目描述 把M個同樣的蘋果放在N個同樣的盤子里,允許有的盤子空著不放,問

10、共有多少種不同的分法?(用K表示)5,1,1和1,5,1 是同一種分法。 輸入 第一行是測試數(shù)據(jù)的數(shù)目t(0 <= t <= 20)。以下每行均包含二個整數(shù)M和N,以空格分開。1<=M,N<=10。 輸出 對輸入的每組數(shù)據(jù)M和N,用一行輸出相應的K。 樣例輸入 17 3樣例輸出 8Global No. 666 解題思路:所有不同的擺放方法可以分為兩類:至少有一個盤子空著和所有盤子都不空,分別計算這兩類擺放方法的數(shù)目,然后把他們加起來。對于至少空著一個盤子的情況,則N個盤子擺放M個蘋果的方法數(shù)目與N-1個盤子擺放M個蘋果的擺放方法數(shù)目等于N個盤子擺放M-N個蘋果的擺放方法

11、數(shù)目。據(jù)此來用遞歸的方法求解這個問題。設f(m,n)為m個蘋果,n個盤子的放法數(shù)目,則先對n進行討論,如果n>m,必有n-m個盤子空著,去掉他們對白放蘋果方法數(shù)目不產(chǎn)生影響;即if(n>m),f(m,n)=f(m,m) 當n<=m時不同的放法可以分成兩類:即有至少有一個盤子空著或者所有盤子都有蘋果,前一種情況相當于f(m,n)=f(m,n-1) ;后一種情況可以從每個盤子中拿掉一個蘋果,不影響不同放法的數(shù)目,即有f(m,n)=f(m-n,n)??偟姆盘O果的放法數(shù)目等于兩者的和,即f(m,n)=f(m,n-1)+f(m-n,n)。整個遞歸過程描述如下:int f(int m,i

12、nt n)if(n=1|m=0) return 1;if(m<n) return f(m,m);return f(m,n-1)+f(m-n,n);出口條件說明:當n=1時,所有蘋果必須放在一個盤子里,所以返回1;當蘋果可放時,定義1中做法;遞歸的兩條路,第一條n會逐漸減少,終會到達出口“n=1”;第二條m會逐漸減少,因為n>m時會返回f(m,m),所以終會達到出口“m=0”程序代碼:#include<iostream>using namespace std;int count(int x,int y)if(y=1|x=0) return 1;if(x<y) ret

13、urn count(x,x);return count(x,y-1)+count(x-y,y);int main()int t,m,n;cin>>t;for(int i=0;i<t;i+)cin>>m>>n; cout<<count(m,n)<<endl; while(1); return 0;運行結果:POJ2675 計算書費Time Limit: 1000ms Memory limit: 10000kB 題目描述 下面是一個圖書的單價表:計算概論 28.9 元/本數(shù)據(jù)結構與算法 32.7 元/本數(shù)字邏輯 45.6元/本C+程

14、序設計教程 78 元/本人工智能 35 元/本計算機體系結構 86.2 元/本編譯原理 27.8元/本操作系統(tǒng) 43 元/本計算機網(wǎng)絡 56 元/本JAVA程序設計 65 元/本給定每種圖書購買的數(shù)量,編程計算應付的總費用。輸入 輸入第一行包含一個正整數(shù)k(0<k<100),表示有k組測試數(shù)據(jù);接下來k行,每行包含一組測試數(shù)據(jù)。每組測試數(shù)據(jù)包含10個整數(shù)(大于等于0,小于等于100),分別表示購買的計算概論、數(shù)據(jù)結構與算法、數(shù)字邏輯、C+程序設計教程、人工智能、計算機體系結構、編譯原理、操作系統(tǒng)、計算機網(wǎng)絡、JAVA程序設計的數(shù)量(以本為單位)。每兩個整數(shù)用一個空格分開。 輸出 對

15、于每組測試數(shù)據(jù),輸出一行。該行包含一個浮點數(shù)f,表示應付的總費用。精確到小數(shù)點后兩位。可用printf("%.2fn", sum)來輸出sum的值,并精確到小數(shù)點后兩位。 樣例輸入 21 5 8 10 5 1 1 2 3 4 3 5 6 3 100 1 1 0 1 0樣例輸出 2140.204427.80Global No. 1677 Source Code:#include<iostream>#include<iomanip>using namespace std;#define M 100int main() int n,i,j,count10;

16、 double price10=28.9,32.7,45.6,78.0,35.0,86.2,27.8,43.0,56.0,65.0; double paid10,sum;cin>>n; for(j=1;j<=n;j+) sum=0; for(i=0;i<10;i+) cin>>counti; paidi=pricei*counti; sum+=paidi; cout<<setiosflags(ios:fixed)<<setprecision(2)<<sum<<endl; return 0; Result:POJ

17、2676 整數(shù)的個數(shù)Time Limit: 1000ms Memory limit: 65536kB 題目描述 給定k(1<k<100)個正整數(shù),其中每個數(shù)都是大于等于1,小于等于10的數(shù)。寫程序計算給定的k個正整數(shù)中,1,5和10出現(xiàn)的次數(shù)。 輸入 輸入有兩行:第一行包含一個正整數(shù)k,第二行包含k個正整數(shù),每兩個正整數(shù)用一個空格分開。 輸出 輸出有三行,第一行為1出現(xiàn)的次數(shù),第二行為5出現(xiàn)的次數(shù),第三行為10出現(xiàn)的次數(shù)。 樣例輸入 51 5 8 10 5 樣例輸出 121Global No. 1678 Source Code:#include<iostream>#de

18、fine N 100using namespace std;int main() int k,i,c1=0,c2=0,c3=0; cin>>k; int aN; for(i=0;i<k;i+) cin>>ai; for(i=0;i<k;i+) if(ai=1) c1+; else if(ai=5) c2+; else if(ai=10) c3+; cout<<c1<<endl; cout<<c2<<endl; cout<<c3<<endl; while(1); return 0;Resu

19、lt:POJ2679 整數(shù)的立方和Time Limit: 1000ms Memory limit: 65536kB 題目描述 給定一個正整數(shù)k(1<k<10),求1到k的立方和m。即m=1+2*2*2+k*k*k。 輸入 輸入只有一行,該行包含一個正整數(shù)k。 輸出 輸出只有一行,該行包含1到k的立方和。 樣例輸入 5 樣例輸出 225Global No. 1681 Scourse Code:#include<iostream>using namespace std;int main() int n,i=2,sum=1; cin>>n; while(i<

20、=n) sum+=i*i*i; i+; cout<<sum<<endl; return 0; Result:POJ2680化驗診斷Time Limit: 1000ms Memory limit: 65536kB 題目描述 下表是進行血常規(guī)檢驗的正常值參考范圍,及化驗值異常的臨床意義:給定一張化驗單,判斷其所有指標是否正常,如果不正常,統(tǒng)計有幾項不正常?;瀱紊系闹当仨殗栏衤湓谡⒖贾捣秶鷥?nèi),才算是正常。正常參考值范圍包括邊界,即落在邊界上也算正常。 輸入 輸出 對于每組測試數(shù)據(jù),輸出一行。如果所有檢驗項目正常,則輸出:normal;否則輸出不正常的項的數(shù)目。 樣例輸入

21、 2female 4.5 4.0 115 37 200male 3.9 3.5 155 36 301樣例輸出 normal3Global No. 1682 Source Code:#include<string>#include<iostream>using namespace std;struct Info string sex; float a,b,c,d,e;int main() Info info101; int n,i,k=0; cin>>n; while(k<n) int countN=0,countI=0; cin>>info

22、i.sex>>infoi.a>>infoi.b>>infoi.c>>infoi.d>>infoi.e; if(infoi.sex="female") if(infoi.a<=10.0 && infoi.a>=4.0) countN+; else countI+; if(infoi.b<=5.5 && infoi.b>=3.5) countN+; else countI+; if(infoi.c<=150 && infoi.c>=11

23、0) countN+; else countI+; if(infoi.d<=40 && infoi.d>=36) countN+; else countI+; if(infoi.e<=300 && infoi.e>=100) countN+; else countI+; if(countN=5) cout<<"normal"<<endl; else cout<<countI<<endl; else if(infoi.a<=10.0 && infoi.

24、a>=4.0) countN+; else countI+; if(infoi.b<=5.5 && infoi.b>=3.5) countN+; else countI+; if(infoi.c<=160 && infoi.c>=120) countN+; else countI+; if(infoi.d<=48 && infoi.d>=42) countN+; else countI+; if(infoi.e<=300 && infoi.e>=100) countN+; el

25、se countI+; if(countN=5) cout<<"normal"<<endl; else cout<<countI<<endl; k+; return 0;Result:POJ2684 求階乘的和Time Limit: 1000ms Memory limit: 65536kB 題目描述 求前n(1<n<12)個整數(shù)的階乘的和(即求1!+2!+3!+.+n!)。 輸入 輸入有一行:整數(shù)n。 輸出 輸出有一行:階乘得和。 樣例輸入 5樣例輸出 153Global No. 1686 #include<

26、iostream>using namespace std;long int function(int n) long int h; if (n>1) h=n*function(n-1); else h=1; return h; int main() int data,count,sum=0; cin>>data; for(count=1;count<=data;count+) sum+=function(count); cout<<sum<<endl; while(1); return 0;POJ2687數(shù)組逆序重放Time Limit:

27、1000ms Memory limit: 65536kB 題目描述 將一個數(shù)組中的值按逆序重新存放。例如,原來的順序為8,6,5,4,1。要求改為1,4,5,6,8。 輸入 輸入為兩行:第一行數(shù)組中元素的個數(shù)n(1<n<100),第二行是n個整數(shù),每兩個整數(shù)之間用空格分隔。 輸出 輸出為一行:輸出逆序后數(shù)組的整數(shù),每兩個整數(shù)之間用空格分隔。 樣例輸入 58 6 5 4 1樣例輸出 1 4 5 6 8Global No. 1689 Scourse Code:#include<iostream>#define N 100using namespace std;int mai

28、n() int count,total; cin>>total; int aN; for(count=0;count<total;count+) cin>>acount; for(count=total-1;count>=0;count-) cout<<acount<<" " return 0;POJ2688 求字母的個數(shù)Time Limit: 1000ms Memory limit: 65536kB 題目描述 在一個字符串中找出元音字母a,e,i,o,u出現(xiàn)的次數(shù)。 輸入 輸入一行字符串(字符串中可能有空格,請用

29、gets(s)方法把一行字符串輸入到字符數(shù)組s中),字符串長度小于80個字符。 輸出 輸出一行,依次輸出a,e,i,o,u在輸入字符串中出現(xiàn)的次數(shù),整數(shù)之間用空格分隔。 樣例輸入 If so, you already have a Google Account. You can sign in on the right.樣例輸出 5 4 3 7 3提示 注意,只統(tǒng)計小寫元音字母a,e,i,o,u出現(xiàn)的次數(shù)。 Global No. 1690 Scourse Code:#include<iostream>#define N 80using namespace std;int main(

30、) char testN; int counta=0,counte=0,counti=0,counto=0,countu=0; gets(test); int i; for(i=0;i<N && testi!='0'i+) if(testi='a') counta+; else if(testi='e') counte+; else if(testi='i') counti+; else if(testi='o') counto+; else if (testi='u') co

31、untu+; cout<<counta<<" "<<counte<<" "<<counti<<" "<<counto<<" "<<countu<<" "<<endl; return 0;POJ2689 大小寫字母互換Time Limit: 1000ms Memory limit: 65536kB 題目描述 把一個字符串中所有出現(xiàn)的大寫字母都替換成小寫字母,同時把小寫

32、字母替換成大寫字母。 輸入 輸入一行:待互換的字符串。 輸出 輸出一行:完成互換的字符串(字符串長度小于80)。 樣例輸入 If so, you already have a Google Account. You can sign in on the right. 樣例輸出 iF SO, YOU ALREADY HAVE A gOOGLE aCCOUNT. yOU CAN SIGN IN ON THE RIGHT. 提示 由于輸入字符串中有空格,因此應該用get(s)把一行字符串讀入到字符數(shù)組s中??捎胮rintf("%sn",s)輸出字符串s。 Global No. 1

33、691 int main()char aM;gets(a);fun(a);while(1); return 0;通過代碼:#include<iostream>#include<string>#define M 80using namespace std;void fun(char a)int i;for(i=0;ai;i+) if(ai>='A') && (ai<='Z') ai+=32;/轉(zhuǎn)化成小寫字母else if(ai>='a') && (ai<='z&

34、#39;) ai-=32;/轉(zhuǎn)化成大寫字母printf("%sn",a);POJ2694逆波蘭表達式問題描述:逆波蘭表達式是一種吧運算符前置的算術表達式,例如普通的表達式2+3的逆波蘭表示為+23.逆波蘭表達式的優(yōu)點是運算符之間不必有優(yōu)先級的關系,也不必有括號改變運算次序,例如(2+3)*4的逆波蘭表示法為*+2 3 4.本題求解的逆波蘭表達式的值。輸入數(shù)據(jù):輸入為一行,其中運算符和運算數(shù)之間都用空格分隔,運算數(shù)是浮點數(shù)。輸出要求:輸出為一行,即表達式的值。輸入樣例:* + 11.0 12.0 +24.0 35.0+輸出樣例:1357.000000解題思路:這個問題看上去有

35、些復雜,如果只是簡單地模擬計算步驟不太容易想清楚,但是如果用遞歸的思想就非常容易想清楚。這里根據(jù)逆波蘭表達式的定義進行遞歸求解。在遞歸函數(shù)中,針對當前的輸入有5種情況:1。輸入是常數(shù),則表達式的值就是這個常數(shù);2.輸入的是+,則表達式的值是再繼續(xù)讀入兩個表達式并計算出他們的值,然后將他們的值進行相加;3.輸入-;4.輸入是*;5.輸入是/;后三種情況與2.相同,只是計算從+變成-,*,/。參考程序:#include<stdio.h>#include<math.h>double exp()char a10;scanf("%s",a);switch(a0

36、)case'+':return exp()+exp();case'-':return exp()-exp(); case'*':return exp()*exp(); case'/':return exp()/exp();default:return atof(a);void main()double ans;ans=exp();printf("%fn",ans);POJ2696 計算表達式的值Time Limit: 1000ms Memory limit: 65536kB 題目描述 有些語言中表達式的運算符使

37、用字符串表示,例如用mul代表*,用div代表/,用add代表+,用sub代表-,用mod代表%。 輸入 第一行為表達式的個數(shù)n。其余n行每行一個表達式,表達式由兩個整數(shù)及其中間的運算符字符串表示。 輸出 輸出為n行,每行是對應表達式的值。注意,此處要求的所有運算均為整數(shù)運算。 樣例輸入 5345 mul 1223945 div 12321 add 343340 sub 211377 mod 27樣例輸出 4209032866412926Global No. 1698 Source Code:#include<iostream>#include<string>using

38、 namespace std;int main() string s; char ss4; int a,b; int i,n; cin>>n; for(i=0;i<n;i+) cin>>a; cin>>ss; s=ss; Result: cin>>b; if(s="add") cout<<a+b<<endl; else if(s="sub") cout<<a-b<<endl; else if(s="mul") cout<<

39、a*b<<endl; else if(s="div") cout<<a/b<<endl; else if(s="mod") cout<<a%b<<endl; return 0; POJ2699自整除數(shù)Time Limit: 1000ms Memory limit: 65536kB 題目描述 對一個整數(shù)n,如果其各個位數(shù)的數(shù)字相加得到的數(shù)m能整除n,則稱n為自整除數(shù).例如21,21%(2+1)=0,所以21是自整除數(shù).現(xiàn)求出從10到n(n<100)之間的所有自整除數(shù). 輸入 有一行,整數(shù)n,

40、(10<=n<100) 輸出 有多行.按從小到大的順序輸出所有大于等于10,小于等于n的自整除數(shù),每行一個自整除數(shù). 樣例輸入 Source Code:#include<iostream>using namespace std;int main() int n,n1,n2,sum=0,i; cin>>n; for(i=10;i<=n;i+) n1=i%10; n2=i/10; sum=n1+n2; if(i%sum=0) cout<<i<<endl; return 0;47樣例輸出 10121820212427303640424

41、5Global No. 1701 POJ2701 與7無關的數(shù)Time Limit: 1000ms Memory limit: 65536kB 題目描述 一個正整數(shù),如果它能被7整除,或者它的十進制表示法中某個位數(shù)上的數(shù)字為7,則稱其為與7相關的數(shù).現(xiàn)求所有小于等于n(n<100)的與7無關的正整數(shù)的平方和. 輸入 輸入為一行,正整數(shù)n,(n<100) 輸出 輸出小于等于n的與7無關的正整數(shù)的平方和 樣例輸入 21樣例輸出 2336Global No. 1703 Scource Code:1. #include<iostream>2. using namespace s

42、td;3. int main()4. 5. int n;6. cin>>n;7. int i,j,sum=0;8. for(i=1;i<=n;i+)9. if(i%7!=0 && i/10!=7 && i%10!=7)10. sum+=i*i;11. cout<<sum<<endl;12. return 0;13. POJ2702密碼翻譯Time Limit: 1000ms Memory limit: 65536kB 題目描述 在情報傳遞過程中,為了防止情報被截獲,往往需要對情報用一定的方式加密,簡單的加密算法雖然不足以

43、完全避免情報被破譯,但仍然能防止情報被輕易的識別.我們給出一種最簡的的加密方法,對給定的一個字符串,把其中從a-y,A-Y的字母用其后繼字母替代,把z和Z用a和A替代,則可得到一個簡單的加密字符串. 輸入 第一行是字符串的數(shù)目n, (也要使用get(s)讀取字符串,再用n=atoi(s)獲得整數(shù)數(shù)值).其余n行每行一個字符串,用gets(s)方式讀取這一行字符串.每個字符串長度小于80個字符. 輸出 輸出每行字符串的加密字符串. 樣例輸入 1Hello! How are you!樣例輸出 Ifmmp! Ipx bsf zpv!提示 為了避免gets和scanf在使用時的沖突,可用n=atoi(

44、s)把字符串s轉(zhuǎn)換為整數(shù).atoi定義在頭文件stdlib.h中. Global No. 1704 Source Code:1. #include<iostream>2. #include<string>3. using namespace std;4. int main()5. 6. string s;7. char ss100;8. int i,n=0;9. while(cin.getline(ss,100)10. if(n=0) n=1;11. else12. 13. s=ss;14. for(i=0;i<s.size();i+)15. 16. if(si&

45、gt;='A' && si<='Y' | si>='a' && si<='y' )17. cout<<char(si+1);18. else if(si='Z')19. cout<<'A'20. else if(si='z')21. cout<<'a'22. else23. cout<<si;24. 25. cout<<endl;26. 27. 28. ret

46、urn 0;29. Result:POJ2703騎車與走路Time Limit: 1000ms Memory limit: 65536kB 題目描述 在北大校園里,沒有自行車,上課辦事會很不方便.但實際上,并非去辦任何事情都是騎車快,因為騎車總要找車、開鎖、停車、鎖車等,這要耽誤一些時間.假設找到自行車,開鎖并車上自行車的時間為27秒;停車鎖車的時間為23秒;步行每秒行走1.2米,騎車每秒行走3.0米.請判斷走不同的距離去辦事,是騎車快還是走路快. 輸入 第一行為待處理的數(shù)據(jù)的數(shù)量n其后每一行整數(shù)為一次辦事要行走的距離,單位為米. 輸出 #include<iostream>usin

47、g namespace std;int main()int n,k=0;cin>>n;while(k<n)float distance;cin>>distance;float bike,walk;bike=distance/3.0+27+23;walk=distance/1.2;if(bike<walk)cout<<"Bike"<<endl;else if(bike>walk)cout<<"Walk"<<endl;else cout<<"All

48、"<<endl;k+;return 0;對應每個整數(shù),如果騎車快,輸出一行"Bike"如果走路快,輸出一行"Walk"如果一樣快,輸出一行"All". 樣例輸入 45090120180樣例輸出 WalkWalkBikeBikeGlobal No. 1705 POJ2707求一元二次方程的根Time Limit: 1000ms Memory limit: 65536kB 題目描述 利用公式x1 = (-b + sqrt(b*b-4*a*c)/(2*a), x2 = (-b - sqrt(b*b-4*a*c)/(2*

49、a)求一元二次方程ax2 + bx + c =0的根,其中a不等于0。 輸入 第一行是待解方程的數(shù)目n。 其余n行每行含三個浮點數(shù)a, b, c(它們之間用空格隔開),分別表示方程ax2 + bx + c =0的系數(shù)。 輸出 輸出共有n行,每行是一個方程的根:若是兩個實根,則輸出:x1=.;x2 = .若兩個實根相等,則輸出:x1=x2=.若是兩個虛根,則輸出:x1=實部+虛部i; x2=實部-虛部i所有實數(shù)部分要求精確到小數(shù)點后5位,數(shù)字、符號之間沒有空格。x1和x2的順序:x1的實部>Re的實部|(x1的實部=x2的實部&&x1的虛部>=x2的虛部) 樣例輸入

50、31.0 3.0 1.02.0 -4.0 2.01.0 2.0 8.0樣例輸出 x1=-0.38197;x2=-2.61803x1=x2=1.00000x1=-1.00000+2.64575i;x2=-1.00000-2.64575i提示 1、需要嚴格按照題目描述的順序求解x1、x2。2、方程的根以及其它中間變量用double類型變量表示。3、函數(shù)sqrt()在頭文件math.h中。4、要輸出浮點數(shù)、雙精度數(shù)小數(shù)點后5位數(shù)字,可以用下面這種形式: printf("%.5f", num);Global No. 1709Source Code :#include<iost

51、ream>#include<cmath>#include<iomanip>using namespace std;int main()double a,b,c,i,n,delta;cin>>n;for(i=1;i<=n;i+)cin>>a>>b>>c;delta=b*b-4*a*c;cout << fixed<<setprecision(5);if(fabs(delta) < 1e-8)cout<<"x1=x2="<<-b/a/2<

52、<endl;else if(delta>0)cout<<"x1="<<(-b+sqrt(delta)/2/a<<""<<"x2="<<(-b-sqrt(delta)/2/a<<endl; /x1=(-b+sqrt(delta)/(2*a) 輸出x1;x2else if(delta<0)delta=0-delta; /將delta變?yōu)橄喾磾?shù),就可以開方了double tmp = - b / a / 2;if (fabs(tmp) < 1e-8) tmp = 0.0;cout<<"x1="<<tmp<<"+"<<sqrt

溫馨提示

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

評論

0/150

提交評論