Отображение начальных чисел на все буквы
[По этому Вопросу они просят присвоить цифры буквам][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.
Этого должно быть достаточно, чтобы понять, что они хотят, чтобы вы сделали в этой проблеме.