1. 程式人生 > 其它 >【c++實踐:實驗一】

【c++實踐:實驗一】

技術標籤:c++

第一題

【題目描述】
鍵盤輸入:年份、月份、日期。
輸出:該日期是該年份的第幾天。
要求:(1)年份要大於0,月份在1~12之間,日期要在該月份的合理範圍內;
(2)要考慮閏年。

輸入樣例

2000 3 3

輸出樣例

63

【程式碼】

#include<iostream>
using namespace std;
int main()
{
	int year,mon,day;
	cin>>year>>mon>>day; 
	 if((year%4==0&&year%100!=0)||year%400==0)    //判斷是閏年 
{ switch(mon) { case 1:day=day;break; case 2:day=31+day;break; case 3:day=31+29+day;break; case 4:day=31+29+31+day;break; case 5:day=31+29+31+30+day;break; case 6:day=31+29+31+30+31+day;break; case 7:day=31+29+31+30+31+30+day;break; case 8:day=31+29+31+30+31+30+31+day;
break; case 9:day=31+29+31+30+31+30+31+31+day;break; case 10:day=31+29+31+30+31+30+31+31+30+day;break; case 11:day=31+29+31+30+31+30+31+31+30+31+day;break; case 12:day=31+29+31+30+31+30+31+31+30+31+30+day;break; } cout<<day; } else { switch(mon) { case 1:
day=day;break; case 2:day=31+day;break; case 3:day=31+28+day;break; case 4:day=31+28+31+day;break; case 5:day=31+28+31+30+day;break; case 6:day=31+28+31+30+31+day;break; case 7:day=31+28+31+30+31+30+day;break; case 8:day=31+28+31+30+31+30+31+day;break; case 9:day=31+28+31+30+31+30+31+31+day;break; case 10:day=31+28+31+30+31+30+31+31+30+day;break; case 11:day=31+28+31+30+31+30+31+31+30+31+day;break; case 12:day=31+28+31+30+31+30+31+31+30+31+30+day;break; } cout<<day; } return 0; }

【解法二】

#include<iostream>
using namespace std;
 bool runnian(int year)          //呼叫函式判斷是否為閏年 
 {
 	if((year%4==0&&year%100!=0)||year%400==0)
 	{
	 	return 1;
	}
	else return 0;
 }
 int main()
{
	 int year,mon,day;
	 cin>>year>>mon>>day;
	 int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};  //建立陣列為每個月的天數 
	 if (runnian(year))
	 {
	 	a[1]=29;
	 	 for(int i=0;i<mon-1;i++)
	 	  {
		  	day+=a[i];
		  }
	 
	  cout<<day;
	 } 
	  else
	  {
	  	for(int i=0;i<mon-1;i++)
		   {
		  	 day+=a[i];
		   }
		cout<<day;
	  }
	  
	  return 0;
}

主要運用陣列以及呼叫來解決會方便一些

第二題

【題目描述】
商家促銷某商品,1件單價100元,2~ 5件單價90元,6~10件單價85元,11件及以上單價80元。客戶購買n件,需要支付多少錢?

輸入樣例

8

輸出樣例

680

【程式碼】

#include<iostream>
using namespace std;
 int main()
{
  int n;
  cin>>n; 
   if(n==1)
   {
    	cout<<100;
   }
   else if(n>=2&&n<=5)
   {
   	    cout<<n*90;
   }
   else if(n>=6&&n<=10)
   {
     	cout<<n*85;
   } 
   else if(n>=11)
   {
    	cout<<80*n;
   }
   
  return 0;
} 

題目三

【題目描述】

從鍵盤上輸入三個數,判斷能否構成三角形,如果能則輸出三角形面積,否則輸出“No triangle”。
提示:用海倫公式求三角形面積;求X的平方根用函式sqrt(x)

輸入樣例

 3 4 5 

輸出樣例

6

【程式碼】

#include<iostream>
#include<cmath>
using namespace std;
 int main()
{
  int a,b,c,p,S; //三條邊分別為abc p為半周長 
  cin>>a>>b>>c;
   if(a+b>c&&a+c>b&&b+c>a) //判斷三角形條件 
   {
   	 p=(a+b+c)/2;
   	 S=sqrt(p*(p-a)*(p-b)*(p-c));
   	 cout<<S;
   } 
    else 
    {
		cout<<"No triangle";
	}
  return 0;
} 

題目四

【題目描述】
程式設計序,任意輸入5個數據,求出它們的累加和sum,並將結果顯示在螢幕上。

#include<iostream>
using namespace std;
 int main()
{
	double a,b,c,d,e,sum=0;
	cin>>a>>b>>c>>d>>e;
	sum=a+b+c+d+e;
	cout<<sum;
  return 0;
} 

題目五

【題目描述】
程式設計序,從鍵盤輸入整數x、y,計算出x2+x–y以及w=2πx+πy2,並將結果顯示在螢幕上。

#include<iostream>
#define PI 3.14  //定義 PI為3.14 
using namespace std;
 int main()
{ 
  int x,y;
  cin>>x>>y; 
  cout<<x*x+x-y<<endl;  //注意平方只能寫作乘積形式 
  cout<<2*PI*x+PI*y*y;
  
 return 0; 
} 

題目六

【題目描述】
編寫一個程式,當用戶按照“時、分、秒”格式輸入兩個時刻後,求出這兩個時刻的時間差(按秒計算)並列印到螢幕上。

#include<iostream>
using namespace std;
 int main()
{ 
  int a,b,c,d,e,f,T1,T2,del; //del為相差的時間 
  cin>>a>>b>>c>>d>>e>>f;
   T1=a*3600+b*60+c;
   T2=d*3600+e*60+f;
                        //計算兩個時刻的總秒數 
   if(T1>=T2)
   {
   	 del=T1-T2;
   }
   else
   {
   	del=T2-T1;
   }
   
   cout<<del; 
  return 0;
}