算法竞赛入门【码蹄集新手村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;
}