杭电oj2000-2011
2000 ASCII码排序
#include <stdio.h>
int main(){
char a,b,c,t;
while(scanf("%c%c%c", &a, &b, &c)!=EOF){
getchar();#必须得加这玩意
if(a>b){
t = a;
a = b;
b = t;
}
if(a>c){
t = a;
a = c;
c = t;
}
if(b>c){
t = b;
b = c;
c = t;
}
printf("%c %c %c\n", a,b,c);
}
}
一开始没有添加getchar()函数引发错误,后来查看大佬的wp知道了原因这里引用大佬的解释:
第一次没有加getchar()函数,结果不正确,运行时,第一次输入三个字符排序正确,可是后面再输入时输出就会错误。通过查看别人类似问题的分析,知道了其中缘由。从键盘输入的字符,会存放到缓冲区中,包括回车符。如输入“abc回车”之后,缓冲区中存了有四个字符'a'、'b'、'c'、'\n',如果上面程序中没有getchar(),则第一次从缓冲区中提取了三个字符之后,还剩下了一个'\n',则下次再输入三个字符时,缓冲区中会把上次剩下的回车符也算进去,这样处理起来就会有问题。getchar()是从缓冲区中读取一个字符,如果只是去除缓冲区中的字符,不需要用赋值表达式,直接使用getchar();即可,当然,使用赋值表达式也可以,如:m=getchar();。上面程序中使用了getchar()之后,就可以把每次输入三个字符之后的回车符吸收掉,这样结果就正确了。
2001 计算两点间的距离
#include <stdio.h>
#include <math.h>
int main(){
double x1,y1,x2,y2,d;
while(scanf("%lf %lf %lf %lf", &x1, &y1, &x2, &y2)!=EOF){
d= sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2));
printf("%.2lf\n", d); }
}
2002 计算球体积
#include <stdio.h>
#define PI 3.1415927 int main(){
double x, v;
while(scanf("%lf", &x)!=EOF){
v = *PI*x*x*x/;
printf("%.3lf\n", v);
}
}
2003 求绝对值
#include <stdio.h>
int main(){
double x,y;
while(scanf("%lf", &x)!=EOF){
y = x;
if(y<){
y = -x;
}
printf("%.2lf\n", y);
}
}
2004 求绝对值
#include <stdio.h>
int main(){
int x;
while(scanf("%d", &x)!=EOF){
if(x< || x>){
printf("Score is error!\n");
}
if(x>= && x<){
printf("E\n");
}
if(x>= && x<){
printf("D\n");
}
if(x>= && x<){
printf("C\n");
}
if(x>= && x<){
printf("B\n");
}
if(x>= && x<=){
printf("A\n");
}
}
}
2005 第几天?
#include <stdio.h>
int main(){
int a,b,c,i,days;
int mon[] = {,,,,,,,,,,,};
while(scanf("%d/%d/%d", &a,&b,&c)!=EOF){
if((a%== && a% !=) || (a% == )){
days = ;
mon[] = ;
for(i=; i<b-; i++){
days += mon[i];
}
days += c;
printf("%d\n", days);
}else{
days = ;
mon[] = ;
for(i=; i<b-; i++){
days += mon[i];
}
days += c;
printf("%d\n", days);
}
} }
2006 求奇数的乘积
#include <stdio.h>
int main(){
int n, i ,mul;
while((scanf("%d", &n))!=EOF){
mul = ;
while(n--){
scanf("%d", &i);
if(i%!=){
mul = mul*i;
}
}
printf("%d\n", mul);
} }
2007 平方和与立方和
这玩意首先要判断输入两个数的大小,不然就是错的
#include <stdio.h>
int main(){
int n,m,squ,cub,i;
while((scanf("%d %d", &n,&m))!=EOF){
squ=;
cub=;
if(n<m){
for(i=n;i<=m;i++){
if(i%==){
squ += i*i;
}else{
cub += i*i*i;
}
}
printf("%d %d\n",squ,cub);
}else{
for(i=m;i<=n;i++){
if(i%==){
squ += i*i;
}else{
cub += i*i*i;
}
}
printf("%d %d\n",squ,cub);
} } }
2008 数值统计
#include <stdio.h>
int main(){
int n,x,y,z;
double i;
while((scanf("%d", &n))!=EOF){
if(n==){
continue;
}else{
x=;
y=;
z=;
while(n--){
scanf("%lf", &i);
if(i<){
x += ;
}else if(i==){
y += ;
}else if(i>){
z += ;
}
} }
printf("%d %d %d\n", x,y,z);
}
return ;
}
2009 求数列的和
#include <stdio.h>
#include <math.h>
int main(){
int m;
double i,sum,n;
while(scanf("%lf %d", &n,&m)!=EOF){
sum = ;
while(m--){
sum += n;
n = sqrt(n); }
printf("%.2lf\n", sum);
}
}
2010 水仙花数
最后输出的时候最后不允许有空格,因此第一个数的输出与后面数的输出不一样。
#include <stdio.h>
int main(){
int m,n,a,b,c,i,flag;
while(scanf("%d %d",&m,&n)!=EOF){
flag = ;
for(i=m;i<=n;i++){
a=i/;
b=i%/;
c=i%;
if(i==a*a*a+b*b*b+c*c*c){
flag += ;
if(flag==){
printf("%d",i);
}else{
printf(" %d",i);
}
}
}
if(flag==){
printf("no");
}
printf("\n");
}
}
2011 多项式求和
#include <stdio.h>
int main(){
int n,i;
double a,sum,j;
scanf("%d", &n);
while(n--){
sum = ;
scanf("%lf",&a);
for(i=;i<=a;i++){
if(i%==){
j = i;
sum -= /j;
}else{
j = i;
sum += /j;
}
}
printf("%.2lf\n", sum);
}
}
杭电oj2000-2011的更多相关文章
- 杭电acm阶段之理工大版
想參加全国软件设计大赛C/C++语言组的同学,假设前一篇<C和指针课后练习题总结>没看完的,请先看完而且依照上面的训练做完,然后做以下的训练. 传送门:http://blog.csdn.n ...
- 杭电ACM题单
杭电acm题目分类版本1 1002 简单的大数 1003 DP经典问题,最大连续子段和 1004 简单题 1005 找规律(循环点) 1006 感觉有点BT的题,我到现在还没过 1007 经典问题,最 ...
- 杭电acm习题分类
专注于C语言编程 C Programming Practice Problems (Programming Challenges) 杭电ACM题目分类 基础题:1000.1001.1004.1005. ...
- acm入门 杭电1001题 有关溢出的考虑
最近在尝试做acm试题,刚刚是1001题就把我困住了,这是题目: Problem Description In this problem, your task is to calculate SUM( ...
- 杭电acm 1002 大数模板(一)
从杭电第一题开始A,发现做到1002就不会了,经过几天时间终于A出来了,顺便整理了一下关于大数的东西 其实这是刘汝佳老师在<算法竞赛 经典入门 第二版> 中所讲的模板,代码原封不动写上的, ...
- 杭电OJ——1198 Farm Irrigation (并查集)
畅通工程 Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程"的目标是使全省任何两个城镇间都可 ...
- 杭电ACM分类
杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze ...
- 高手看了,感觉惨不忍睹——关于“【ACM】杭电ACM题一直WA求高手看看代码”
按 被中科大软件学院二年级研究生 HCOONa 骂为“误人子弟”之后(见:<中科大的那位,敢更不要脸点么?> ),继续“误人子弟”. 问题: 题目:(感谢 王爱学志 网友对题目给出的翻译) ...
- C#利用POST实现杭电oj的AC自动机器人,AC率高达50%~~
暑假集训虽然很快乐,偶尔也会比较枯燥,,这个时候就需要自娱自乐... 然后看hdu的排行榜发现,除了一些是虚拟测评机的账号以外,有几个都是AC自动机器人 然后发现有一位作者是用网页填表然后按钮模拟,, ...
- 杭电ACM2076--夹角有多大(题目已修改,注意读题)
杭电ACM2076--夹角有多大(题目已修改,注意读题) http://acm.hdu.edu.cn/showproblem.php?pid=2076 思路很简单.直接贴代码.过程分析有点耗时间. / ...
随机推荐
- C语言函数篇(一)函数的组成
函数的组成: 函数名 输入参数 返回值 返回值 函数名 (输入参数){ 执行体 } 用指针保存函数: int func(int a, int b, char c){ } --> int (*fu ...
- python——字符串的操作判断
s为字符串 s.isalnum() 所有字符都是数字或者字母,为真返回 Ture,否则返回 False. s.isalpha() 所有字符都是字母,为真返回 Ture,否则返回 False. s ...
- 笔记-redis安装
笔记-redis安装配置 1. redis安装配置 1.1. windows环境安装 win8已有redis 查看版本:redis-server –version 想更新到5.0.0, ...
- Android面试收集录6 事件分发机制
转自:秋招面试宝典. 一. 基础认知 1.1 事件分发的对象是谁? 答:事件 当用户触摸屏幕时(View或ViewGroup派生的控件),将产生点击事件(Touch事件). Touch事件相关细节(发 ...
- Android面试收集录1 Activity+Service
1.Activity的生命周期 1.1.首先查看一下Activity生命周期经典图片. 在正常情况下,一个Activity从启动到结束会以如下顺序经历整个生命周期: onCreate()->on ...
- P1418 选点问题(黑白染色)
P1418 选点问题 题目描述 给出n个点,m条边,每个点能控制与其相连的所有的边,要求选出一些点,使得这些点能控制所有的边,并且点数最少.同时,任意一条边不能被两个点控制 输入输出格式 输入格式: ...
- sql server inser相关处理(添加一条,一次添加多条,Bulk插入多条)
1,insert语句 insert into 表一(字段一,字段二,字段三) value(值一,值二,值三) 2,sql 插入多条语句,其中完整值之间用逗号分割 insert into 表一(字段一, ...
- python和matlab
一.python简介 python是一种面向对象的解释型计算机程序设计语言.python是纯粹的自由软件,源代码和解释器CPython遵循GPL协议.Python语法简介清晰,特色之一是强制用空白符作 ...
- hadoop中namenode发生故障的处理方法
Namenode 故障后,可以采用如下两种方法恢复数据: 方法一:将 SecondaryNameNode 中数据拷贝到 namenode 存储数据的目录: 方法 二: 使用 -importCheckp ...
- oracle(sql)基础篇系列(二)——多表连接查询、子查询、视图
多表连接查询 内连接(inner join) 目的:将多张表中能通过链接谓词或者链接运算符连接起来的数据查询出来. 等值连接(join...on(...=...)) --选出雇员的名字和雇员所在的部门 ...