判断三角形类型,百分制换五分制,对输入非法字符的检查与处理

该文包含三个C语言程序示例,分别用于判断三角形类型(等边、等腰、直角、普通三角形或非三角形),将百分制成绩转换为五分制,以及检查并处理输入数据的错误。程序考虑了边界条件和输入有效性,如输入数值超出范围或格式不正确的情况。
摘要由CSDN通过智能技术生成

一、判断三角形的类型:
要求:输入三角形a、b、c三个数值,判断三角形的类型。
在这里插入图片描述

#include <stdio.h> 
#include <math.h>
#define EPS 1e-1 

int main()
{
	float a,b,c;
	while(1)
	{
		printf("Input a,b,c:");
		scanf("%f,%f,%f",&a,&b,&c);
		if(a+b>c&&a+c>a&b+c>a)
		{
			if(a==b&&b==c&&a==c)
			{
				printf("等边三角形\n");
			}
			else	if(fabs(a-b)<=EPS||fabs(b-c)<=EPS||fabs(c-a)<=EPS)
			{
				if(fabs(a*a+b*b-c*c)<=EPS||fabs(a*a+c*c-b*b)<=EPS||fabs(c*c+b*b-a*a)<=EPS)
				printf("等腰直角三角形\n");
				else	printf("等腰三角形\n");
			}
			else	if(fabs(a*a+b*b-c*c)<=EPS||fabs(a*a+c*c-b*b)<=EPS||fabs(c*c+b*b-a*a)<=EPS)
			{
				printf("直角三角形\n"); 
			}
			else	
			{
				printf("普通三角形\n");
			}
		}
		else if(a+b<=c||a+c<=b||c+b<=a)
		{
			printf("不是三角形\n");
		}
	}
}

二、百分制换五分制:

#include <stdio.h>

int main()
{
	int score,mark;
	printf("Please enter score:");
	scanf("%d",&score);
	mark=score/10;
	switch(mark)
	{
		case 10:
		case 9:	
			printf("%d--A\n",score);
			break;
		case 8:
			printf("%d--B\n",score);
			break;
		case 7:
			printf("%d--C\n",score);
			break;
		case 6:
			printf("%d--D\n",score);
			break;
		case 5:
		case 4:
		case 3:
		case 2:
		case 1:
		case 0:
			printf("%d--E\n",score);
			break;
		default:printf("Input error!\n");
	}
	return 0;
}

上述程序存在一定问题,例如当输入101-109是整数除法结果都是10;
当输入小于0时结果都是0。因此,就需要在原有的基础上进行改进。

#include <stdio.h>

int main()
{
	int score,mark;
	printf("Please enter score:");
	scanf("%d",&score);
	mark=score<0||score>100? -1:score/10;
//	mark=score/10;
	switch(mark)
	{
		case 10:
		case 9:	
			printf("%d--A\n",score);
			break;
		case 8:
			printf("%d--B\n",score);
			break;
		case 7:
			printf("%d--C\n",score);
			break;
		case 6:
			printf("%d--D\n",score);
			break;
		case 5:
		case 4:
		case 3:
		case 2:
		case 1:
		case 0:
			printf("%d--E\n",score);
			break;
		default:printf("Input error!\n");
	}
	return 0;
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
三、对输入非法字符的检查与处理
scanf()也是存在返回值的。所以,我们可以利用返回值来判断输入数据个数或者格式是否有错。
在这里插入图片描述
输入时要注意存储器存储数据的范围,超出范围,则会导致程序运行出错,显示异常。



#include <stdio.h>

int main()
{
	int a,b,max,ret;
	while(1)
	{
		 
		printf("Input a,b:");
		ret=scanf("%d,%d",&a,&b);
		if(ret!=2)
		{
			printf("Input data quantity or format error\n");
			fflush(stdin);
		}
		else
		{
			max=a>b?a:b;
			printf("max=%d\n",max);
		}
	//	return 0;
 	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值