《C程序设计快速进阶大学教程》第七章测试

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;
}

猜你喜欢

转载自blog.csdn.net/lanzijingshizi/article/details/83350892
今日推荐