第十届蓝桥杯C/C++研究生组B题

本文介绍了一个有趣的问题,即如何将特定的字母串转换为相应的26进制数值。通过一个具体的例子,即“LANQIAO”对应的数字,文章详细解释了实现这一转换的过程,并提供了一段C语言代码作为解决方案。

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

字串数字

问题描述

小明用字母A对应数字1,B对应2,以此类推,用Z代表26.对应于27以上的数字,小明用两位或更长位的字符串来对应,例如AA对应27,AB对应28,AZ对应52,LQ对应329。
请问,LANQIAO对应的数字是多少?

思路

简单来看,就是将10进制变成26进制,仿写26进制来做出答案。但此题是个填空题,使用计算器暴力解决是简单的。

代码如下

#include <stdio.h>
#include <string.h>

int main(){
	
	char a[8] = "LANQIAO";
	double x=0;//26进制相对于10进制的结果
	for(int i=6;i>=0;i--)
	{
		
		double v = 1; //26进制进一等于26,v表示十进制进的结果
		int m = 6-i;
		for(int t = 0;t<m;t++)
			v =v*26;
		if(m==0){
			if((a[i]=='O'))
				x = x+ 15;
		}
		else{
			if(a[i]=='A'){
				x = x+ 1*v;
			}
			if(a[i]=='I')
				x =x+ 9*v;
			if(a[i]=='Q')
				x =x+ 17*v;
			if(a[i]=='N')
				x =x+ 14*v;
			if(a[i]=='L')
				x =x+ 12*v;	
		}
		printf("\n%c: x:%f  v:%f\n",a[i],x,v);
		
	}
	printf("\n%f",x);
}

结果图

在这里插入图片描述
注:答案只取整数部分

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值