結束循環一直打印最後一個數,程序並沒有結束

角度與弧的轉換
a 90
r 1.571
這種輸入格式

#include<iostream>
using namespace std;

class Angle {
public:
	Angle(double d) {
		d = d;
	};
	void Change_one(double k) {

		//角度換弧度
		r = k * PI / 180;
		cout.setf(ios::fixed);
		cout.precision(3);
		cout << r << endl;

	}
	void Change_twe(double k) {

		//弧度換角度
		d = k * 180 / PI;
		cout.setf(ios::fixed);
		cout.precision(3);
		cout << d << endl;
	}
private:
	double d, r;
	static double PI;

};

double Angle::PI = 3.14159;

int main00() {
	double k;
	Angle a1(0);
	char ch;
	cin >> ch;
	while (ch) {
		Angle a(a1);
		if (ch == 'a') {
			cin >> k;
			a.Change_one(k);
		}
		else if (ch == 'r') {
			cin >> k;
			a.Change_twe(k);
		}
		cin >> ch;
	}
	return 0;

}

在這裏插入圖片描述一直不能結束循環
當我將代碼的格式修改成這樣是就行了

#include<iostream>
using namespace std;

class Angle {
public:
	Angle(double d) {
		d = d;
	};
	void Change_one(double k) {

		//角度換弧度
		r = k * PI / 180;
		cout.setf(ios::fixed);
		cout.precision(3);
		cout << r << endl;

	}
	void Change_twe(double k) {

		//弧度換角度
		d = k * 180 / PI;
		cout.setf(ios::fixed);
		cout.precision(3);
		cout << d << endl;
	}
private:
	double d, r;
	static double PI;

};

double Angle::PI = 3.14159;

int main() {
	double k;
	Angle a1(0);
	char ch;
//	cin >> ch;
	while (cin>>ch) {
		Angle a(a1);
		if (ch == 'a') {
			cin >> k;
			a.Change_one(k);
		}
		else if (ch == 'r') {
			cin >> k;
			a.Change_twe(k);
		}
		//cin >> ch;
	}
	return 0;

}

ctrl+z,結束循環,但我們在while循環的判斷條件是一個值(就是 while(ch) 與 while(cin>>ch) 的關係),ctrl+z
更應該是控制cin輸入流結束的標識

發佈了8 篇原創文章 · 獲贊 1 · 訪問量 1962
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章