1、计算a+b。
每组数据+输出占一行,包含两个整数a,b,由空格隔开。输入0 0表示输入数据结束,0 0这组数据不用处理。
C++程序
#include <iostream>
using namespace std;
int main()
{
int a, b;
while(cin >> a >> b && (a || b)) {
cout << a + b << endl;
}
return 0;
}
C程序
#include <stdio.h>
int main(void)
{
int a, b;
while(scanf("%d%d", &a, &b) != EOF && (a || b))
printf("%d\n", a + b);
return 0;
}
2、字符串排序
C程序
/* HDU2000 ASCII码排序 */
#include <stdio.h>
int main(void)
{
char a, b, c, temp;
while(~scanf("%c%c%c", &a, &b, &c)) {
getchar(); //接收回车符,这样缓存里面就没有回车符了
if(a > b) {
temp = a;
a = b;
b = temp;
}
if(b > c) {
temp = b;
b = c;
c = temp;
}
if(a > b) {
temp = a;
a = b;
b = temp;
}
printf("%c %c %c\n", a, b, c);
}
return 0;
}
虽然可以使用 cin 和 >> 运算符来输入字符串,但当 cin 读取数据时,它会传递并忽略任何前导白色空格字符(空格、制表符或换行符)。一旦它接触到第一个非空格字符即开始阅读,当它读取到下一个空白字符时,它将停止读取。
为了解决这个问题,可以使用一个叫做 getline 的 C++ 函数。此函数可读取整行,包括前导和嵌入的空格,并将其存储在字符串对象中。
/* HDU2000 ASCII码排序 */
#include <iostream>
#include <string> //getline(cin,s)
#include <algorithm>//sort(s.begin(),s.end())
using namespace std;
const int N = 3;
int main()
{
string s;
while(getline(cin, s)) {
sort(s.begin(), s.end());
for(int i=0; i<N; i++) {
if(i != 0)
cout << " ";//字符以空格隔开
cout << s[i];
}
cout << endl;
}
return 0;
}
或
#include <iostream>
#include <algorithm> //STL标准算法库
using namespace std;
int main()
{
char c[3];
while(scanf("%c%c%c", &c[0], &c[1], &c[2]) != EOF) {
getchar();
sort(c, c + 3);
printf("%c %c %c\n", c[0], c[1], c[2]);
}
return 0;
}
3、两点距离 sqrt()
%mf, %.nf, %m.nf,
其中m表示输出数据的宽度;
n表示输出的实数保留n位小数;如:
float x=123.2323232323;
printf("%12f,%3.2f,%.2f",x,x,x);
4、球的体积
double 精度高,有效数字 16 位,用%lf。float 精度 7 位,用%f。所以r和V要定义为double保证精度。
5、绝对值
因为函数fabs()的功能是求绝对值,其参数和返回值都是double类型,所有变量也声明为double类型。
6、成绩转换(查表法)
/* HDU2004 成绩转换 */
#include <stdio.h>
int main(void)
{
int score;
char convert[] = "EEEEEEDCBAA";
while(scanf("%d", &score) != EOF) {
if(score < 0 || score > 100)
printf("Score is error!\n");
else
printf("%c\n", convert[score/10]);
}
return 0;
}
7、日期算天数
C程序
/* HDU2005 第几天? */
#include <stdio.h>
int mdays[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int main(void)
{
int y, m, d;
while(scanf("%d/%d/%d", &y, &m, &d) != EOF) {
if(y % 4 == 0 && (y % 100 || y % 400 == 0))
mdays[2] = 29;
else
mdays[2] = 28;
int days = 0, i;
for(i = 1; i < m; i++)
days += mdays[i];
days += d;
printf("%d\n", days);
}
return 0;
}
8、求奇数乘积
输入数据包含多个测试实例,每个测试实例占一行,每行的第一个数为n,表示本组数据一共有n个,接着是n个整数,你可以假设每组数据必定至少存在一个奇数。
/* HDU2006 求奇数的乘积 */
#include <stdio.h>
int main(void)
{
int n, a, p;
while(scanf("%d", &n) != EOF) {
p = 1; /* 设置乘积初值 */
/* 计算奇数乘积:逐个处理输入值 */
while(n--) {
scanf("%d", &a);
if(a & 1) /* 或 a % 2 == 1 */
p *= a; /* 奇数乘积 */
}
/* 输出结果 */
printf("%d\n", p);
}
return 0;
}
if(m > n) { // 保证m<=n,以便控制循环
i = m;
m = n;
n = i;
}
for(i=m; i<=n; i++) {
if(i & 1) // 或 i % 2 == 1
odd_sum += i * i * i; // 奇数立方
else
even_sum += i * i; // 偶数平方
}
以上代码参考于链接:https://tigerisland.blog.csdn.net/article/details/84929523