18.计算体重指数
题目描述:
计算BMI指数(身体质量指数)。BMI指数(即身体质量指数,简称体质指数又称体重,英文为Body Mass Index,简称BMI),是用体重公斤数除以身高米数平方得出的数字,是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准。主要用于统计用途,当我们需要比较及分析一个人的体重对于不同高度的人所带来的健康影响时,BMI值是一个中立而可靠的指标。
输入描述:
一行,两个整数,分别表示体重(公斤),身高(厘米),中间用一个空格分隔。 示例输入:70 170
输出描述:
一行,BMI指数(保留两位小数)。 示例输出:24.22
解析:
本题要得到结果为浮点数,要进行浮点数整除法,这里就需要保证/两端的操作数至少拥有一个数是浮点数。
代码:
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() { int weight = 0; int high = 0; double bmi = 0.0; //输入 scanf("%d %d", &weight, &high); //计算BMI //除100.0使结果也为小数 bmi = weight / ((high / 100.0) * (high / 100.0)); //输出 printf("%.2lf", bmi); return 0; }
19.计算三角形的周长和面积
题目描述:
根据给出的三角形3条边a, b, c(0 < a, b, c < 100,000),计算三角形的周长和面积。
输入描述:
一行,三角形3条边(能构成三角形),中间用一个空格隔开。 示例输入:3 3 3
输出描述:
一行,三角形周长和面积(保留两位小数),中间用一个空格隔开. 示例输出:circumference=9.00 area=3.90
解析:
1.当我们仅仅只知道三角形的三条边时,计算面积可以使用海伦公式
2.使用库函数sqrt()时,需要引用头文件 math.h
代码:
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<math.h> int main() { double a = 0.0; double b = 0.0; double c = 0.0; double circumference = 0.0; double area = 0.0; double p = 0.0; //输入 scanf("%lf %lf %lf", &a, &b, &c); //计算周长 circumference = a + b + c; //计算面积 p = circumference / 2; //需要调用开平方函数 - sqrt() - 头文件 - math.h area = sqrt(p * (p - a) * (p - b) * (p - c)); //输出 printf("circumference=%.2lf,area=%.2lf", circumference, area); return 0; }
20.计算球体的体积
题目描述:
给定一个球体的半径,计算其体积。其中球体体积公式为 V = 4/3*πr3,其中 π= 3.1415926。
输入描述:
一行,用浮点数表示的球体的半径。 示例输入:3.0
输出描述:
一行,球体的体积,小数点后保留3位。 示例输出:113.097
解析:
这个题目,如果我们用float来求解,答案的精度是不够的,所以在计算结果为小数的时候,我们一般都将变量定义为双精度浮点型double,这样精度更加准确
代码:
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #define pi 3.1415926 int main() { double radius = 0.0;//半径 double v = 0.0;//体积 //输入 scanf("%lf", &radius); //计算 v = 4 / 3.0 * pi * radius * radius * radius; //输出 printf("%.3lf", v); return 0; }
21.成绩输入输出
题目描述:
输入3科成绩,然后把三科成绩输出,成绩为整数形式。
输入描述:
一行,3科成绩,用空格分隔,范围(0~100)。 示例输入:60 80 90
输出描述:
一行,把3科成绩显示出来,输出格式详见输出样例。 示例输出:score1=60,score2=80,score3=90
解析:
本题比较简单,只需要按照题目要求的格式进行输入输出就行。
代码:
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() { //写法一 //int s1 = 0; //int s2 = 0; //int s3 = 0; //scanf("%d %d %d", &s1, &s2, &s3); /*printf("score1=%d,score2=%d,score3=%d\n", s1, s2, s3);*/ //写法二 int score[3] = { 0 }; int i = 0; for (i = 0; i < 3; i++) { scanf("%d", &score[i]); } printf("score1=%d,score2=%d,score3=%d\n", score[0], score[1], score[2]); return 0; }
22.变种水仙花数
题目描述:
变种水仙花数 - Lily Number:把任意的数字,从中间拆分成两个数字,比如1461 可以拆分成(1和461),(14和61),(146和1),如果所有拆分后的乘积之和等于自身,则是一个LilyNumber。
例如:
655 = 6 * 55 + 65 * 5
1461 = 1*461 + 14*61 + 146*1
求出 5位数中的所有 Lily Number。
输入描述:
无
输出描述:
一行,5位数中的所有 Lily Number,每两个数之间间隔一个空格。
解析:
分析题目发现,lily数求和的每一项都是对同一个数(10/100/1000...)的取模或者整除取商。这样的话,产生10,100,1000,10000这些数字,分别对被判断的数字取模或者取商,然后乘起来再计算和,再判断就行。
代码:
#include<stdio.h> int main() { int i = 0; for (i = 10000; i <= 99999; i++) { //判断i是否为变种水仙花数 /* 12345 1 2345 12345%10000 12345/10000 12 345 12345%1000 12345/1000 123 45 12345%100 12345/100 1234 5 12345%10 12345/10 */ int j = 0; int sum = 0; for (j = 10; j <= 10000; j *= 10) { sum += (i / j) * (i % j); } if (sum == i) { printf("%d ", i); //结果为:14610 16420 23610 34420 65500 } } return 0; }
23.KiKi算术
题目描述:
问题:KiKi今年5岁了,已经能够认识100以内的非负整数,并且并且能够进行 100 以内的非负整数的加法计算。不过,BoBo老师发现KiKi在进行大于等于100的正整数的计算时,规则如下:
1.只保留该数的最后两位,例如:对KiKi来说1234等价于34;
2.如果计算结果大于等于 100, 那么KIKI也仅保留计算结果的最后两位,如果此两位中十位为0,则只保留个位。
例如:45+80 = 25
要求给定非负整数 a和 b,模拟KiKi的运算规则计算出 a+b 的值。
输入描述:
一行,输入两个非负整数a和b,用一个空格分隔。(0 <= a,b<= (2)31次方-1)。 示例输入:45 80
输出描述:
针对每组输入,输出按照KiKi的运算规则计算出 a+b 的值。 示例输出:25
解析:
本题需要掌握%的用法。
代码:
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() { int a = 0; int b = 0; //输入 scanf("%d %d", &a, &b); //计算 int sum = (a % 100 + b % 100) % 100 % 100; //输出 printf("%d", sum); return 0; }
24.浮点数的各位数字
题目描述:
给定一个浮点数,要求的得到该浮点数的个位数。
输入描述:
一行,包括一个浮点数。 示例输入:13.141
输出描述:
一行,包含一个整数,为输入浮点数对应的个位数。 示例输出:3
解析:
1.方法一:采用强制类型转换,使得一个浮点数转换成一个整数,然后再%10得到的余数就是个位数。
2.方法二:直接采用%d的形式读取这个浮点数,其实读取的就是一个整数,然后再%10得到的余数就是个位数。
代码:
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() { //方法一 //double d = 0; //scanf("%lf", &d);//13.141 //int n = (int)d; //printf("%d", n % 10); //方法二 int n = 0; scanf("%d", &n);//13.141 printf("%d", n % 10); return 0; }
25.你能活多少秒
题目描述:
一年约有3.156×(10)7次方s,要求输入您的年龄,显示该年龄合多少秒。
输入描述:
一行,包括一个整数age(0<age<=200) 示例输入:20
输出描述:
一行,包含一个整数,输出年龄对应的秒数。 示例输出:631200000
解析:
1.这里的3.156*10的7次方,如果在c语言中应表示为3.156e7。
2.计算结果为秒,可能数字会很大,为防止int类型存储空间不够,建议使用long long类型。
代码:
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() { int age = 0; //输入 scanf("%d", &age); //计算 long long second = age * 3.156e7;//3.156e7 == 3.156×(10)7 //输出 printf("%lld", second); return 0; }