当前位置: 首页 > article >正文

HDU杭电OJ基础100题2000-2099(C语言版)

文章目录

    • @[TOC](文章目录) [原题出处](https://acm.hdu.edu.cn/listproblem.php?vol=11)
  • 前言
  • p2000 ASCII码排序
    • 问题描述
    • 解题思路
    • 代码1
      • 重点
    • 代码2
      • 重点
  • p2001 计算两点间的距离
    • 问题描述
    • 解题思路
    • 代码
  • p2002 计算球体积
    • 问题描述
    • 解题思路
    • 代码
      • 重点
  • p2003 求绝对值
    • 问题描述
    • 解题思路
    • 代码
      • 扩展
  • p2004 成绩转换
    • 问题描述
    • 解题思路
    • 代码
    • 重点
  • p2005 第几天
    • 问题描述
    • 解题思路
    • 代码
      • 扩展
  • p2006 求奇数的乘积
  • p2007 平方和与立方和
    • 问题描述
    • 解题思路
    • 代码
  • p2008 数值统计
    • 问题描述
    • 解题思路
    • 代码
  • p2009 求数列的和
    • 问题描述
    • 解题思路
    • 代码

原题出处

前言

3月10号开始准备蓝桥杯,4月13号比赛,仅有C语言语法基础。在此分享学习记录,于君共勉之。
目前第一阶段,结合所学,刷杭电oj基础100题,预计时间:一周。


p2000 ASCII码排序

问题描述

输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符。

输入:
输入数据有多组,每组占一行,有三个字符组成,之间无空格。
输出:
对于每组输入数据,输出一行,字符中间用一个空格分开。
样本输入:
qwe
asd
zxc
示例输出:
e q w
a d s
c x z

解题思路

1.排序问题,首先想到经典冒泡排序
2.多组输入,用循环实现

代码1

int main()
{char a = 0, b = 0, c = 0, t = 0;while (scanf(" %c%c%c", &a, &b, &c) != EOF)//EOF是文件结束的标志{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);}return 0;
}

重点

%c前加空格。
因为%c每次仅读取一个字符(包括enter(回车)、‘\n’、tap(水平制表符)等。)输入第一组数据后需要回车,回车键放入了键盘缓冲区,第二个%c读取的是回车键,导致输出混乱。

代码2

int main()
{char a = 0, b = 0, c = 0, t = 0;while (scanf("%c%c%c", &a, &b, &c) != EOF){char c_tmp;while ((c_tmp = getchar() != '\n') && c_tmp != EOF);//C语言基本语法:清空缓存区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);}return 0;
}

重点

char c_tmp;
while ((c_tmp = getchar() != ‘\n’) && c_tmp != EOF);
C语言基本语法,作用是清空缓存区。

p2001 计算两点间的距离

问题描述

输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离。

输入:
输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x2,y2,数据之间用空格隔开。
输出:
对于每组输入数据,输出一行,结果保留两位小数。
样本输入:
0 0 0 1
0 1 1 0
示例输出:
1.00
1.41

解题思路

简单的计算,联想到两点间的距离公式

代码

int main()
{double x1, x2, y1, y2, a;while (scanf("%lf %lf %lf %lf", &x1, &y1, &x2, &y2) != EOF){a = sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));printf("%.2lf", a);}return 0;

p2002 计算球体积

问题描述

根据输入的半径值,计算球的体积。

输入:
输入数据有多组,每组占一行,每行包括一个实数,表示球的半径。
输出:
输出对应的球的体积,对于每组输入数据,输出一行,计算结果保留三位小数。
样本输入:
1
1.5
示例输出:
4.189
14.137

解题思路

v = 3/4 * pi * pow(r, 3)

代码

int main()
{const double pi = acos(-1.0);double r, v;while (scanf("%lf", &r) != EOF){v = 4 / 3.0 * pi * pow(r, 3);printf("%.3lf", v);}return 0;
}

重点

1.用关键字const声明常量pi
2.acos(-1)是数学上的反余弦函数,值=Π
3.C 库函数 double pow(double x, double y) 返回 x 的 y 次幂

p2003 求绝对值

问题描述

求实数的绝对值。

输入:
输入数据有多组,每组占一行,每行包含一个实数。
输出:
对于每组输入数据,输出它的绝对值,要求每组数据输出一行,结果保留两位小数。
样本输入:
123
-234.00
示例输出:
123.00
234.00

解题思路

绝对值:分类讨论。

代码

int main()
{double a;while (scanf("%lf", &a) != EOF){if (a > 0)printf("%.2lf", a);elseprintf("%.2lf", -a);}return 0;
}

扩展

abs()函数
Y = abs(X) 返回数组 X 中每个元素的绝对值。如果 X 是复数,则 abs(X) 返回复数的模。

p2004 成绩转换

问题描述

输入一个百分制的成绩t,将其转换成对应的等级,具体转换规则如下:
90~100为A;
80~89为B;
70~79为C;
60~69为D;
0~59为E;

输入:
输入数据有多组,每组占一行,由一个整数组成。
输出:
对于每组输入数据,输出一行。如果输入数据不在0~100范围内,请输出一行:“Score is error!”。
样本输入:
56
67
100
123
示例输出:
E
D
A
Score is error!

解题思路

简单运用选择语句

代码

int main() {int score;char grade;while (scanf("%d", &score)!=EOF){if (score < 0 || score>100)printf("Score is error!\n");else{switch (score / 10) {case 10:case 9:grade = 'A';break;case 8:grade = 'B';break;case 7:grade = 'C';break;case 6:grade = 'D';break;default:grade = 'E';break;} printf("%c\n", grade);}}return 0;}

重点

抓住全局变量和局部变量

p2005 第几天

问题描述

给定一个日期,输出这个日期是该年的第几天。

输入:
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
输出:
对于每组输入数据,输出一行,表示该日期是该年的第几天。
样本输入:
1985/1/20
2006/3/12
示例输出:
20
71

解题思路

1.用数组,将各月份的天数存入数组
2.计算前几个月的天数
3.判断闰年,再加减。

代码

int main()
{int a, b, c, i, days = 0;int day[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };while (~scanf("%d/%d/%d", &a, &b, &c)){for (i = 1; i <= b - 1; i++)days += day[i];if (a % 400 == 0 || (a % 4 == 0 && a % 100 != 0)){if (b > 2)days += 1;}days += c;printf("%d", days);}return 0;}

扩展

~scanf()读到输入结尾时循环也结束。

p2006 求奇数的乘积

额,忘写了,下次再补吧!

p2007 平方和与立方和

问题描述

给定一段连续的整数,求出他们中所有偶数的平方和以及所有奇数的立方和。

输入:
输入数据包含多组测试实例,每组测试实例包含一行,由两个整数m和n组成。
输出:
对于每组输入数据,输出一行,应包括两个整数x和y,分别表示该段连续的整数中所有偶数的平方和以及所有奇数的立方和。
你可以认为32位整数足以保存结果。
样本输入:
1 3
2 5
示例输出:
4 28
20 152

解题思路

1.根据样例输入与输出理解题目意思
2.自然想到需要循环、分类;

代码

int main()
{int m, n, x = 0, y = 0, i;scanf("%d %d", &m, &n);for (i = m; i <= n; i++){if (i % 2 == 0)x += pow(i, 2);elsey += pow(i, 3);}printf("%d %d", x, y);return 0;
}

p2008 数值统计

问题描述

统计给定的n个数中,负数、零和正数的个数。

输入:
输入数据有多组,每组占一行,每行的第一个数是整数n(n<100),表示需要统计的数值的个数,然后是n个实数;如果n=0,则表示输入结束,该行不做处理。
输出:
对于每组输入数据,输出一行a,b和c,分别表示给定的数据中负数、零和正数的个数。
样本输入:
6 0 1 2 3 -1 0
5 1 2 3 4 0.5
0
示例输出:
1 2 3
0 0 5

解题思路

简答选择语句判断正负

代码

int main()
{double x;int n, i;while (scanf("%d", &n) != EOF){int	a = 0, b = 0, c = 0;for (i = 1; i <= n; i++)//==》while(n--){scanf("%lf", &x);if (x < 0)a++;if (x == 0)//粗心,==写成=b++;if (x > 0)c++;}printf("%d %d %d", a, b, c);//粗心,将printf放在外面}return 0;
}

p2009 求数列的和

问题描述

数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和。

输入:
输入数据有多组,每组占一行,由两个整数n(n<10000)和m(m<1000)组成,n和m的含义如前所述。
输出:
对于每组输入数据,输出该数列的和,每个测试实例占一行,要求精度保留2位小数。
样本输入:
81 4
2 2
示例输出:
94.73
3.41

解题思路

读懂题目,直接用循环作答

代码

int main()
{int m, i;double n;while (~scanf("%lf%d", &n,&m))//注意要改就改全套;{double count = 0.0;for (i = 1; i <= m; i++){//count += sqrt(n);一直重置n,没有改变下一项count += n;n = sqrt(n);}printf("%.2lf", count);}return 0;
}
http://www.lryc.cn/news/2419545.html

相关文章:

  • Win10下Windows Mobile设备中心无法连接斑马PDA 、无法拷贝文件———— Windows 设备中心64位安装包
  • 网站导航颜色停留_良好的网站导航设计有助于提升网站排名
  • 小向まな美
  • YOLO V7网络实现细节(2)—网络整体架构总结
  • PHP函数strip_tags的一个bug浅析
  • 图片外链网站需要什么样服务器,10个支持外链图片服务的免费图床网站
  • 启动应用程序出现opengl32.dll文件丢失问题解决
  • Beanstalkd介绍
  • ipvsadm配置命令解析
  • 在 unity 中使用三种简单的方式实现实时时钟动画
  • 线性拟合polyfit_非线性方程求根amp;曲线拟合
  • 红黑树( 图解 + 秒懂 + 史上最全)
  • GoAhead_网页操作
  • TCP/IP-网络层
  • 史上最全的正则表达式-匹配中英文、字母和数字
  • APP启动优化理论与实践(下)
  • 不得了!这个国产数据库居然实现了Oracle聚合函数vm_concat
  • 1、图基础知识介绍
  • 置换群与轮换
  • 网页表单提交方式详细汇总
  • 外网/公网出口IP查询方法汇总
  • 巧用利器!十款网页设计与开发效率提升的工具与网站!
  • Win32之ShowWindow
  • sdcc 存储类型关键字
  • DeviceIoControl的使用说明
  • fcfs调度算法_王道操作系统学习笔记(四)进程调度
  • 对偶问题的理解
  • java 通过远程URL实现文件下载几种方式
  • 《工程电磁场》学习笔记1-静电场
  • 研究生们都在推荐哪些好用的论文在线翻译软件?