✨✨✨【C语言】带你用最短的时间刷题(附解题思路、具体代码)不断更新(六)✨✨✨

🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷

🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷


💚BC52、衡量人体胖瘦程度

描述:

在计算BMI(BodyMassIndex ,身体质量指数)的案例基础上,判断人体胖瘦程度。BMI中国标准如下表所示

输入描述:

多组输入,每一行包括两个整数,用空格隔开,分别为体重(公斤)和身高(厘米)

输出描述:

针对每行输入,输出为一行,人体胖瘦程度,即分类

示例:

输入:
80 170
60 170
90 160
50 185

输出:
Overweight
Normal
Obese
Underweight

代码:

#include <stdio.h>
#include <math.h>
int main()
{
	int W = 0;
	int hight = 0;
	while (~scanf("%d%d", &W, &hight))
	{
		double h = hight / 100.0;
		double H = pow(h, 2);
		double BMI = W / H;
		if (BMI<18.5)
		{
			printf("Underweight\n");
		}
		else if (BMI >= 18.5 && BMI <= 23.9)
		{
			printf("Normal\n");
		}
		else if (BMI > 23.9 && BMI <= 27.9)
		{
			printf("Overweight\n");
		}
		else 
		{
			printf("Obese\n");
		}
	}
	return 0;
}

结果:

扩展:

浮点数除法要保证除号的两端至少有一个浮点数


🧡BC53、计算一元二次方程

描述:

从键盘输入a, b, c的值,编程计算并输出一元二次方程ax^2 + bx + c = 0的根,当a = 0时,输出“Not quadratic equation”,当a ≠ 0时,根据△ = b^2 - 4*a*c的三种情况计算并输出方程的根

输入描述:

多组输入,一行,包含三个浮点数a, b, c,以一个空格分隔,表示一元二次方程ax^2 + bx + c = 0的系数

输出描述:

针对每组输入,输出一行,输出一元二次方程ax^2 + bx +c = 0的根的情况。

  如果a = 0,输出“Not quadratic equation”;

  如果a ≠  0,分三种情况:

△ = 0,则两个实根相等,输出形式为:x1=x2=...。

△  > 0,则两个实根不等,输出形式为:x1=...;x2=...,其中x1  <=  x2。

△  < 0,则有两个虚根,则输出:x1=实部-虚部i;x2=实部+虚部i,即x1的虚部系数小于等于x2的虚部系数,实部为0时不可省略。实部= -b / (2*a),虚部= sqrt(-) / (2*a)

所有实数部分要求精确到小数点后2位,数字、符号之间没有空格

示例:

输入:
2.0 7.0 1.0

输出:
x1=-3.35;x2=-0.15
    
输入:
0.0 3.0 3.0

输出:
Not quadratic equation

输入:
1 2 1

输出:
x1=x2=-1.00
    
输入:
2 2 5

输出:
x1=-0.50-1.50i;x2=-0.50+1.50i

输入:
1 0 1

输出:
x1=0.00-1.00i;x2=0.00+1.00i

代码:

#include <stdio.h>
#include <math.h>
int main()
{
	double a = 0.0;
	double b = 0.0;
	double c = 0.0;
	while (~scanf("%lf%lf%lf", &a, &b, &c))
	{
		if (a == 0)
		{
			printf("Not quadratic equation\n");
		}

		else
		{
			double disc = b * b - 4*a*c;
			if (disc > 0.0)
			{
				//两个不等实根
				printf("x1=%.2lf;x2=%.2lf\n", (-b - sqrt(disc)) / (2 * a), (-b + sqrt(disc)) / (2 * a));
			}

			else if (disc < 0.0)
			{
				//有两个虚根
				double real = (-b) / (2 * a);
				double virtual = sqrt(-disc) / (2 * a);
				printf("x1=%.2lf-%.2lfi;x2=%.2lf+%.2lfi\n", real, virtual, real, virtual);
			}

			else
			{
				//两个实根相等
				printf("x1=x2=%.2lf\n", (-b) / (2 * a));
			}
		}
	}

	return 0;
}

结果:

扩展:

  • 多组输入
  • 注意根据条件进行代码书写
  • 小数点如何进行位数的限制


💛BC54、获取月份天数

描述:

KiKi想获得某年某月有多少天,请帮他编程实现。输入年份和月份,计算这一年这个月有多少天

输入描述:

多组输入,一行有两个整数,分别表示年份和月份,用空格分隔

输出描述:

针对每组输入,输出为一行,一个整数,表示这一年这个月有多少天

示例:

输入:
2008 2

输出:
29

代码:

#include <stdio.h>
int main()
{
	int year = 0;
	int month = 0;
	int days[] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
	while (~scanf("%d%d", &year, &month))
	{
		int day = days[month - 1];
		//判断是否闰年
		if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
		{
			if (month == 2)
			{
				day += 1;
			}
		}
		printf("%d\n", day);
	}

	return 0;
}

结果:

扩展:

  • 多组输入
  • 如何判断闰年
  • 利用数组把12个月份的天数进行存放


💙BC55、简单计算器

描述:

KiKi实现一个简单计算器,实现两个数的“加减乘除”运算,用户从键盘输入算式“操作数1运算符操作数2”,计算并输出表达式的值,如果输入的运算符号不包括在(+-*/)范围内,输出“Invalid operation!”。当运算符为除法运算,即“/”时。如果操作数2等于0.0,则输出“Wrong!Division by zero!

输入描述:

多组输入,一行,操作数1运算符操作数2(其中运算符号包括四种:+-*/

输出描述:

针对每组输入,输出为一行。

如果操作数和运算符号均合法,则输出一个表达式,操作数1运算符操作数2=运算结果,各数小数点后均保留4位,数和符号之间没有空格。

如果输入的运算符号不包括在(+-*/)范围内,输出“Invalid operation!”。当运算符为除法运算,即“/”时。

如果操作数2等于0.0,则输出“Wrong!Division by zero!

示例:

输入:
1.0+3.0 
1.0;4.0
44.0/0.0

输出:
1.0000+3.0000=4.0000
Invalid operation!
Wrong!Division by zero!

代码:

#include <stdio.h>
int main()
{
	double n1 = 0.0;
	double n2 = 0.0;
	char op = 0;
	while (~scanf("%lf%c%lf", &n1, &op, &n2))
	{
		switch (op)
		{
		case '+':
			printf("%.4lf+%.4lf=%.4lf\n", n1, n2, n1 + n2);
			break;

		case '-':
			printf("%.4lf-%.4lf=%.4lf\n", n1, n2, n1 - n2);
			break;

		case '*':
			printf("%.4lf*%.4lf=%.4lf\n", n1, n2, n1 * n2);
			break;

		case '/':
			if (n2 == 0.0)
			{
				printf("Wrong!Division by zero!\n");
			}
			else
			{
				printf("%.4lf/%.4lf=%.4lf\n", n1, n2, n1 / n2);
			}
			break;

		default:
			printf("Invalid operation!");
				break;
		}
	}

	return 0;
}

结果:

扩展:

  • 多组输入
  • switch语句的应用
  • 按照题目要求进行编写代码


💜BC56、线段图案

描述:

KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的线段图案

输入描述:

多组输入,一个整数(1~100),表示线段长度,即“*”的数量

输出描述:

针对每行输入,输出占一行,用“*”组成的对应长度的线段

示例:

输入:
10
2

输出:
**********
**

代码:

#include <stdio.h>
int main()
{
	int a = 0;
	while (~scanf("%d", &a))
	{
		int i = 0;
		for (i = 0; i < a; i++)
		{
			printf("*");
		}
		printf("\n");//这里要额外加换行
	}

	return 0;
}

结果:

扩展:

  • 每次打印一个*,按照输入的个数打印后换行


🤎BC57、正方形图案

描述:

KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的正方形图案

输入描述:

多组输入,一个整数(1~20),表示正方形的长度,也表示输出行数

输出描述:

针对每行输入,输出用“*”组成的对应边长的正方形,每个“*”后面有一个空格

示例:

输入:
4

输出:
* * * *
* * * *
* * * *
* * * *
    
输入:
5

输出:
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *

代码:

#include <stdio.h>
int main()
{
	int a = 0;
	while (~scanf("%d", &a))
	{
		int i = 0;
		for (i = 0; i < a; i++)
		{
			int j = 0;
			for (j = 0; j < a; j++)
			{
				printf("* ");
			}
			printf("\n");
		}
	}

	return 0;
}

结果:


🖤BC58、直角三角形图案

描述:

KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的直角三角形图案

输入描述:

多组输入,一个整数(2~20),表示直角三角形直角边的长度,即“*”的数量,也表示输出行数

输出描述:

针对每行输入,输出用“*”组成的对应长度的直角三角形,每个“*”后面有一个空格

示例:

输入:
4

输出:
*
* *
* * *
* * * *
    
输入:
5

输出:
*
* *
* * *
* * * *
* * * * *

代码:

#include <stdio.h>
int main()
{
	int a = 0;
	while (~scanf("%d", &a))
	{
		int i = 0;
		for (i = 0; i < a; i++)
		{
			int j = 0;
			for (j = 0;j<i+1;j++)
			{
				printf("* ");
			}
			printf("\n");
		}
	}

	return 0;
}

结果:


💚BC59、翻转直角三角形图案

描述:

KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的翻转直角三角形图案

输入描述:

多组输入,一个整数(2~20),表示翻转直角三角形直角边的长度,即“*”的数量,也表示输出行数

输出描述:

针对每行输入,输出用“*”组成的对应长度的翻转直角三角形,每个“*”后面有一个空格

示例:

输入:
5

输出:
* * * * *
* * * *
* * *
* *
*
    
输入:
6

输出:
* * * * * *
* * * * *
* * * *
* * *
* *
*

代码:

#include <stdio.h>
int main()
{
	int a = 0;
	while (~scanf("%d", &a))
	{
		int i = 0;
		for (i = 0; i < a; i++)
		{
			int j = 0;
			for (j = 0; j < a - i; j++)
			{
				printf("* ");
			}
			printf("\n");
		}
	}

	return 0;
}

结果:

扩展:

  • 多组输入
  • 控制好每一行的输出


🧡BC60、带空格的直角三角形

描述:

KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的带空格直角三角形图案

输入描述:

多组输入,一个整数(2~20),表示直角三角形直角边的长度,即“*”的数量,也表示输出行数

输出描述:

针对每行输入,输出用“*”组成的对应长度的直角三角形,每个“*”后面有一个空格

示例:

输入:
5

输出:
        * 
      * * 
    * * * 
  * * * * 
* * * * *
    
输入:
4

输出:
      * 
    * * 
  * * * 
* * * *

代码:

//方法一
#include <stdio.h>
int main()
{
	int a = 0;
	while (~scanf("%d", &a))
	{
		int i = 0;
		for (i = 0; i < a; i++)
		{
			int j = 0;
			int q = 0;
			for (j = 0;j<2*(a-1-i);j++)
			{
				printf(" ");
			}
			for (q = 0; q < i + 1; q++)
			{
				printf("* ");
			}
			printf("\n");
		}
	}

	return 0;
}

//方法二
#include <stdio.h>
int main()
{
	int a = 0;
	while (~scanf("%d", &a))
	{
		int i = 0;
		for (i = 0; i < a; i++)
		{
			int j = 0;
			for (j = 0; j < a; j++)
			{
				if (i + j < a - 1)
				{
					printf("  ");
				}
				else
				{
					printf("* ");
				}
			}
			printf("\n");
		}

结果:

扩展:


💛BC61、金字塔图案

描述:

KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的金字塔图案

输入描述:

多组输入,一个整数(2~20),表示金字塔边的长度,即“*”的数量,,也表示输出行数

输出描述:

针对每行输入,输出用“*”组成的金字塔,每个“*”后面有一个空格

示例:

输入:
4

输出:
   * 
  * * 
 * * * 
* * * * 
    
输入:
5

输出:
    * 
   * * 
  * * * 
 * * * * 
* * * * *

代码:

#include <stdio.h>
int main()
{
	int a = 0;
	while (scanf("%d", &a) != EOF)
	{
		int i = 0;
		for (i = 0; i < a; i++)
		{
			int j = 0;
			int q = 0;
			for (j = 0; j < a - 1 - i; j++)
			{
				printf(" ");
			}
			for (q = 0; q < i + 1; q++)
			{
				printf("*");
				printf(" ");
			}
			printf("\n");
		}
	}

	return 0;
}

结果:

离开前,别忘了👍关注💡收藏💖
希望本文能够对大家有帮助~!


🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀 往期刷题文章分享🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀

【C语言】带你用最短的时间刷题(附解题思路、具体代码)不断更新(一)

【C语言】带你用最短的时间刷题(附解题思路、具体代码)不断更新(二)

【C语言】带你用最短的时间刷题(附解题思路、具体代码)不断更新(三)

【C语言】带你用最短的时间刷题(附解题思路、具体代码)不断更新(四)

【C语言】带你用最短的时间刷题(附解题思路、具体代码)不断更新(五)

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值