1. 程式人生 > >**accelerated C++入門 練習4-2的拓展題**

**accelerated C++入門 練習4-2的拓展題**

accelerated C++入門 練習4-2的拓展題

具體題目如下:

提示使用者輸入一個整數 I,計算從1~I 所有整數的平方,但要求以浮點數的形式輸出,小數點後輸出一個0。輸出分為兩列:第一列是i的平方(1 ≤ i ≤ I),第二列是i。使用控制器控制輸出使其左對齊排列。注意,程式應當有一定靈活性,當 I 增大時亦能保證格式的正確,且不必手動修改setw的引數

主要難點有兩個,一個是將輸入的整型以及它的平方以浮點數且保留一位小數的形式輸出;另一個是輸出要分為兩列,均為左對齊,且格式不會因為資料大小的改變而出現混亂。

對於保留小數問題的解決方法是將整型轉換為浮點型,然後用showpoint和setprecision來控制精度。 對於格式問題如題目所說,使用setw函式即可。

同時為了解決數字位數變動後的格式問題,上面兩個方法中的引數都要與輸出資料的位數掛鉤。 位數問題使用log10來計算即可。

程式碼:

//實驗二  平方

#include<iostream>
#include<iomanip>
#include<stdlib.h>

using namespace std;

int main()
{
	cout << "please enter a number " << endl;
	int num;
	cin >> num;

	double temp, tempi;
	for (int i = 1; i <= num; i++)
	{
		int count1,count2;
		temp = i;
		tempi = i;
		temp = temp*temp;
		count1 = 1 + (int)log10(temp);
		count2 = 1 + (int)log10(i);



		cout<< showpoint << setprecision(count1+1) << temp << setw(20+count2-count1) ;
		cout << showpoint << setprecision(count2 + 1) << tempi << endl;
	}

	system("PAUSE");

	return 0;
}