杭电oj第一阶段刷题总结
1000 1089—1096、1001 2000—2011、2039
第一道题入门,记得在a b 前加&就行
#include <stdio.h>
int main()
{
int a=0,b=0;
while(scanf("%d %d",&a,&b) != EOF)
{
printf("%d\n", a+b);
}
return 0;
}
1089 这题跟上面的没啥区别
#include <stdio.h>
int main()
{
int a,b;
while(scanf("%d%d",&a,&b)!=EOF)
printf("%d\n",a+b);
return 0;
}
1090
#include <stdio.h>
int main()
{
int a,b,n,i;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d%d",&a,&b);
printf("%d\n",a+b);
}
return 0;
}
1091
#include <stdio.h>
int main()
{
int a,b;
while(scanf("%d%d",&a,&b)!=EOF)
if(a,b)
printf("%d\n",a+b);
else
break;
return 0;
}
1092
#include <stdio.h>
int main()
{
int a[100],N,sum,i;
while(scanf("%d",&N)!=EOF) \\每行N个数求和
{
sum=0;
if(N==0) \\N=0时结束
break;
else
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
sum=sum+a[i];
}
printf("%d\n",sum);
}
return 0;
}
1093
#include <stdio.h>
int main()
{
int a[100],N,sum,i,j,n;
scanf("%d",&n); \\n行求和
for(j=0;j<n;j++)
{
scanf("%d",&N); \\N个数求和
sum=0;
if(N==0)
break;
else
for(i=0;i<N;i++) \\ 嵌套在for循环中的for循环i和j要记得区分
{
scanf("%d",&a[i]);
sum=sum+a[i];
}
printf("%d\n",sum);
}
return 0;
}
1094
#include <stdio.h>
int main()
{
int a[100],n,sum,i;
while(scanf("%d",&n)!=EOF) \\没有规定多少行求和时用while( !=EOF),固定格式,后面用到很多
{
sum=0;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
sum=sum+a[i];
}
printf("%d\n",sum);
}
return 0;
}
1095
#include <stdio.h>
int main()
{
int a,b;
while(scanf("%d %d",&a,&b)!=EOF)
{
printf("%d\n\n",a+b); \\间隔两行输出
}
return 0;
}
1096
这道题我在格式上面纠结了很久,最后看别人的答案才知道格式的问题
#include <stdio.h>
int main()
{
int a[100],i,j,n,N,sum;
scanf("%d",&n); \\n行求和
for(i=0;i<n;i++)
{
sum=0;
scanf("%d",&N);
for(j=0;j<N;j++)
{
scanf("%d",&a[j]);
sum=sum+a[j];
}
printf("%d\n",sum);
if(i==n-1) \\最后一行不用输出空格
break;
printf("\n");
}
return 0;
}
1001
#include <stdio.h>
int main()
{
int n,sum;
while(scanf("%d",&n)!=EOF)
{
sum=0;
for(;n;n--)
sum+=n;
printf("%d\n\n",sum+n);
}
return 0;
}
2000
按ASCII码值从小到大排序
#include <stdio.h>
int main()
{
char a,b,c,d,p;
while(scanf("%c%c%c%c",&a,&b,&c,&d)!=EOF)
{
if(a>b) p=a,a=b,b=p; \\字符输入时按ASCII码值比较大小
if(a>c) p=a,a=c,c=p;
if(b>c) p=b,b=c,c=p;
printf("%c %c %c\n",a,b,c);
}
return 0;
}
2001
计算两点间的距离
#include<stdio.h>
#include<math.h>
int main()
{
double x1,y1,x2,y2;
while(scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2)!=EOF)
{
printf("%.2f\n",sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)));
}
return 0;
}
2002
球的体积
#include<stdio.h>
#include<math.h>
#define PI 3.1415927 \\定义PI的大小等于3.1415927,符号常量,用一个符号名称代表一个常量
int main()
{
double r,v;
while(scanf("%lf",&r)!=EOF)
{
v=4*PI*r*r*r/3; \\4/3*PI*r*r*r是错误的 4/3等于1
printf("%.3f\n",v);
}
return 0;
}
2003
求绝对值,结果保留两位小数
#include<stdio.h>
int main()
{
double num ;
while(scanf("%lf",&num)!=EOF)
{
printf("%.2lf\n",num<0?-num:num);
}
return 0;
}
2004
换算成绩等级 switch()
#include<stdio.h>
int main()
{
float score;
int c;
char d; \\等级d
while(scanf("%f",&score)!=EOF)
{
if(score>100||score<0) {printf("Score is error!\n");continue;}
c=score/10;
switch(c)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5: d='E';break;
case 6: d='D';break;
case 7: d='C';break;
case 8: d='B';break;
case 9:
case 10: d='A';break;
}
printf("%c\n",d);
}
return 0;
}
2005
一年当中的第几天问题
#include<stdio.h>
int main()
{
int y,m,d,i,sum;
int a[12]={31,28,31,30,31,30,31,31,30,31,30,31}; \\平年时每个月的天数
int b[12]={31,29,31,30,31,30,31,31,30,31,30,31}; \\闰年时每个月的天数
while(scanf("%d/%d/%d",&y,&m,&d)!=EOF)
{
sum=0; \\清洗一下数据
if(y%400==0||(y%4==0&&y%100!=0)) \\闰年的判断方法
{
for(i=0;i<m-1;i++) {sum=sum+b[i]; }
sum=sum+d;
printf("%d\n",sum);
}
else
{
for(i=0;i<m-1;i++) {sum=sum+a[i]; }
sum=sum+d;
printf("%d\n",sum);
}
}
return 0;
}
2006
求n个整数中所有奇数的乘积
#include<stdio.h>
int main()
{
int n,a[10],sum,i;
while(scanf("%d",&n)!=EOF)
{
sum=1; //假定每行存在一个奇数,设sum=1
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
if(a[i]%2) \\判断是否为奇数
sum*=a[i];
}
printf("%d\n",sum);
}
return 0;
}
2007
一段连续的整数中所有偶数的平方和以及所有奇数的立方和
#include<stdio.h>
int main()
{
int n,m,i,p;
int sum1,sum2;
while(scanf("%d%d",&n,&m)!=EOF)
{
sum1=0;
sum2=0;
if(n>m){p=n;n=m;m=p;} \\小数在前
for(i=n;i<=m;i++)
{
if(i%2==0)
sum1+=i*i; \\偶数的平方和
else
sum2+=i*i*i; \\奇数的立方和
}
printf("%d %d\n",sum1,sum2);
}
return 0;
}
2008
n个数中,正数、零、负数的个数
#include<stdio.h>
int main()
{
int n,i;
int a,b,c;
float m;
while(scanf("%d",&n)&&n!=0)
{
a=0,b=0,c=0;
for(i=0;i<n;i++)
{
scanf("%f",&m);//注意数据类型
if(m<0) a++;
if(m==0) b++;
if(m>0) c++;
}
printf("%d %d %d\n",a,b,c);
}
return 0;
}
2009
数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和
#include<stdio.h>
#include<math.h>
int main()
{
int m,i,p; //n为数列的第一项,m为前m项
double sum,n;
while(scanf("%lf%d",&n,&m)!=EOF)
{
sum=n;
for(i=0;i<m-1;i++)
{
n=sqrt(n);
sum=sum+n;
}
printf("%.2lf\n",sum);
}
return 0;
}
2010
水仙花数
#include<stdio.h>
#include<math.h>
int main()
{
int n,m,i,num;
int a,b,c;
while(scanf("%d%d",&n,&m)!=EOF)
{
num=0;
for(i=n;i<=m;i++)
{
a=(i%10); \\个位
b=(i%100/10); \\十位
c=(i/100); \\百位
if(i==a*a*a+b*b*b+c*c*c)
{
if(num>=1)
printf(" "); 数据间的空格
num++;
printf("%d",i);
}
}
if(num==0)
printf("no\n");
else
printf("\n");
}
return 0;
}
2011
多项式求和
#include<stdio.h>
#include<math.h>
int main()
{
int n,i,a,j;
double sum,p;
while(scanf("%d",&n)!=EOF)
{
for(j=0;j<n;j++)
{
scanf("%d",&a);
sum=0,p=0; \\数据清洗
for(i=1;i<a+1;i++) \\第一个数从1开始,a个数
{
if(i%2==0) p=(1.00/i)*(-1); //只能用1.00才能输入double类型的p
if(i%2!=0) p=(1.00/i);
sum+=p;
}
printf("%0.2lf\n",sum);
}
}
return 0;
}
2039
判断三条边能否组成三角形
#include<stdio.h>
int main()
{
int n,i;
double a,b,c;
scanf("%d",&n);
{
for(i=0;i<n;i++)
{
scanf("%lf%lf%lf",&a,&b,&c);
if((a+b>c)&&(a+c>b)&&(b+c>a)) 任意两边之和大于第三边等价于任意两边之差小于第三边
printf("YES\n");
else printf("NO\n");
}
}
return 0;
}
有问题可以评论留言,第一次发帖,纪念一下,本人菜鸟程序猿一枚