C语言 如何使z变为26?



我想让A = 1,…从Z到26。我的代码可以使A变成1,但不能使J变成->10、……, Z ->26. 请告诉我如何改变我的。

void changeToDigitEncode(char s[], char e[]) {
int i;
int eIndex = 0;
for (i = 0; s[i] != ''; i++) {
e[eIndex] = s[i]-'A'+'0'+1;
eIndex++;
}
e[eIndex] = '';
}
int main(void) {
char sentence[20], encoded[40];
scanf("%s", sentence);
changeToDigitEncode(sentence, encoded);
printf("%sn", encoded);
}

通常你可以这样做:

int a_lower = 'a' - 'a' + 1; // value : 1
int j_lower = 'j' - 'a' + 1; // value : 10

对于大写字母,类似:

int a_upper = 'A' - 'A' + 1; // value : 1
int j_upper = 'J' - 'A' + 1; // value : 10

正如注释所指出的,您不能将大多数整数存储为单个字符。而字符数组元素是单个字符。因此,您必须创建一个整型数组并将值存储在其中。

加上,它将是s[i]-'A'+ 1简单地

我添加的另一件事是encoded数组的终止条件,该条件将是数字0,因为没有字母表会给出数字0。

#include <stdio.h>
void changeToDigitEncode(char s[], int e[]) {
int i;
int eIndex = 0;
for (i = 0; s[i] != ''; i++) {
e[eIndex] = s[i]-'A'+1;
eIndex++;
}
e[eIndex] = 0;
}
int main(void) {
char sentence[20]; 
int encoded[20];
scanf("%s", sentence);
changeToDigitEncode(sentence, encoded);

for(int i=0; encoded[i]!=0; i++) {
printf("%d ",encoded[i]);
}
}

试试这段代码,把ip[]当作s[],把op[]当作e[]

char ip[] = "ABC";
char op[3];
char temp[50];
int i=0;
int j=0;
int k=0;
while(ip[i]!='')
{
int num=ip[i];
num-=64;
sprintf(temp, "%d", num);
k=0;
while(temp[k]!='')
{
op[j++]=temp[k++];

}
i++;
}
op[i]='';
printf("-->%sn",op);

只适用于大写

相关内容

  • 没有找到相关文章

最新更新