输入任意一个字母输出其字母序号的一些问题

如题,题目要求是输入任意一个字母(考虑大小写),输出其字母序号。
第一个程序中,出现的问题是代码可以运行,但是直接输入任意字母结果均是-86,按空格换行后输入完成后,结果大小写字母均是输出大写字母的字母序号。

img


第二个程序中,去掉了else if后的;后,输出无结果

img

请问大老们有什么办法能解决以上问题嘛

晕,你怎么getchar和scanf一起用呢?用一个就行啦

int main()
{
    int index = 0;
    char ch = getchar();
    if(ch >='A' && ch <='Z')
        index = ch -'A' + 1;
    else
        index = ch-'a'+1;
    printf("%d",index);
    return 0;
}


#include<stdio.h>
int main()
{

  char num;
  scanf("%c",&num);
  if(num > 96)
  {
      printf("%d",num - 96);
  }
 else
{
    printf("%d",num - 64);
}
return 0;
}

img

自己调试你的程序呀,简单一点就是把ch的内容输出来看结果。高效点的就是打断点,看ch变量的内容变化。

你不是用getchar()函数输入字符吗?怎么后面又写scanf??

#include <stdio.h>

int main()
{
    char ch;
    int index;
    ch = getchar();
    if(ch >='a' && ch <='z')
        index = ch - 'a' + 1;
    else
        index = ch - 'A' + 1;
    printf("%d", index);
    return 0;
}

使用getchar(). 我写了一个正确运行的代码。
希望有帮助到你。

#include <stdio.h>
int main() {
char ch;
int index = 0xFF; // 0xFF 表示无效值
ch = getchar();
if((ch >= 'A' && (ch <= 'Z'))){
index = ch - 'A' +1; }
else if ((ch >= 'a' && (ch <= 'z'))){
index = ch - 'a' +1; }
printf("%d\n", index);
return 0; }