编写程序,使其从标准输入读取字符,直至文件结尾。对每个字符,程序需检查是否为字母,若是报告在字母表中的位置,如C和c均为3.若不是字母,位置置为-1.
以下程序不管是不是字母,均输出-1.不知怎么回事?
#include<stdio.h>
int number(char );
void main()
{char ch;
printf("Enter the letter: ");
while((scanf("%c",&ch)==1)&&(ch!='\0'))
number(ch);
}
int number(char ch)
{int num;
if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z')
{if(ch>='a'&&ch<='z')
printf("%c,its number is %d.\n",ch,ch-96);
else
printf("%c,its number is %d.\n",ch,ch-64);}
else
printf("%c,its number is -1.\n",ch);
}
[解决办法]
- C/C++ code
#include<stdio.h>int number(char );void main(){ char ch; printf("Enter the letter: "); while((scanf("%c",&ch)==1)&&(ch!='\0')) { number(ch); fflush(stdin); }}int number(char ch){ int num;if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z'){ if(ch>='a'&&ch<='z') printf("%c,its number is %d.\n",ch,ch-96); else printf("%c,its number is %d.\n",ch,ch-64);} else printf("%c,its number is -1.\n",ch);return 0;}
[解决办法]
楼主的问题是那个换行符吧!!
- C/C++ code
#include<stdio.h>int number(char ch);void main(){ char ch; printf("Enter the letter: "); while((scanf("%c",&ch)==1)&&(ch!='\0')) number(ch);}int number(char ch){ int num; if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z') { if(ch>='a'&&ch<='z') printf("%c,its number is %d.\n",ch,ch-96); else printf("%c,its number is %d.\n",ch,ch-64); } else if(ch=='\n') //判断一下是否是换行符 printf(""); else printf("%c,its number is -1.\n",ch);}