HDU1170做題筆記

2020-08-10 11:48:21

HDU1170


…這是一篇廢話博文
題目鏈接

【前提】
是這樣的,明明是到很水的題,但是還是來寫個筆記吧。原因是因爲WA的n次之後,實在是懷疑人生,於是就去找了別人的程式碼來看,看完之後,發現感覺明明都一樣,但是仍然不知道自己錯在哪裏。
因爲我一開始學的就是c++,所以也是用c++的方式來處理,找了另一個自稱是AC的c++程式碼後,提交到hdu後,和我一樣都是WA了。
比較了一下共同點之後,才發現我們處理小數點的時候都是使用了
cout<<fixed<<setprecision(2)這樣一樣內容。
然後又去看了用printf("%.2f", (float)a / b);的c程式碼,試着提交了一下,發現對了= =。

所以寫這篇筆記打算開一下c語言的輸入輸出吧,也不是第一次冒出這個念頭了,感覺scanfprintf確實好用。下篇(如果有的話)就總結一下。

【總結】
雖然程式碼WA了,還是複習了一下如何設定輸出到小數點後幾位的方法,所以這裏記錄下。
函數原型

#include <iomanip>
#include <math.h>
cout<<fixed<<setprecision(n)<<sum<<endl;

說明
setprecision(n) 中n確定了固定到小數點後第幾位。

【程式碼】
最後貼一下我自己的WA程式碼【狗頭】,答案應該是沒有錯的
如果有路過的大佬看到的話,請麻煩教教我錯哪裏了QAQ

#include<bits/stdc++.h>
using namespace std;
void getResult(char ch,int a,int b)
{
	if(ch=='+')
		cout<<a+b;
	if(ch=='-')
		cout<<a-b;
	if(ch=='*')
		cout<<a*b;
	if(ch=='/')
	{
		if(a%b==0)
			cout<<a/b;
		else
			cout<<fixed<<setprecision(2)<<(float)a/b;
	}	
}
int main()
{
	int n,a,b;
	char ch;
	cin>>n;
	while(n--)
	{
		cin>>ch;
		cin>>a>>b;
		getResult(ch,a,b);
		cout<<endl;
	}
}