hdoj水题练习(一)

刷了不少剑指offer和leetcode练习算法,都是只要写个函数,结果被要求格式的输入输出打败!哭!

赶快练习!按这个顺序:https://blog.csdn.net/liuqiyao_01/article/details/8477645


//hdoj1089 针对行数未知的输入
#include <stdio.h>//要有.h
int main()
{
    int a, b;
    while(scanf("%d %d", &a, &b) != EOF)//注意英文标点 空格
            printf("%d\n", a+b);//注意换行符
    return 0;

}


//hdoj1090 针对行数已知的输入
#include <stdio.h>
#include <iostream>//
using namespace std;//对于上一行来说这行是必需的!!!
int main()
{
        int a,b,n;
cin>>n;
for(int i=0;i<n;++i){
scanf("%d %d", &a, &b);//要求空格分隔,cin不能控制输入格式,且效率低(使用缓冲区),但书写简便
cout<<a+b<<endl;
}
        return 0;

}


//hdoj1091 针对以0 0结尾的输入
#include <stdio.h>
#include <iostream>//
using namespace std;//对于上一行来说这行是必需的!!!
int main()
{
        int a,b;
while(scanf("%d %d",&a,&b)&&(a||b)){
cout<<a+b<<endl;
}
        return 0;

}

/*scanf和printf的返回值

1.scanf的返回值
  1) 正整数,表示正确输入参数的个数。例如执行 scanf("%d %d", &a, &b); 
      如果用户输入"3 4",可以正确输入,返回2(正确输入了两个变量);
      如果用户输入"3,4",可以正确输入a,无法输入b,返回1(正确输入了一个变量)。    
  2) 0,表示用户的输入不匹配,无法正确输入任何值。如上例,用户如果输入",3 4",返回0。
  3) EOF,这是在stdio.h里面定义的常量(通常值为-1),表示输入流已经结束。

2.printf的返回值是输出的字符数,例如,printf("1234")的返回值是4,而printf("1234\n")的返回值是5。

*/


//hdoj1092
#include <iostream>//
using namespace std;//对于上一行来说这行是必需的!!!
int main()
{
        int a,n,sum;
while(cin>>n,n){//n=0代表没有要处理的数 不处理 结束循环
sum=0;
for(int i=0;i<n;++i){
cin>>a;
sum+=a;
}
cout<<sum<<endl;
}
        return 0;

}


//hdoj1094
#include<stdio.h>
#include <iostream>//
using namespace std;//对于上一行来说这行是必需的!!!
int main()
{
        int a,n,sum;
while(scanf("%d",&n)!=EOF){
sum=0;
for(int i=0;i<n;++i){
cin>>a;
sum+=a;
}
cout<<sum<<endl;
}
        return 0;

}


//hdoj1001
#include<stdio.h>
#include <iostream>//
using namespace std;//对于上一行来说这行是必需的!!!
int main()
{
        int n;
while(scanf("%d",&n)!=EOF){
cout<<(n%2==0?n/2*(1+n):(1+n)/2*n)<<"\n\n";
//中间加括号否则编译错误 注意优先级。
//注意除法时的类型转换(直接/2.0 或 作显式类型转换 也不对 这是为啥?)。这里请教!!!
//两个换行符 <<endl<<endl 也可以。

}

        return 0;

}


//hdoj2000
#include<stdio.h>
int main()
{
        char a,b,c,t;
while(scanf("%c%c%c",&a,&b,&c)!=EOF){
if(a>b){t=b;b=a;a=t;}
if(b>c){t=c;c=b;b=t;}
if(a>b){t=b;b=a;a=t;}
printf("%c %c %c\n",a,b,c);
getchar();//用来接收回车!!!
}
        return 0;

}


//hdoj2001
#include<stdio.h>
#include<cmath>//
int main()
{
        float a,b,c,d,m;
while(scanf("%f %f %f %f",&a,&b,&c,&d)!=EOF){
m=sqrt(pow(c-a,2)+pow(d-b,2));
printf("%.2f\n",m);//保留两位小数
//或cout<<setiosflags(ios::fixed)<<setprecision(2);//需要头文件#include <iomanip>
getchar();//用来接收回车!!!
}
        return 0;
}
/*
setprecision是指设置输出精度,当没有cout<<setiosflags(ios::fixed)时,输出格式是数据的有效位数。如果setprecision里的参数小于整数位数,将以指数形式输出。
setiosflags(ios::fixed)是指以固定的浮点显示,当setiosflags(ios::fixed)和setprecision(n)两个一起用时就表示保留n位小数输出。这里还要注意,每次输出只要设置一次就行了,因为这两个的作用范围是后续对象,而不是仅对后一个对象起作用。

*/


//hdoj2002
#include<stdio.h>
#include<cmath>
#define PI 3.1415927

int main()
{
        double r,v; //float不行 要double(%lf)
while(scanf("%lf",&r)!=EOF){
v=4.0/3.0*PI*pow(r,3);
printf("%.3lf\n",v);
getchar();//用来接收回车!!!
}
        return 0;

}


//hdoj2003
#include<stdio.h>
#include<cmath>

int main()
{
double r;
while(scanf("%lf",&r)!=EOF){
printf("%.2lf\n",abs(r));
getchar();//用来接收回车!!!
}
return 0;

}


//hdoj2004
#include<stdio.h>
int main()
{
int r;
while(scanf("%d",&r)!=EOF){
if(r>=90&&r<=100){printf("A\n");}
else if(r>=80&&r<=89){printf("B\n");}
else if(r>=70&&r<=79){printf("C\n");}
else if(r>=60&&r<=69){printf("D\n");}
else if(r>=0&&r<=59){printf("E\n");}
else {printf("Score is error!\n");}
getchar();//用来接收回车!!!
}
return 0;

}


//hdoj2005
#include<stdio.h>
int main()
{
int a,b,c,d;
int m[12]={31,28,31,30,31,30,31,31,30,31,30,31};
while(scanf("%d/%d/%d",&a,&b,&c)!=EOF){
d=0;
for(int i=0;i<b-1;++i){
d+=m[i];
}
d+=c;
if(a%400==0||a%4==0&&a%100){//闰年
if(b>2)++d;
}
printf("%d\n",d);
getchar();//用来接收回车!!!
}
return 0;

}


//hdoj2006
#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
int n,m,a;
while(scanf("%d",&n)!=EOF){
m=1;
for(int i=0;i<n;++i){
cin>>a;
if(a%2) m*=a;
}
cout<<m<<endl;
}
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值