Отображение начальных чисел на все буквы

[По этому Вопросу они просят присвоить цифры буквам][1]

Вопрос:

Предположим, что мы присвоили счет 1 символу A, 2 - B и 26 - Z, повторив то же правило. С оценками, указанными в этом правиле, сумма баллов для "Удачи" равна 47 (12 + 21 + 3 + 11), "Знания" - 96, "Трудолюбие" - 98, "Отношение" - 100. Выполните следующее Программа, которая вычисляет для произвольной строки.

#include <stdio.h>
int main() {
char str[1000];
int i, score = 0;
scanf("%s", str);
for (i = 0; ______; ___) 
{ 
int ch = str[i];
if (______________________) {
score += ____________;
}
else if (______________________) {
score += ____________;
}
}
printf("%d\n", score);
return 0;
}

Заранее спасибо.

3 ответа

Пожалуйста, проверьте эту таблицу. Значения ASCII для A-Z колеблется от 65-90 и для a-z колеблется от 97-122, Следовательно, чтобы преобразовать символ в число, вы можете использовать:

для ВЕРХНЕГО СЛУЧАЯ: ch - 64 или же ch - 'A' + 1
для нижнего регистра: ch - 96 или же ch - 'a' + 1

который будет отображать A в 1, B в 2... скоро
а также a в 1, b в 2... скоро

как показано в приведенной ниже программе:

#include<stdio.h>

int main(){
    char str[1000];
    int i, score = 0;


    printf("Please enter a string: ");
    scanf("%s", str);

    printf("You entered: %s\n", str);


    for( i=0; str[i] != '\0' ; i++ ) {

        int ch = str[i];
        int num;

        if (ch >= 'A' && ch <='Z'){
            num = ch -'A' + 1;
            // num = ch - 64;
        }

        else if (ch >= 'a' && ch <= 'z'){
            num = ch -'a' + 1;
            // num = ch - 96;
        }

        score += num;
    }

    printf("Score: %d\n", score);
}

Вы можете сделать это эффективно, используя только два условия:

if (string[i]>='a' && string[i]<='z') {
    Score += (int) string[i] - (int) 'a' + 1;
}

Изменить: int броски не нужны, но я положил их туда, чтобы вы могли сказать, что символы используются как целые

Для второго условия вы можете сделать то же самое в верхнем регистре. Это должно работать.

Основное понимание этого вопроса состоит в том, что символ на самом деле является 8-битным числом. Например, "a" равно 97 в десятичном формате, "z" равно 122, "A" равно 65 и "Z" равно 90:

https://en.wikipedia.org/wiki/ASCII

Все символы алфавита представлены последовательно. Поскольку символ на самом деле является числом, вы можете использовать его в арифметическом выражении, например так:

 int num = 'd' - 'a'; //num is now (100 - 97), which is 3.

Этого должно быть достаточно, чтобы понять, что они хотят, чтобы вы сделали в этой проблеме.

Другие вопросы по тегам