首页 > 试题广场 >

KiKi设计类继承

[编程题]KiKi设计类继承
  • 热度指数:21424 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
KiKi理解了继承可以让代码重用,他现在定义一个基类shape,私有数据为坐标点x,y,  由它派生Rectangle类和Circle类,它们都有成员函数GetArea()求面积。派生类Rectangle类有数据:矩形的长和宽;派生类Circle类有数据:圆的半径。Rectangle类又派生正方形Square类,定义各类并测试。输入三组数据,分别是矩形的长和宽、圆的半径、正方形的边长,输出三组数据,分别是矩形、圆、正方形的面积。圆周率按3.14计算。

输入描述:
输入三行,
第一行为矩形的长和宽,
第二行为圆的半径,
第三行为正方形的边长。


输出描述:
三行,分别是矩形、圆、正方形的面积。
示例1

输入

7 8
10
5

输出

56
314
25
#include<stdio.h>
struct Circle
{
  int radicus;
};
struct Square
{
   int side_length;
};
struct Recatangle
{
  int length;
  int width;
  struct Square SL; //结构体内衍生新的结构体
};
void GetArea(struct Recatangle * r,struct Circle* x)//解引用输出
{
    printf("%d\n",r->length*r->width);
    printf("%g\n",3.14*x->radicus*x->radicus);
    printf("%d\n",r->SL.side_length*r->SL.side_length);
}
int main()
{
    struct Recatangle r={0};
    struct Circle x={0};
    //struct Square y={0};
    scanf("%d %d\n%d\n%d",&r.length,&r.width,&x.radicus,&r.SL.side_length);
    GetArea(&r,&x);//指针传参
    return 0;
}

发表于 2025-01-10 16:11:42 回复(0)
#include<stdio.h>
struct Area
{
    float Rectangle_lenth;
    float Rectangle_width;
    float Circle_r;
    float Square_width;
};
float getRectangleArea(float x,float y)
{
    return x*y;
}
float getCircleArea(float r)
{
    return 3.14*r*r;
}
float getSquareArea(float x)
{
    return x*x;
}
int main()
{
    struct Area a;
    scanf("%f %f",&a.Rectangle_lenth,&a.Rectangle_width);
    scanf("%f",&a.Circle_r);
    scanf("%f",&a.Square_width);
    float RectangleArea=getRectangleArea(a.Rectangle_lenth,a.Rectangle_width);
    float CircleArea=getCircleArea(a.Circle_r);
    float SquareArea=getSquareArea(a.Square_width);
    printf("%g\n",RectangleArea);
    printf("%g\n",CircleArea);
    printf("%g\n",SquareArea);
    return 0;
}
发表于 2024-07-31 17:46:08 回复(0)
#include <stdio.h>

struct
{
    int length;
    int broad;
}oblong;

struct
{
    int r;
}cir; 

struct
{
    int length;
}rec;

int main() 
{
    const float pi = 3.14;

    scanf("%d%d", &oblong.broad, &oblong.length);
    scanf("%d", &cir.r);
    scanf("%d", &rec.length);

    printf("%d\n", oblong.length * oblong.broad);
    printf("%g\n", cir.r * cir.r * pi);
    printf("%d\n", rec.length * rec.length);
    
    return 0;
}

编辑于 2024-03-20 14:26:53 回复(0)
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
    int a = 0;
    int b = 0;
    int r = 0;
    int c = 0;
    scanf("%d%d%d%d", &a, &b, &r, &c);
    printf("%d\n", a * b);
    printf("%g\n", 3.14 * r * r);
    printf("%d\n", c * c);
    return 0;
}
发表于 2023-12-29 19:47:38 回复(1)
#include <stdio.h>

int main() 
{
    int a,b;
    scanf("%d %d",&a,&b);
    int  c;
    scanf("%d",&c);
    int d;
    scanf("%d",&d);
    printf("%d\n",a*b);
    printf("%g\n",3.14*(c*c));
    printf("%d\n",d*d);
    return 0;
}

发表于 2023-12-06 11:29:44 回复(0)
#include <stdio.h>

float GetArea(int shape, int x, int y, int r) {
    float m = 0;
    switch (shape )   {
        case 1:
            m = x * y;
            break;
        case 2:
            m = 3.14 * r * r;
            break;
        case 3:
            m = x * x;
            break;
        default:
            break;
    }
    return m;
}

int main() {
    int x = 0, y = 0, r = 0;
    scanf("%d%d", &x, &y);
    int re = (int)GetArea(1, x, y, r);
    scanf("%d", &r);
    float c = GetArea(2, x, y, r);
    scanf("%d", &x);
    int s = (int)GetArea(3, x, y, r);
    
    printf("%d\n", re);

    int cc = (int)c;
    if (cc == c)  printf("%d\n", cc);
    else printf("%g\n", c);

    printf("%d\n", s);
    return 0;
}

发表于 2023-11-20 03:56:24 回复(0)
对于浮点数的打印, %g可以根据数据内容自动选择最合适的显示
printf("%g\n", result);


发表于 2023-09-21 15:28:24 回复(0)
整形时:
浮点型时:
发表于 2022-08-02 13:47:53 回复(0)
#include<stdio.h>
int Rectangle(int x,int y)
{
    return x*y;
}
float Circle(int r)
{
    return r*r*3.14;
}
int Square(int b)
{
    return b*b;
}
int main()
{
    int c,k;
    int r;
    int b;
    scanf("%d %d %d %d",&c,&k,&r,&b);
    float ret = Circle(r);
    printf("%d\n",Rectangle(c,k));
    if(ret-(float)(int)ret){
        if((int)(ret*100)%10)
    printf("%.2f\n",ret);
        else
            printf("%.1f\n",ret);
        }
    else
        printf("%d\n",(int)ret);
    printf("%d",Square(b));
}
发表于 2021-11-08 20:46:11 回复(0)
#include<stdio.h>
int main()
{
    int a=0;
    int b=0;
    int r=0;
    int s=0;
    double c=0;
    scanf("%d%d",&a,&b);
    scanf("%d",&r);
    scanf("%d",&s);
    printf("%d\n",a*b);
    c=3.14*r*r;
    if(c-(double)(int)c)
    {
        if((int)(c*100)%10)
        {
        printf("%.2lf\n",c);
        }
        else
        {
            printf("%.1lf\n",c);
        }
    }
    else
    {
        printf("%d\n",(int)c);
    }
    printf("%d\n",s*s);
    return 0;
}
发表于 2021-08-02 11:46:06 回复(0)