C习题集44-52

目录

44.计算单位阶跃函数

45.三角形判断

46.衡量人体胖瘦程度

47.计算一元二次方程

48.获取月份天数

49.简单计算器

50.线段图案

51.正方形图案

52.直角三角形图案


44.计算单位阶跃函数

题目描述:

KiKi最近学习了信号与系统课程,这门课里有一个非常有趣的函数,单位阶跃函数,其中一种定义方式为:

 现在试求单位冲激函数在时域t上的值。

输入描述:

题目有多组输入数据,每一行输入一个t(-1000<t<1000)表示函数的时域t。

输入示例:
        11
        0
        -11

输出描述:

输出函数的值并换行。

输出示例:
        1
        0.5
        0

解析:

        本题只需要注意多组输入就行啦。

代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int t = 0;
	while (~scanf("%d", &t))
	{
		if (t > 0)
		{
			pritnf("%d\n",1);
		}
		else if (t == 0)
		{
			printf("%.1lf", 0.5);
		}
		else
		{
			printf("%d\n", 0);
		}
	}
	return 0;
}

45.三角形判断

题目描述:

        KiKi想知道已经给出的三条边a,b,c能否构成三角形,如果能构成三角形,判断三角形的类型(等边三角形、等腰三角形或普通三角形)。

输入描述:

题目有多组输入数据,每一行输入三个a,b,c(0<a,b,c<1000),
作为三角形的三个边,用空格分隔。

输入示例:
        2 3 2
        3 3 3

输出描述:

针对每组输入数据,输出占一行,如果能构成三角形,
等边三角形则输出“Equilateral triangle!”,
等腰三角形则输出“Isosceles triangle!”,
其余的三角形则输出“Ordinary triangle!”,
反之输出“Not a triangle!”。

输出示例:
        Isosceles triangle!
        Equilateral triangle!

解析:

        这个题目我们只需要清楚三角形的判断规则就行,然后在于一一穷尽就行。

代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	while(~scanf("%d %d %d", &a, &b, &c))
	{
		//判断是否为三角形
		if ((a + b > c) && (a + c > b) && (b + c > a))
		{
			//是三角形

			//等边三角形
			if (a == b && b == c)
				printf("Equilateral triangle!");
			else if ((a == b && a != c) || (a == c && c != b) || (c = b && b != a))
				printf("Isosceles triangle!");
			else
				printf("Ordinary triangle!");
		}
		else
			printf("Not a triangle!");
	}
	return 0;
}

46.衡量人体胖瘦程度

题目描述:

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

输入描述:

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

输入示例:
        80 170
        60 170
        90 160
        50 185

输出描述:

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

输出示例:
        Overweight
        Normal
        Obese
        Underweight

解析:

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

代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	double weight = 0.0;
	double high = 0.0;
	double bmi = 0.0;
	while (~scanf("%lf %lf", &weight, &high))
	{
		bmi = weight / ((high / 100.0) * (high / 100.0));
		if (bmi < 18.5)
			printf("Underweight");
		else if (bmi >= 18.5 && bmi <= 23.9)
			printf("Normal");
		else if (bmi > 23.9 && bmi <= 27.9)
			printf("Overweight");
		else
			printf("Obese");
	}
	return 0;
}

47.计算一元二次方程

题目描述:

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

输入描述:

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

输入示例:2.0 7.0 1.0

输出描述:

针对每组输入,输出一行,输出一元二次方程ax2 + 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位,数字、符号之间没有空格。

输出示例:x1=-3.35;x2=-0.15

解析:

        1.多组输入

        2.根据不同的限制条件给出相应的计算结果

        3.小数点后面有位数限制

代码:

#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;
	while ((scanf("%lf %lf %lf", &a, &b, &c)) != EOF)
	{
		if (a == 0.0)
		{
			printf("Not quadratic equation");
		}
		else
		{
			double disc = b * b - 4 * a * c;
			if (disc == 0.0)
			{
				//有两个相等的实根
				printf("x1=x2=%.2lf", -b / (2 * a));
			}
			else if (disc > 0.0)
			{
				//有两个不相等的实根
				printf("x1=%.2lf;x2=%.2lf", (-disc - b) / (2 * a), (disc - b) / (2 * a));
			}
			else
			{	
				//有两个不相等的虚数根
				double real = -b / (2 * a);
				double image = sqrt(-disc) / (2 * a);
				printf("x1=%.2lf-%.2lfi;x2=%.2lf+%.2lfi", real, image, real, image);
			}
		}
	}
	return 0;
}

48.获取月份天数

题目描述:

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

输入描述:

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

输入示例:2023 4

输出描述:

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

输出示例:

解析:

        闰年的判断:

                1.能被4整除,不能被100整除

                2.能被400整除

代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int year = 0;
	int month = 0;
	int days[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
	while ((scanf("%d %d", &year, &month))!=EOF)
	{
		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;
}

49.简单计算器

题目描述:

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

输入描述:

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

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

输出描述:

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

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

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

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

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

解析:

        本题不要忘记case语句后面还有break语句。

代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	double num1 = 0.0;
	double num2 = 0.0;
	char op = 0;
	while (~scanf("%lf %c %lf", &num1, &op, &num2))
	{
		switch (op)
		{
		case '+':
			printf("%.4lf+%.4lf=%.4lf", num1, num2, num1 + num2);
			break;
		case '-':
			printf("%.4lf-%.4lf=%.4lf", num1, num2, num1 - num2);
			break;
		case '*':
			printf("%.4lf*%.4lf=%.4lf", num1, num2, num1 * num2);
			break;
		case '/':
			if (num2 == 0)
				printf("Wrong!Division by zero!");
			else
				printf("%.4lf/%.4lf=%.4lf", num1, num2, num1 / num2);
			break;
		default:
			printf("Invalid operation!");
			break;
		}
	}
	return 0;
}

50.线段图案

题目描述:

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

输入描述:

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

输入示例:
        10
        2

输出描述:

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

输出示例:
        **********
        **

解析:

        1.多组输入

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

代码:

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

51.正方形图案

题目描述:

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

输入描述:

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

输入示例:
        4

输出描述:

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

输出示例:
        * * * *
        * * * *
        * * * *
        * * * *

解析:

        1.多组输入

        2.每组都是由n+空格组成

代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int n = 0;
	while ((scanf("%d", &n)) != EOF)
	{
        int i = 0;
		for (i = 0; i < n; i++)
		{
            //打印一行的内容
			int j = 0;
			for (j = 0; j < n; j++)
			{
				printf("* ");
			}
			printf("\n");
		}
	}
	return 0;
}

52.直角三角形图案

题目描述:

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

输入描述:

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

输入示例:
        4

输出描述:

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

输出示例:
        *
        * *
        * * *
        * * * *

解析:

        1.多组输出

        2.每一行的输出与i的值相关,只要掌握其规则就非常轻松。

代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int n = 0;
	while ((scanf("%d", &n)) != EOF)
	{
		int i = 0;
		for (i = 0; i < n; i++)
		{
			//打印一行的内容
			int j = 0;
			for (j = 0; j <= i; j++)
			{
				printf("* ");
			}
			printf("\n");
		}
	}
	return 0;
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值