期末-搞点颜色

烟大计科期末 问题 A: 期末-搞点颜色
题目描述
在计算机中,颜色经常用数字量来表示。计算机中表示颜色有两种方式,一是使用RGB三原色值(0255,0255,0~255),二是使用三原色的十六进制。 例如#FFFFFF和RGB(255,255,255),他们表示的颜色是相同的。

输入
十六进制表示的颜色值 ,且字母都为大写

输出
RGB三原色,使用逗号(英文)分隔

样例输入
copy
#370B16

样例输出
55,11,22

提示
在16进制中,A=10,B=11,…,F=15
样例解释:55=316+7,11=016+B,22=1*16+6

//先把一个两位的十六进制数转化成十进制的数  
#include<stdio.h>
#include<string.h> 
int zh(char str[]) 
{
	int t,a=0,i;
 	for(i=0;i<2;i++) 
	{ 
		if(str[i]<='9')
		t=str[i]-'0'; 
		else {t=str[i]-'A'+10;}
		a=a*16+t; 
	}
	return a; 
} 

//通过strncpy函数的复制功能,分别提取出来这三个 两位的十六进制数 ,并且把他们转化成十进制
int main()
{ 
	char str[50];
	scanf("%s",&str);  // 输入的颜色 
	char str1[50],str2[50],str3[50];
	int s1,s2,s3;//储存结果 
	strncpy(str1,str+1,2);//从str的第二位开始复制两位 
	strncpy(str2,str+3,2);
	strncpy(str3,str+5,2);
	s1=zh(str1);s2=zh(str2);s3=zh(str3);//调用函数算出来 
	printf("%d,%d,%d",s1,s2,s3);
	return 0;
}


//呜呜呜呜我自己搞了一堆这么麻烦结果看了一眼别人的竟然用个%x%d转化一下就可以,摘录如下
#include<stdio.h>
int main()
{
	int a,b,c;
	scanf("#%2x%2x%2x",&a,&b,&c);
	printf("%d,%d,%d",a,b,c);
	return 0;
}

输出的亚子:在这里插入图片描述
此题收获:
1.C语言的单引号实际上时将 ’ ’ 内的字符转化为ASCII码对应的整型值,并且在存储时占据一个字节
如:‘b’-'a’输出的结果就是1 (也因为这个点搞清了上面十六进制转化为十进制)

2.strncpy函数
用法:strncpy(str1,str2,3); //表示把str2字符串的前三位复制到str1里面去
🔺如果想str2的第几位开始复制,在“str2”后面加上数字即可,例:strncpy(str1,str2+1,3):从str2的第二位

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值