1、 三角形可分为一般三角形、直角三角形、等腰三角形或等边三角形。
设计一个程序,推断三角形的类别并及时面积。输入三角形的三条边的边长,如果三条边能构成三角形,则输出三角形的面积及种类。
测试用例:
输入: 1.1,2.2,3.3 输出:不是三角形
输入: 3,4,5 输出: 直角三角形,面积为6.00
输入: 2,2,2 输出:等边三角形,面积为1.73
输入: 3,2,3 输出: 等腰三角形,面积为2.82
输入: 1.414,2,1.414 输出:等腰直角三角形,面积为1.00
输入: 2, 3, 4 输出: 一般三角形,面积为***
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
int main()
{
double a,b,c;//三角形三边长度
printf("请输入三角形三边长度:\n");
scanf("%lf %lf %lf",&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));
//判断三角形类型
if(a==b && a==c){
printf("等边三角形 ");
}else if((a==b)||(a==c)||(b==c)){
printf("等腰三角形 ");
if((a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a)){
printf("等腰直角三角形 ");
}
}else if((a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a)){
printf("直角三角形 ");
}else{
printf("普通三角形 ");
}
printf("面积为:%lf",S);
}
else{
printf("不是三角形");
}
*/
if((a+b-c)<1e-6 || (a+c-b)<1e-6 || (b+c-a)<1e-6){
printf("不是三角形");
}else{
//计算面积
double p = (a+b+c)/2.0;
double S = sqrt(p*(p-a)*(p-b)*(p-c));
//判断三角形类型
if(a==b && a==c){
printf("等边三角形 ");
}else if((a==b)||(a==c)||(b==c)){
if((a*a+b*b-c*c)<1e-6||(a*a+c*c-b*b)<1e-6||(b*b+c*c-a*a)<1e-6){
printf("等腰直角三角形 ");
}else{
printf("等腰三角形 ");
}
}else if((a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a)){
printf("直角三角形 ");
}else{
printf("普通三角形 ");
}
printf("面积为:%lf",S);
}
return 0;
}
2、 字符型数据可以简单分为数字、大写字母、小写字母及其他字符四类。
(1) 从键盘输入1个字符,输出它的类型。
(2) 从键盘输入5个字符,输出不同类型字符的个数。
(3) 从键盘输入若干个字符(以回车结束),输出不同类型字符的个数。
#include <stdio.h>
#include <stdlib.h>
//(1) 从键盘输入1个字符,输出它的类型。
void f1(){
printf("请输入一个字符:");
char ch;
scanf("%c",&ch);
if(ch>='a' && ch<='z'){
printf("该字符是小写字符\n");
}else if(ch>='A' && ch<='Z'){
printf("该字符是大写字符\n");
}else if(ch>='0' && ch<='9'){
printf("该字符是数字\n");
}else{
printf("该字符是其他数字\n");
}
}
//(2)从键盘输入5个字符,输出不同类型字符的个数。
void f2(){
printf("请输入5个字符:(超过5个后的字符不记录在内)");
char ch;
int b[4]={0,0,0,0};//记录分类的数组,其中b[0]表示小写字母的个数,b[1]大写字母的个数,b[2]数字的个数,b[3]其他
int i=0;
while(i<5){
ch = getchar();
if(ch>='a' && ch<='z'){
b[0]++;
}else if(ch>='A' && ch<='Z'){
b[1]++;
}else if(ch>='0' && ch<='9'){
b[2]++;
}else{
b[3]++;
}
i++;
}
printf("小写字母共%d个,大写字母共%d个,数字共%d个,其他共%d个",b[0],b[1],b[2],b[3]);
}
//(3) 从键盘输入若干个字符(以回车结束),输出不同类型字符的个数。
void f3(){
printf("请输入若干个字符(以回车结束):");
char ch;
int b[4]={0,0,0,0};//记录分类的数组,其中b[0]表示小写字母的个数,b[1]大写字母的个数,b[2]数字的个数,b[3]其他
ch = getchar();
while(ch != '\n'){
if(ch>='a' && ch<='z'){
b[0]++;
}else if(ch>='A' && ch<='Z'){
b[1]++;
}else if(ch>='0' && ch<='9'){
b[2]++;
}else{
b[3]++;
}
ch = getchar();
}
printf("小写字母共%d个,大写字母共%d个,数字共%d个,其他共%d个",b[0],b[1],b[2],b[3]);
}
int main()
{
printf("请选择操作\n(1)从键盘输入1个字符,输出它的类型。\n(2)从键盘输入5个字符,输出不同类型字符的个数。\n(3) 从键盘输入若干个字符(以回车结束),输出不同类型字符的个数。\n");
printf("按下对应的数字,回车进入操作!\n");
int flag;
scanf("%d",&flag);
//用来接收多余产生的回车
char c;
c = getchar();
if(flag == 1){
f1();
}else if(flag ==2){
f2();
}else if(flag ==3){
f3();
}
return 0;
}