算法竞赛入门【码蹄集新手村600题】(MT1100-1120)C语言
- 目录
- MT1101 带参数的宏II
- MT1102 长方体
- MT1103 球体积
- MT1104 三角形
- MT1105 英寸英尺英里
- MT1106 盎司磅
- MT1107 加仑/升
- MT1108 保留小数
- MT1109 和10相比
- MT1110 最小值
- MT1111 最大值
- MT1112 中庸之道
- MT1113 三人同行
- MT1114 偶数还是奇数
- MT1115 小于m的偶数
- MT1116 正整数
- MT1117 两个负数
- MT1118 等差数列
- MT1119 大小写的转换
- MT1120 老师的评语
码蹄集网站地址:https://www.matiji.net/exam/ojquestionlist
目录
MT1101 带参数的宏II
(1)题目
请编写一个简单程序,把f(x)=x*(x-1)定义成带参数的宏,从键盘输入a,b,将a+b的和作为宏实参计算并输出结果。
格式
输入格式:
输入整型,空格分隔。
输出格式:
输出为实型
样例1
输入:
3 5
输出:
56.000000
(2)参考代码
#include<stdio.h>
#define f(x) ((x)*((x)-1))
int main()
{
int a, b;
scanf("%d %d", &a, &b);
printf("%lf\n", (double)f(a+b));
return 0;
}
MT1102 长方体
(1)题目
将长方体体积计算公式定义为宏。在主函数中输入长方体长、宽、高求体积。不考虑不合理的输入或是溢出等特殊情况。
格式
输入格式:
输入为实型(正数),空格分隔。
输出格式:
输出为实型
样例1
输入:
3 4 5
输出:
60.000000
(2)参考代码
#include<stdio.h>
#define VOLUME(x, y, z) ((x)*(y)*(z))
int main()
{
double x, y, z;
scanf("%lf %lf %lf", &x, &y, &z);
printf("%lf\n", VOLUME(x, y, z));
return 0;
}
MT1103 球体积
(1)题目
将球体积计算公式定义为宏。在主函数中输入半径求体积。
格式
输入格式:
输入为实型
输出格式:
输出为实型
样例1
输入:
3.5
输出:
179.594228
(2)参考代码
#include<stdio.h>
#define PI 3.14159
#define VOLUME(r) (4.0/3.0*PI*(r)*(r)*(r))
int main()
{
double r;
scanf("%lf", &r);
printf("%lf\n", VOLUME(r));
return 0;
}
MT1104 三角形
(1)题目
格式
输入格式:
输入为实型
输出格式:
输出为实型
样例1
输入格式:
3 4 5
输出格式:
6.000000
(2)参考代码
#include<stdio.h>
#include <math.h>
#define Area(a, b ,c, s) (sqrt((s)*((s)-(a))*((s)-(b))*((s)-(c))))
int main()
{
double a, b, c, s;
scanf("%lf %lf %lf", &a, &b, &c);
s = (a + b + c) / 2;
if (a+b>c && a+c>b && b+c>a)
{
printf("%lf", Area(a, b, c, s));
}
else
{
printf("%d", -1);
}
return 0;
}
MT1105 英寸英尺英里
(1)题目
定义关于长度的宏,英寸/厘米、英尺/米、英里/公里,计算英制与公制单位转换,在主函数中输入数据输出计算结果。假定1英寸=2.54厘米、1英尺=0.31米、1英里=1.61公里。
格式
输入格式:
输入英寸、英尺、英里为实型,空格分隔。
输出格式:
输出厘米、米、公里为实型,空格分隔。保留2位小数。
样例1
输入:
1 1 1
输出:
2.54 0.31 1.61
(2)参考代码
#include<stdio.h>
#define INCH_cm(x) ((x) * 2.54)
#define FEET_m(x) ((x) * 0.31)
#define MILE_km(x) ((x) * 1.61)
int main()
{
double a, b, c;
scanf("%lf %lf %lf", &a, &b, &c);
printf("%.2lf %.2lf %.2lf\n", INCH_cm(a), FEET_m(b), MILE_km(c));
return 0;
}
MT1106 盎司磅
(1)题目
定义关于重量的宏,盎司/克、磅/公斤,计算美制单位与公制转换,在主函数中输入数据输出计算结果。
格式
输入格式:
输入盎司、磅为实型,空格分隔
输出格式:
输出克、公斤实型,空格分隔。保留2位小数。
样例1
输入格式:
1 1
输出格式:
28.35 0.45
(2)参考代码
#include<stdio.h>
#define oz_g(oz) ((oz)*28.35)
#define lb_kg(lb) ((lb)*0.45)
int main()
{
double oz, lb;
scanf("%lf %lf", &oz, &lb);
printf("%.2lf %.2lf", oz_g(oz), lb_kg(lb));
return 0;
}
MT1107 加仑/升
(1)题目
定义关于容量的宏,加仑/升,计算单位转换,在主函数中输入数据输出计算结果。
格式
输入格式:
输入加仑为实型。
输出格式:
输出升为实型,保留2位小数。
样例1
输入:
1
输出:
3.79
(2)参考代码
#include<stdio.h>
#define GALLON_LITRE(x) ((x) * 3.79)
int main()
{
double x;
scanf("%lf", &x);
printf("%.2lf\n", GALLON_LITRE(x));
return 0;
}
MT1108 保留小数
(1)题目
将一个浮点型K数保留n(1≤n≤5)位小数(四舍五入)的算法定义为宏。在主函数中输入数据输出计算结果。
格式
输入格式:
输入k为实型,n为整数,空格分隔。
输出格式:
输出为实型
样例1
输入:
3.1415926 3
输出:
3.142
(2)参考代码
#include<stdio.h>
#define ROUND_UP(k, n) printf("%.*lf", (n), (k))
int main()
{
double k;
int n;
scanf("%lf %d", &k, &n);
ROUND_UP(k, n);
return 0;
}
MT1109 和10相比
(1)题目
请编写一个简单程序,输入一个整数,和10比较,输出比较结果
格式
输入格式:
输入整型
输出格式:
输出…大于或者等于或者小于10
样例1
输入:
1
输出:
1小于10
(2)参考代码
#include<stdio.h>
int main()
{
int x;
scanf("%d", &x);
if (x > 10)
{
printf("%d大于10", x);
}
else if (x < 10)
{
printf("%d小于10", x);
}
else
{
printf("%d等于10", x);
}
return 0;
}
MT1110 最小值
(1)题目
输入a,b两个整数,输出他们之间的最小值
格式
输入格式:
输入2个整数用空格分隔
输出格式:
输出为整型
样例1
输入:
2 8
输出:
2
(2)参考代码
#include<stdio.h>
int main()
{
int a, b;
scanf("%d %d", &a, &b);
if (a > b)
{
printf("%d", b);
}
else
{
printf("%d", a);
}
return 0;
}
MT1111 最大值
(1)题目
输入a,b两个整数,输出他们之间的最大值
格式
输入格式:
输入2个整数用空格分隔
输出格式:
输出为整型
样例1
输入:
2 8
输出:
8
(2)参考代码
#include<stdio.h>
int main()
{
int a, b;
scanf("%d %d", &a, &b);
if (a > b)
{
printf("%d", a);
}
else
{
printf("%d", b);
}
return 0;
}
MT1112 中庸之道
(1)题目
请编写一个简单程序,输入3个整数,比较他们的大小,输出中间的那个数
格式
输入格式:
输入整型,空格分隔
输出格式:
输出整型
样例1
输入:
1 5 3
输出:
3
(2)参考代码
#include<stdio.h>
int main()
{
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
if ((a > b && b > c) || (a < b && b < c))
{
printf("%d", b);
}
else if((c > a && a > b) || (c < a && a < b))
{
printf("%d", a);
}
else
{
printf("%d", c);
}
return 0;
}
MT1113 三人同行
(1)题目
三人同行,输入他们的年龄,输出最年长者的年龄
格式
输入格式:
输入整型,空格分隔
输出格式:
输出整型
样例1
输入格式:
1 66 70
输出格式:
70
(2)参考代码
#include<stdio.h>
#define max(x, y) ((x)>(y)?(x):(y))
int main()
{
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
printf("%d", max(max(a, b), max(a, c)));
return 0;
}
MT1114 偶数还是奇数
(1)题目
请编写一个简单程序,检查一个正整数是偶数还是奇数,如果是偶数输出Y,否则输出N。(不考虑0)
格式
输入格式:
输入整型
输出格式:
输出Y或者N
样例1
输入:
4
输出:
Y
(2)参考代码
#include<stdio.h>
int main()
{
int x;
scanf("%d", &x);
if (x % 2 == 0)
{
printf("Y");
}
else
{
printf("N");
}
return 0;
}
MT1115 小于m的偶数
(1)题目
判断n是否为小于m的偶数,不考虑0,负数或者其他特殊情况。
格式
输入格式:
输入为整型n、m,空格分隔
输出格式:
是则输出YES否则输出NO
样例1
输入:
3 6
输出:
NO
(2)参考代码
#include<stdio.h>
int main()
{
int n, m;
scanf("%d %d", &n, &m);
if (n < m && n % 2 == 0)
{
printf("YES");
}
else
{
printf("NO");
}
return 0;
}
MT1116 正整数
(1)题目
判断n是否为两位数的正整数
格式
输入格式:
输入为整型n
输出格式:
是则输出YES否则输出NO
样例1
输入:
11
输出:
YES
(2)参考代码
#include<stdio.h>
int main()
{
int x;
scanf("%d", &x);
if ((x >= 10) && (x <= 99))
{
if (x >= 0)
{
printf("YES");
}
else
{
printf("NO");
}
}
else
{
printf("NO");
}
return 0;
}
MT1117 两个负数
(1)题目
判断x、y、z中是否有两个负数。
格式
输入格式:
输入为整型x、y、z,空格分隔
输出格式:
是则输出YES否则输出NO
样例1
输入:
1 2 3
输出:
NO
(2)参考代码
#include<stdio.h>
int main()
{
int x, y, z;
scanf("%d %d %d", &x, &y, &z);
if ((x<0 && y<0) || (x<0 && z<0) || (z<0 && y<0))
{
printf("YES");
}
else
{
printf("NO");
}
return 0;
}
MT1118 等差数列
(1)题目
判断a、b、c是否为一个等差数列中的连续三项。
格式
输入格式:
输入为整型a、b、c,空格分隔
输出格式:
是则输出YES否则输出NO
样例1
输入格式:
1 2 3
输出格式:
YES
(2)参考代码
#include<stdio.h>
int main()
{
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
if ((c-b) == (b-a))
{
printf("YES\n");
}
else
{
printf("NO");
}
return 0;
}
MT1119 大小写的转换
(1)题目
请编写一个简单程序,实现输入字符大小写的转换。其他非法输入(非字母的输入)则原样输出。
格式
输入格式:
输入字符型
输出格式:
输出字符型
样例1
输入:
A
输出:
a
(2)参考代码
#include<stdio.h>
#include<ctype.h>
int main()
{
char str;
scanf("%c", &str);
if (isalpha(str))
{
if (str>=65&&str<=90)
{
str += 32;
printf("%c", str);
}
else
{
str -= 32;
printf("%c", str);
}
}
else
{
printf("%c", str);
}
return 0;
}
MT1120 老师的评语
(1)题目
请编写一个简单程序,输入学生成绩等级ABCD,输出相应的评语“Excellent” 、 “Well done" 、 “You passed"、“Better luck next time"。非法输入时候则输出“Invalid grade"
格式
输入格式:
输入字符型
输出格式:
输入字符评语
样例1
输入格式:
A
输出格式:
Excellent
(2)参考代码
#include<stdio.h>
int main()
{
char level;
scanf("%c", &level);
if (level == 'A')
{
printf("Excellent");
}
else if (level == 'B')
{
printf("Well done");
}
else if (level == 'C')
{
printf("You passed");
}
else if (level == 'D')
{
printf("Better luck next time");
}
else
{
printf("Invalid grade");
}
return 0;
}