2001題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=2001
題目分析:這道題要求的是兩點之間的距離目溉,在直角坐標系上,兩點距離就是兩點的橫坐標相減的平方然后加上縱坐標相減的平方再開根號誊抛。
代碼如下:
#include <stdio.h>
#include <math.h>
void main()
{
? ? double x1,x2,y1,y2,m;
? ? while(scanf("%lf %lf %lf %lf",&x1,&y1,&x2,&y2)!=EOF)
? ? {
? ? ? ? m=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
? ? ? ? printf("%.2f\n",m);
? ? }
}
問題:在寫代碼的時候由于沒看清楚題目,最初的輸入格式是
scanf("%lf %lf %lf %lf",&x1,&x2,&y1,&y2)
在編譯的時候輸入 0 0 0 1的時候是正確的锥债,但是輸入0 1 1 0是錯的错敢,
改正之后是scanf("%lf %lf %lf %lf",&x1,&y1,&x2,&y2)。
2002題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=2002
題目分析:這題求球的體積厂画,公式為,
V=4* π*r3
代碼如下:
#include<stdio.h>
#define PI 3.1415927
int main()
{
double r;
while(scanf("%lf",&r)!=EOF)
{
printf("%.3lf\n",4*PI*r*r*r/3);
}
return 0;
}
這題沒問題凸丸。
2003題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=2003
題目分析:這題是輸入數(shù)據(jù)然后求絕對值,我的思路是對大于等于0的數(shù)袱院,正常輸出屎慢。對于小于0的數(shù),就把這個數(shù)乘上一個 -1 然后輸出忽洛。
代碼如下:
#include<stdio.h>
int main()
{
double a;
while(scanf("%lf",&a)!=EOF)
{
if(a<0) a=-a;
printf("%.2lf\n",a);
}
return 0;
}
這題沒問題腻惠。
2004題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=2004
題目分析:這題是將分數(shù)轉(zhuǎn)換成等級。90~100為A;80~89為B;70~79為C;60~69為D;0~59為E;
大于100和小于0的輸出:“Score is error!”脐瑰。
本題可以用兩種方法妖枚,一種是switch語句,我用的是if-else if語句苍在。
代碼如下:
#include<stdio.h>
int main()
{
int a;
while(scanf("%d",&a)!=EOF)
{
if(a>100 || a<0) printf("Score is error!\n");
else if(a<=100 && a>=90) printf("A\n");
else if(a<90 && a>=80) printf("B\n");
else if(a<=80 && a>=70) printf("C\n");
else if(a<=70 && a>=60) printf("D\n");
else if(a<60) printf("E\n");
}
return 0;
}
這題沒問題绝页。
2006題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=2006
題目分析:本題求奇數(shù)的成績,奇數(shù)的判斷就是 i%2==1 寂恬。我這題用數(shù)組來存放數(shù)據(jù)续誉。
代碼如下:
#include<stdio.h>
int main()
{
int n,i,j,a[100];
while(scanf("%d",&n)!=EOF)//或者~scanf("%d",&n)
{
j=1; //每次輸入都要把j置1.
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
if(a[i]%2!=0) j*=a[i];
}
printf("%d\n",j);
}
return 0;
}
這題沒問題。
2007題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=2007
題目分析:本題求輸入所有偶數(shù)的平方和以及所有奇數(shù)的立方和初肉。
代碼如下:
#include<stdio.h>
int main()
{
int m,n,i,t,a,b;
while(scanf("%d%d",&m,&n)!=EOF)
{
if(m>n){t=m;m=n;n=t;}//這題要判斷m和n的大小酷鸦,要不然不能通過
a=0,b=0;
for(i=m;i<=n;i++)
? {
if(i%2 == 0) a+=i*i;
else b+=i*i*i;
}
printf("%d %d\n",a,b);
}
return 0;
}
2008題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=2008
題目分析:統(tǒng)計給定的n個數(shù)中,負數(shù)牙咏、零和正數(shù)的個數(shù)
代碼如下:
#include<stdio.h>
int main()
{
? ? int n,i,j,k,p;
? ? double a[100];
? ? while(scanf("%d",&n)!=EOF)//~scanf("%d",&n)
? ? {
? ? ? ? j=k=p=0;
? ? ? ? for(i=0;i<n;i++)
? ? ? ? {
? ? ? ? ? ? scanf("%lf",&a[i]);
? ? ? ? ? ? if(a[i] < 0) j++;
? ? ? ? ? ? else if(a[i] == 0) k++;
? ? ? ? ? ? else p++;
? ? ? ? }
? ? ? ? if(n!=0) printf("%d %d %d\n",j,k,p);
? ? }
? ? return 0;
}
本題的j是統(tǒng)計負數(shù)的個數(shù)臼隔,k是統(tǒng)計0的個數(shù),p是統(tǒng)計正數(shù)的個數(shù)妄壶。
2009題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=2009
題目分析:數(shù)列的第一項為n摔握,以后各項為前一項的平方根,求數(shù)列的前m項的和丁寄。要求輸出精度保留2位小數(shù)氨淌。需要用到sqrt函數(shù)。
代碼如下:
#include<stdio.h>
#include<math.h>
int main()
{
? ? int m,i,n;
? ? double a[1000],sum;// 用數(shù)組行伊磺,直接用a也行
? ? while(scanf("%d %d",&n,&m)!=EOF)
? ? {
? ? ? ? if(n<10000&&m<1000)
? ? ? ? {
? ? ? ? ? ? a[0]=(double)n;
? ? ? ? ? ? sum=0.0;// 記得要把這里的sum重置為0
? ? ? ? ? ? for(i=0;i<m;i++)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? sum+=a[i];
? ? ? ? ? ? ? ? a[i+1]=sqrt(a[i]);
? ? ? ? ? ? }
? ? ? ? ? ? printf("%.2lf\n",sum);
? ? ? ? }
? ? }
}
總結(jié):需要改掉平時不做筆記的習(xí)慣盛正。由于自己的有些知識點還不是很扎實,導(dǎo)致自己做題效率有點慢屑埋,基本上前面幾道題基本上要用一到兩個小時豪筝,因為編譯是正確的,但是在上傳代碼時很難通過。所以導(dǎo)致這周一共做了十幾題∪姥粒現(xiàn)在發(fā)現(xiàn)一些規(guī)律即寡,學(xué)到了:用printf函數(shù)一定要配合\n的使用。多次輸入時可以用while(scanf()袜刷!=EOF)或者while(~scanf())
下周目標:
由于做題慢聪富,增加投入時間,盡量到40題著蟹。
看書的一二章和預(yù)習(xí)第五章的內(nèi)容墩蔓。
做完一題就寫總結(jié)。