字母计数问题
编写一个程序,如果输入的是字母,则报到字母在字母表的第几个位置,比如,c在字母中是第3个位置。
不论大小写。
# include "stdio.h"
void f(void)
{
int pos=0, len=0;
char a ='a', z ='z';
char A ='A', Z ='Z';
char b;
scanf("%c", &b);
if(b>=a && b<=z)
{
printf("您输入的是个小写字母!");
for( ; a<=b; a++, pos++);
printf("\n该字母在字母表中处于第的位置是: %d\n", pos);
}
else if(b>=A && b<=Z)
{
printf("您输入的是个大写字母!");
for( ; A<=b; A++, len++);
printf("\n该字母在字母表中处于的位置是: %d\n", len);
}
else
printf("您输入的不是字母.");
return;
}
int main(void)
{
f();
return 0;
}
有没有一个公式直接推算出字母在字母表中的位置,而不用for循环,想2天了就是想不出来
[解决办法]
先判断是大写还是小写,然后再减去'A'或'a',
然后再加上'A'或'a'的固定位置。不用循环
[解决办法]
if(x >= 'a' && x <= 'z') // 小写
printf("x在第%d的位置\n" ,x-'a'+1); // x所在位置
else if(x >= 'A' && x <= 'Z') // 大写
printf("x在第%d的位置\n" ,x-'A'+1); // x所在位置
[解决办法]
比如说输入字母
char b;
char index;
char *pUp;
scanf("%c", &b);
if(b < 'a')
{
b += 0x20;
pUp = "大";
}
else
{
pUp = "小";
}
index = b - 'a' + 1;
if(index >= 1 && ret <= 26)
{
printf("你输入的是%s写字母\n该字母在字母表中处于的位置是:%d\n", pUp, index);
}
else
{
printf("你输入的不是字母");
}