珠宝店

1.题目

题目链接

题号:NC14347
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

题目描述

小Z向女神告白成功,成功脱单,为了庆祝,小Z决定送女神一个礼物。
在珠宝店,小Z终于发现一种既便宜又大气的手链。
手链的价格是看手链上的宝石决定的,每一种宝石的价值不一样。
具体规则如下:
宝石A的价值是1、宝石B的价值是2、宝石C的价值是3·····宝石Z的价值是26。
为了防止被销售员虚报价格,小Z决定请你帮忙计算一下手链的价值。

输入描述:


本题有T组数据。
对于每组数据只有一行。
1≤T≤20 1≤手链长度≤100000


输出描述:


输出结果,并换行.


示例1
输入
2
ABCD
LOVELOVE

输出
10
108

2.分析

将字符串读入,依次分析即可。

3.代码

scanf %s 和 gets()混和使用

注意用getchar()消去’\n’的干扰!!

千万不要用scanf(“%s\n”,str)这种写法!!!

#include <stdio.h>
int main()
{
int i,T;
int Value[25]={0}; //珠宝价值初始化为0
scanf("%d",&T);
getchar(); //注意吞掉\n 防止影响下一步输入字符串
for(i=0;i<T;i++) //T组测试
{
char Jewel[100005];
gets(Jewel);
int j=0;
while(Jewel[j]!='\0')
{
Value[i]+=(Jewel[j]-'A'+1);
j++;
}
}
for(i=0;i<T;i++)
printf("%d\n",Value[i]);

return 0;
}

珠宝店 (字符串)_学习

纯用scanf %s 也可

珠宝店 (字符串)_c语言_02

使用二维数组(数组开大,所以内存会占用的比较大)

#include <stdio.h>
int main()
{
char Jewel[21][100001]={0}; //初始化
int Sum[21]={0};

int T;
int i;
scanf("%d",&T); //组数
for(i=0;i<T;i++)
{
scanf("%s",Jewel[i]);
int j=0;
while(Jewel[i][j]!='\0')
{
Sum[i]+=(Jewel[i][j]-'A'+1);
j++;
}
}

for(i=0;i<T;i++)
{
if(i==T-1)
printf("%d",Sum[i]);
else
printf("%d\n",Sum[i]);
}
return 0;
}

珠宝店 (字符串)_刷题_03

巧妙输出(也能AC,但是个人感觉好像不太符合题目要求)

#include <stdio.h>
int main()
{
char Jewel[21][100001]={0}; //初始化
int Sum[21]={0};

int T;
int i;
scanf("%d",&T); //组数

while(T--)
{
scanf("%s",Jewel[i]);
int j=0;
while(Jewel[i][j]!='\0')
{
Sum[i]+=(Jewel[i][j]-'A'+1);
j++;
}
printf("%d\n",Sum[i]);
i++;
}

return 0;
}

珠宝店 (字符串)_初始化_04

4.总结

函数的使用和返回要弄清楚,错误的使用会带来未知的结果

5.更新日志

2022.4.2 整理

欢迎交流、讨论、指正~
不理解之处欢迎评论留言~