【c++實踐:實驗一】
阿新 • • 發佈:2021-02-05
技術標籤: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;
}