珠宝店 (字符串)

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 也可

在这里插入图片描述

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

#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;
}

在这里插入图片描述

巧妙输出(也能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;
}

在这里插入图片描述

4.总结

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

5.更新日志

2022.4.2 整理

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值