2015-06-28 14:50:12 OJ期末模考C

博客围绕计算机中颜色表示展开,介绍用三基色(R、G、B)混合表示颜色,每种分量取值0 - 255,可用整型数表示颜色值。给出颜色类Color代码,指出begin到end部分有两处语法错误,需找出并修改,还给出输入输出示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Problem C: E1 一种颜色,三个分量

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 287  Solved: 213
[Submit][Status][Web Board]

Description

在计算机中,常用三种基色红(R)、绿(G)、蓝(B)的混合来表示颜色,这三种基色也称为颜色的三个分量。在实现中每种分量的取值范围为0-255,用一个字节表示。这样,一种颜色需要用三个字节存储。

一种颜色,也可以用一个整型数(称为颜色值)来表示,颜色值与三基色有对应关系,即:颜色值 = R × 0x10000 + G × 0x100 + B

现定义了一个颜色类Color,指定三种基色的值,可以将其转换为一个整型值输出。在指定三基色时,若省略其值,默认为该分量值为0

下面是定义好的类及测试函数。很遗憾,beginend部分存在两处语法错误,请你找出并修改过来,提交beginend部分的代码。

//************* begin *****************

#include <iostream>

using namespace std;

class Color

{

public:

    Color(int r=0,int g=0,int b=0);  //构造函数

    int getValue( );                 //求得颜色值

private:

    unsigned char red;   //用无符号char,表示数的范围是0-255,三基色占用3字节

    unsigned char green;

    unsigned char blue;

};  

Color::Color(int r=0,int g=0,int b=0): red(r),green(g),blue(b) { }  //(1)

int getValue( )  //(2)

{

    return(red*0x10000+green*0x100+blue);

}

//************* end *****************

int main( )

{

    int r, g, b;

    cin>>r;

    Color c1(r);

    cout<<c1.getValue()<<endl;

    cin>>r>>g;

    Color c2(r,g);

    cout<<c2.getValue()<<endl;

    cin>>r>>g>>b;

    Color c3(r);

    cout<<c3.getValue()<<endl;

    return 0;

}

Input

共输入3行,分别代表初始化3个颜色对象的分量值

1行,只输入c1对象的R分量值,GB分量用默认值

2行,只输入c2对象的RG分量值,B分量用默认值

3行,只输入c3对象的RGB三个分量的值

Output

3行,分别代表3种颜色的颜色值

Sample Input

84

128 58

32 225 48

Sample Output

5505024

8403456

2097152

 

 

Submit:

//************* begin *****************
#include <iostream>
using namespace std;
class Color
{
public:
    Color(int r=0,int g=0,int b=0);  //构造函数
    int getValue( );                 //求得颜色值
private:
    unsigned char red;   //用无符号char,表示数的范围是0-255,三基色占用3字节
    unsigned char green;
    unsigned char blue;
};
Color::Color(int r,int g,int b): red(r),green(g),blue(b) { }  //(1)
int Color::getValue( )  //(2)
{
    return(red*0x10000+green*0x100+blue);
}
//************* end *****************
int main( )
{
    int r, g, b;
    cin>>r;
    Color c1(r);
    cout<<c1.getValue()<<endl;
    cin>>r>>g;
    Color c2(r,g);
    cout<<c2.getValue()<<endl;
    cin>>r>>g>>b;
    Color c3(r);
    cout<<c3.getValue()<<endl;
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值