7-1 选择-孔融让梨
孔融小时候聪明好学,才思敏捷,巧言妙答,大家都夸他是奇童。4岁时,他已能背诵许多诗赋,并且懂得礼节,父母亲非常喜爱他。
一日,父亲买了一些梨子,特地拣了一个最大的梨子给孔融,孔融摇摇头,却另拣了一个最小的梨子说:“我年纪最小,应该吃小的梨,你那个梨就给哥哥吧。”父亲听后十分惊喜。
输入格式:
在一行中给出两个不超过32767的正整数a,b,分别表示孔融父亲拿出的两个梨的质量。
输出格式:
输出孔融选择的梨的质量。
输入样例:
3 4
输出样例:
3
#include <stdio.h> int main() { int a,b; scanf("%d%d",&a,&b); printf("%d",a<b?a:b); }
7-2 选择-最大数
输入三个整数,输出其中最大的数。
输入格式:
输入三个整数,在 int 范围内。
输出格式:
输出其中最大的数。
输入样例:
23 78 32
输出样例:
78
#include <stdio.h> int main() { int a,b,c; scanf("%d%d%d",&a,&b,&c); printf("%d",a>(b>c?b:c)?a:(b>c?b:c)); }
7-3 选择-奇偶判断
给定一个整数,请你判断其奇偶性。如果是奇数输出YES,否则输出NO。
输入格式:
输入仅一行,包含一个整数a。
输出格式:
输出仅一行,为整数a的奇偶判断结果。
输入样例:
9
输出样例:
YES
#include <stdio.h> int main() { int a; scanf("%d",&a); if(a%2!=0) { printf("YES"); } else printf("NO"); }
7-4 选择-ASCII值
从键盘输入一个字符,若输入的是数字字符则输出它的ASCII值,否则输出提示信息“input error”。
输入格式:
输入一个字符。
输出格式:
若输入的是数字字符则输出它的ASCII值,否则输出提示信息“input error”,输出不含引号。
输入样例1:
7
输出样例1:
55
输入样例2:
W
#include <stdio.h> int main() { char c; scanf("%c",&c); if(c>='0'&&c<='9') { printf("%d",c); } else printf("input error"); }
7-5 选择-闰年
判别用year表示的某一年是否闰年。
输入格式:
输入占一行,给出一个不大于32767的整数year。
输出格式:
输出占一行,如果该年是闰年,则输出YES,否则输出NO。
输入样例:
2021
输出样例:
NO
#include <stdio.h> int main() { int year; scanf("%d",&year); if((year%4==0&&year%100!=0)||year%400==0) { printf("YES"); } else printf("NO"); }
7-6 选择 -排序
对两个实数按代数值从大到小排序。
输入格式:
一行中给出2个两个实数a,b。
输出格式:
将两个实数按从大到小输出,保留三位小数,两个实数间以空格隔开。
输入样例:
9.9 10.0
输出样例:
10.000 9.900
#include <stdio.h> int main() { double a,b; scanf("%lf%lf",&a,&b); printf("%.3f %.3f",a>b?a:b,a<b?a:b); }
7-7 选择-分段函数1
有一函数:
输入格式:
每组输入数据占一行,包含一个整数x(-32768<=x<181)。
输出格式:
每组输出数据占一行,输出y的值。
输入样例:
5
输出样例:
15
#include <stdio.h> int main() { int x; scanf("%d",&x); if(x>0) printf("%d",x*x-10); else if(x==0) printf("0"); else printf("%d",x+10); }
7-8 选择-分段函数2
输入一个实数 x,按如下公式计算并输出y的值
输入格式:
输入一个实数 x
输出格式:
输出计算结果,要求结果保留两位小数。
输入样例1:
0.5
输出样例1:
0.50
输入样例2:
3
输出样例2:
4.58
#include <stdio.h> #include <math.h> int main() { double x; scanf("%lf",&x); if(x<1) printf("%.2f",abs(x)); else if(x==1) printf("3.00"); else printf("%.2f",sqrt(x*x*x-2*x)); }
7-9 选择-分段函数3
分数 100
作者 Fzu_C
单位 福州大学
设有函数
输入格式:
输入一个实数 x(-1000<x<1000)。
输出格式:
输出y的值,结果保留3个小数点。
输入样例:
11
输出样例:
3.091
#include <stdio.h> #include <math.h> int main() { double x; scanf("%lf",&x); if(x<1) printf("%.3f",x); else if(x<10) printf("%.3f",sqrt(2*x-1)); else printf("%.3f",log(3*x-11)); }
7-10 选择-圆塔
有4个圆塔(圆柱体)。圆心坐标分别为(2,2)、(-2,2)、(-2,-2)、(2,-2),圆半径为1。这4个塔的高度为10m,塔以外无建筑物。令输入任一点的二维平面坐标,求该点的建筑高度(塔外的高度为0)。
输入格式:
输入一个点的平面坐标 (x, y),-3 <= x, y <= 3。
输出格式:
输出该点的建筑高度。
输入样例1:
2 -1.5
输出样例1:
10
输入样例2:
1 1
输出样例2:
0
#include <stdio.h> #include <math.h> int main() { double x, y; int a = 0; scanf("%lf %lf", &x, &y); if (pow(x - 2.0, 2) + pow(y - 2.0, 2) <= pow(1, 2)) { a = 1; } else if (pow(x + 2.0, 2) + pow(y - 2.0, 2) <= pow(1, 2)) { a = 1; } else if (pow(x + 2.0, 2) + pow(y + 2.0, 2) <= pow(1, 2)) { a = 1; } else if (pow(x - 2.0, 2) + pow(y + 2.0, 2) <= pow(1, 2)) { a = 1; } if (a == 1) printf("10"); else printf("0"); }
7-11 选择-买奶茶
yz大佬特别爱喝奶茶,他每天上午都要买两杯奶茶,特别的,如果这天是周六,他会在下午再买两杯,如果这天是周天,他会在下午再买四杯。
已知今天是星期x的早晨(1 <= x <= 7),请问直到明天晚上,yz大佬会买多少杯奶茶呢?
输入格式:
一个正整数x (int范围内),代表今天是星期几。
输出格式:
yz大佬购买的奶茶数量。
输入样例:
1
输出样例:
4
#include <stdio.h> int main() { int x; scanf("%d",&x); switch(x) { case 1: printf("4"); break; case 2: printf("4"); break; case 3: printf("4"); break; case 4: printf("4"); break; case 5: printf("6"); break; case 6: printf("10"); break; case 7: printf("8"); break; } }
7-12 选择-三角形判别
已知三条边的长度为a,b,c,判断三条边是否能构成一个三角形。
输入格式:
每组输入数据占一行,包括不大于10000的3个整数a,b,c。
输出格式:
每组输出数据占一行,如果a,b,c能构成三角形,则输出Yes,否则输出No。
输入样例:
3 4 7
输出样例:
No
#include <stdio.h> int main() { int a,b,c; scanf("%d%d%d",&a,&b,&c); if(a+b>c&&a+c>b&&b+c>a) { printf("Yes"); } else printf("No"); }
7-13 选择-三角形分类
输入三角形三边长,判断三角形的种类:等边三角形、等腰三角形或一般三角形。
输入格式:
输入三个整数,表示三角形三边长,范围在 1 到 100 之间。保证输入的三个整数能构成三角形。
输出格式:
按要求输出三角形的类别:
1. 如果是等边三角形,输出 “bian”
2. 如果不是等边三角形,但是等腰三角形,输出 “yao”
3. 否则,输出 “triangle”
输入样例1:
2 2 2
输出样例1:
bian
输入样例2:
3 4 5
输出样例2:
triangle
#include <stdio.h> int main() { int a,b,c; scanf("%d%d%d",&a,&b,&c); if(a==b&&b==c) { printf("bian"); } else if((a==b&&a!=c)||(a==c&&a!=b)||(b==c&&b!=a)) { printf("yao"); } else printf("triangle"); }
7-14 选择-五分制转百分制
学生百分制成绩grade分类:
- 当成绩grade大于等于85分为‘A’等;
- 当成绩grade大于等于70分且小于85分为‘B’等;
- 当成绩grade大于等于60分且小于70分为‘C’等;
- 当成绩grade小于60分为‘D’等。
输入格式:
每组输入数据占一行,包括一个成绩等级。
输出格式:
每组输出数据占一行,根据成绩等级输出百分制分数段,输出不包括引号。
- 当成绩为‘A’,输出“85~100”
- 当成绩为‘B’,输出“70~84”
- 当成绩为‘C’,输出“60~69”
- 当成绩为‘D’,输出“<60”
- 其他情况,输出“Error”
输入样例:
A
输出样例:
85~100
#include <stdio.h> int main() { char a; scanf("%c",&a); switch(a) { case 'A': printf("85~100"); break; case 'B': printf("70~84"); break; case 'C': printf("60~69"); break; case 'D': printf("<60"); break; default: printf("Error"); break; } }
7-15 选择-大小写转换
给定一个字母,如果它是小写,请将其转换成大写字母并输出;如果它是大写字母,请将其转换成小写字母并输出。
输入格式:
输入为一行,仅包含一个英文字母。
输出格式:
输出仅为一行,包含一个经过大小写转换的英文字母。
输入样例:
a
输出样例:
A
#include <stdio.h> int main() { char a; scanf("%c",&a); if(a>='a'&&a<='z') printf("%c",a-32); else printf("%c",a+32); }
7-16 选择-体积最大
小明做了一件好事,妈妈准备奖励他,于是让他在三个礼物中挑选一个。小明当然想选最好的,可是他不知道到底哪个最好。他就想应该是越大的越好,于是他就挑选了三个礼物中体积最大的那个。请你编写一段程序帮小明从三个礼物中挑选出体积最大的一个。
输入格式:
输入仅一行包含三个整数a,b,c,用空格隔开。
输出格式:
输出仅一行,是a,b,c中的最大值。
输入样例:
18 98 100
输出样例:
100
#include <stdio.h> int main() { int x,y,z; scanf("%d%d%d",&x,&y,&z); printf("%d",x>(y>z?y:z)?x:(y>z?y:z)); }
7-17 选择-N以内所有正整数和
给你一个整数,请你输出由1加到该数(包括该数)的和。
输入格式:2
输入仅一行,包含一个整数n。
输出格式:
输出为一个整数,表示1加到n的和值。
输入样例:
10
输出样例:
55
#include <stdio.h> int main() { int n; scanf("%d",&n); printf("%d",(1+n)*n/2); }
7-18 选择-计算器
根据输入的数据按要求进行计算并输出计算所得的数值(switch语句实现)。
输入格式:
输入有三个整数a,x,y。
输出格式:
请输入a值,输出x与y的运算结果
- 当a==1,计算x+y;
- 当a==2,计算x-y;
- 当a==3,计算x*y;
- 当a==4,计算x÷y;(保留1位小数)
- 当a==5,计算x xor y;(xor:异或)
- 当a非上面的数值时输出:“orzzgg”(不带引号的字符串)
输入样例:
5 6 10
输出样例:
12
#include <stdio.h> int main() { int a, x, y; scanf("%d %d %d", &a, &x, &y); switch (a) { case 1: printf("%d", x + y); break; case 2: printf("%d", x - y); break; case 3: printf("%d", x * y); break; case 4: printf("%.1f", (float)x / y); break; case 5: printf("%d", x ^ y); break; default: printf("orzzgg"); break; } }
7-19 选择-简易计算机
分数 100
作者 Fzu_C
单位 福州大学
计算机指令就是指挥机器工作的指示和命令,通常一条指令包括两个部分:操作码和操作数,操作码决定要完成的操作,操作数指参加运算的数据及其所在的单元地址。在计算机中,操作要求和操作数地址都由二进制数码表示,分别称作操作码和地址码,整条指令以二进制编码的形式存放在存储器中。
现要求编程模拟一个简易计算机的计算功能。要求给出一条指令,输出相应的运行结果。为方便起见,给定的指令有一个操作码(用十进制数表示),和 3 个操作数(即通过寻址得到的操作数)。现规定这台简易计算机的操作码如下表所示:
操作符 | 操作码 | 操作数1 | 操作数2 | 操作数3 | 等价表达式 |
+ | 0 | a | b | c | a+b |
- | 1 | a | b | c | a-b |
* | 2 | a | b | c | a*b |
/ | 3 | a | b | c | a/b |
% | 4 | a | b | c | a%b |
?: | 5 | a | b | c | a?b:c |
> | 6 | a | b | c | a>b |
< | 7 | a | b | c | a<b |
!= | 8 | a | b | c | a!=b |
== | 9 | a | b | c | a==b |
例如指令“1 12 9 99”,其中“1”表示“-”。由于减法只需两个操作符,所以我们只需要使用前两个操作数12 和 9,即表达式为“12-9”。执行该指令的结果是“3”。
输入格式:
输入为标准输入,输入共一行,仅四个整数,即操作码X(0<=x<=9),操作数a,b,c(0<=|a|,|b|,|c|<= 1000)。
输出格式:
输出仅一行,为该指令的运行结果,对于逻辑运算符的结果,如果为真输出“1”,否则输出“0”。
输入样例1:
0 9 -1 9
输出样例1:
8
输入样例2:
8 2 2 9
输出样例2:
0
#include <stdio.h> int main() { int x,a,b,c; scanf("%d%d%d%d",&x,&a,&b,&c); switch(x) { case 0: printf("%d",a+b); break; case 1: printf("%d",a-b); break; case 2: printf("%d",a*b); break; case 3: printf("%d",a/b); break; case 4: printf("%d",a%b); break; case 5: printf("%d",a?b:c); break; case 6: printf("%d",a>b); break; case 7: printf("%d",a<b); break; case 8: printf("%d",a!=b); break; case 9: printf("%d",a==b); break; } }
7-20 选择-简单的运算
洛洛现在遇到了个很简单的算术题,给定一个实数n,求它的向上取整以及向下取整,当然如果这个数是整数,那么两个运算的结果是一样的。洛洛很懒不想写代码,所以就来找你帮忙了。
输入格式:
输入一个实数n(n<1000000)。
输出格式:
输出对n的向上取整值、向下取整值和n值(保留5位小数)。
输入样例:
3.5
输出样例:
4 3 3.50000
#include <stdio.h> #include <math.h> int main() { double x; scanf("%lf",&x); printf("%d %d %.5f",(int)ceil(x),(int)floor(x),x); }
7-21 选择-水仙花数
春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,它是这样定义的:“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=13+53+3^3。现在要求你判断一个数是不是水仙花数。
输入格式:
输入包含一个整数n(99<n<1000)。
输出格式:
如果n是水仙花数输出yes,否则输出no。
输入样例:
555
输出样例:
no
#include <stdio.h> int main() { int n; scanf("%d",&n); int a=n/100; int b=n/10%10; int c=n%10; if(a*a*a+b*b*b+c*c*c==n) { printf("yes"); } else printf("no"); }
7-22 选择-三角形面积
根据输入的三角形的三条边a、b、c,计算并输出面积和周长。
输入格式:
输入为3个正整数,分别代表三角形的3条边a、b、c。
输出格式:
若输入的边能构成一个三角形,则在一行内输出三角形的面积和周长,保留两位小数。否则,输出 no triangle。
输入样例:
5 5 3
输出样例:
7.15 13.00
#include <stdio.h> #include <math.h> int main() { int a,b,c; scanf("%d%d%d",&a,&b,&c); if(a+b>c&&a+c>b&&b+c>a) { double p=(a+b+c)/2.0; double s=sqrt(p*(p-a)*(p-b)*(p-c)); double t=a+b+c; printf("%.2f %.2f",s,t); } else printf("no triangle"); }
7-23 选择-完全平方数
输入一个正整数N,判断它是否为完全平方数。
输入格式:
一个正整数N(N<=1,000,000,000)
输出格式:
若是完全平方数输出“Yes”,否则输出“No”。
输入样例:
4
输出样例:
Yes
#include <stdio.h> #include <math.h> int main() { int n; scanf("%d",&n); int a=(int)sqrt(n); if(a*a==n) { printf("Yes"); } else printf("No"); }
7-24 选择-矩形与点的位置
给定一个矩形A的左上、右下顶点坐标,以及另一个点B的坐标,判断点B是否在矩形A内(恰好在某条边上也算在矩形内)。
输入格式:
输入三个坐标(xL,yL),(xR,yR),(x,y) 分别表示矩形的左上、右下顶点坐标、点B坐标。(坐标均为绝对值<=1000000的整数,保证矩形合法,即xL<xR, yL>yR)。
输出格式:
若点B在矩形A内,输出“Yes”,否则输出“No”(输出不带引号)。
输入样例1:
0 10 10 0 10 10
输出样例1:
Yes
输入样例2:
0 10 10 0 13 3
输出样例2:
No
#include <stdio.h> #include <math.h> int main() { int zs1,zs2,yx1,yx2,b1,b2; scanf("%d%d%d%d%d%d",&zs1,&zs2,&yx1,&yx2,&b1,&b2); int max=abs(zs1)>abs(yx1)?abs(zs1):abs(yx1); int min=abs(zs2)>abs(yx2)?abs(zs2):abs(yx2); if(abs(b1)<=max&&abs(b2)<=min) { printf("Yes"); } else printf("No"); }
7-25 选择-数的判别
从键盘输入一个正整数n,先判断它是奇数还是偶数。当它是奇数的时候,进一步判断它是否能被3整除。
输入格式:
输入一个正整数n。
输出格式:
输出相应的判断结果。
- n是偶数,输出“n is an even number”
- n是奇数且能被3整除,输出“n is an odd number,it can be divided by 3”
- n是奇数且不能被3整除,输出“n is an odd number,it can’t be divided by 3”
输出不包含引号。
输入样例:
17
输出样例:
17 is an odd number,it can't be divided by 3
#include <stdio.h> int main() { int n; scanf("%d",&n); if(n%2!=0) { if(n%3==0) printf("%d is an odd number,it can be divided by 3",n); else printf("%d is an odd number,it can't be divided by 3",n); } else printf("%d is an even number",n); }
7-26 选择-数字字符的判别
判断输入字符是否为数字字符,是数字字符,则输出该字符;否则输出“input error”
输入格式:
输入一个字符。
输出格式:
输出相应信息。
输入样例:
a
输出样例:
input error
#include <stdio.h> int main() { char a; scanf("%c",&a); if(a>='0'&&a<='9') { printf("%c",a); } else printf("input error"); }
7-27 选择-销售菜单
假设自动售货机出售四种商品:[1]薯片、[2]爆米花、[3]巧克力和[4]可乐,其单价分别为8元、4.5元、12.8元和3元。现从键盘输入商品编号,当输入为1~4时,输出对应商品的单价;当输入其他编号时,输出“Exit”。(用switch语句实现)
输入格式:
输入一个整数,表示商品编号。
输出格式:
输出所选商品的单价。如果商品编号不在[1,4]区间内,则输出“Exit”(输出不包含引号)
输入样例:
1
输出样例:
8
输入样例:
0
输出样例:
Exit
#include <stdio.h> int main() { int n; scanf("%d",&n); switch (n) { case 1: printf("8"); break; case 2: printf("4.5"); break; case 3: printf("12.8"); break; case 4: printf("3"); break; default: printf("Exit"); break; } }
7-28 选择-电话费
甲乙两家通讯公司,甲公司每月通话收费标准如下:
甲:
月租费 | 通话费 |
25元 | 0.1 元/分钟 |
乙:
0 < t (分)< 100 | t(分) >= 100 |
20 元/月 | 0.3 元/分 |
输入格式:
输入每个月通话时长 t (0 < t < 10^10 ) ,t为整数。
输出格式:
输出选择哪家公司更实惠 ,甲公司更实惠输出 1 ,乙公司输出2 (两公司价格相等优先选择甲公司)。
输入样例1:
50
输出样例1:
2
输入样例2:
300
输出样例2:
1
#include <stdio.h> int main() { int t; scanf("%d",&t); double s1,s2; s1=25+0.1*t; if(t<100) s2=20; else s2=0.3*t; if(s1>s2) printf("2"); else printf("1"); }
7-29 选择-税收计算1
若规定个人稿费纳税规则为:不超过800元不纳税;超过800不超过4000元的按超过800元部分的15%纳税;超过4000元的按全部稿酬的10%纳税。
输入格式:
输入某人获得的稿费 x(0 < x <10^9),x为整数。
输出格式:
输出应付的税费y (保留一位小数)。
输入样例1:
400
输出样例1:
0.0
输入样例2:
1000
输出样例2:
30.0
#include <stdio.h> int main() { int x; scanf("%d",&x); double y; if(x<=800) y=0; else if(x<=4000) y=(x-800)*0.15; else y=x*0.1; printf("%.1f",y); }
7-30 选择-自然数
判断给定的数a是否为自然数
输入格式:
输入一个浮点数a,a在int的范围内。
输出格式:
若为自然数则输出“Yes”,反之输出“No”。(输出不包括引号)
输入样例:
95.27
输出样例:
No
#include <stdio.h> int main() { float a; scanf("%f", &a); if (a >= 0 && (int)a == a) { printf("Yes"); } else { printf("No"); } }
7-28 选择-电话费
甲乙两家通讯公司,甲公司每月通话收费标准如下:
甲:
月租费 | 通话费 |
25元 | 0.1 元/分钟 |
乙:
0 < t (分)< 100 | t(分) >= 100 |
20 元/月 | 0.3 元/分 |
输入格式:
输入每个月通话时长 t (0 < t < 10^10 ) ,t为整数。
输出格式:
输出选择哪家公司更实惠 ,甲公司更实惠输出 1 ,乙公司输出2 (两公司价格相等优先选择甲公司)。
输入样例1:
50
输出样例1:
2
输入样例2:
300
输出样例2:
1
#include <stdio.h> int main() { int t; scanf("%d",&t); double s1,s2; s1=25+0.1*t; if(t<100) s2=20; else s2=0.3*t; if(s1>s2) printf("2"); else printf("1"); }
7-29 选择-税收计算1
若规定个人稿费纳税规则为:不超过800元不纳税;超过800不超过4000元的按超过800元部分的15%纳税;超过4000元的按全部稿酬的10%纳税。
输入格式:
输入某人获得的稿费 x(0 < x <10^9),x为整数。
输出格式:
输出应付的税费y (保留一位小数)。
输入样例1:
400
输出样例1:
0.0
输入样例2:
1000
输出样例2:
30.0
#include <stdio.h> int main() { int x; scanf("%d",&x); double y; if(x<=800) y=0; else if(x<=4000) y=(x-800)*0.15; else y=x*0.1; printf("%.1f",y); }
7-30 选择-自然数
判断给定的数a是否为自然数
输入格式:
输入一个浮点数a,a在int的范围内。
输出格式:
若为自然数则输出“Yes”,反之输出“No”。(输出不包括引号)
输入样例:
95.27
输出样例:
No
#include <stdio.h> int main() { float a; scanf("%f", &a); if (a >= 0 && (int)a == a) { printf("Yes"); } else { printf("No"); } }