为什么 ascii 值的正确总和没有存储在“c”中?

问题描述 投票:0回答:0

问题:

给你一个由小写字母组成的字符串 S ,现在计算这个字符串的成本并告诉它成本是否为 字符串是否为 2 的幂。 在这个问题中,成本是指给定字符串的字母顺序的总和。字母顺序表示 a = 1 , b = 2 , c = 3 ....... z = 26 并且,2 的幂是 2^n(2 的 n 次方)形式的数字,其中 n 是整数。 现在,如果成本是两个的幂,则打印 YES 和成本(以这种格式 2^n),否则打印 NO。 使用函数实现它。 示例输入 1: 示例输出 1: 编号 示例输入 2: 示例输出 2: 英国广播公司 是的 成本 = 2^3

#include<stdio.h>
#include<string.h>
int check(int c);
int cost(char str[]);
int main()
{
    char str[100];
    fgets(str,sizeof(str),stdin);
    int c=cost(str);
    check(c);
    return 0;
}
//function to find the cost
int cost(char str[])
{
    int c=0,d;
    for (int i = 0; str[i]!='\0'; i++)
    {
        d=str[i];
        c=(d-96)+c;
    }
    return c;
}
//function to check whether it's 2^n?
int check(int c)
{
    int n=0;
    while (c!=1)
    {
        if (c%2==0)
        {
            n++;
            c=c/2;
        }
        else
        {
            printf("No\n");
            return 0;
        }
        
        
    }
    printf("Yes....2^%d\n",n);
}
c string function ascii
© www.soinside.com 2019 - 2024. All rights reserved.