C语言编程,从键盘输入任意一个大写英文字母,求出它在26个字母表中的位置。求问我的程序为什么不对。

#include<stdio.h>intmain(){inta;a=getchar();a=a-96;printf("%d",a);return0;}... #include<stdio.h>
int main()
{
int a;
a=getchar();
a=a-96;
printf("%d",a);
return 0;
}
展开
 我来答
wjcmqyd
2018-04-11 · TA获得超过5630个赞
知道大有可为答主
回答量:3236
采纳率:79%
帮助的人:843万
展开全部

#include <stdio.h>


#include <ctype.h>


int main(void)


{


int i;


char zf1,zf2,zf[26]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};


printf("  请输入一个字符:");


zf1=getchar();


if(isupper(zf1))


{


zf2=zf1+32;


for(i=0;i<26;i++)


if(zf2==zf[i])


printf("  字符 %c 在英文字母中的位置是:第 %d 个\n",zf1,i+1);


}


else


for(i=0;i<26;i++)


if(zf1==zf[i])


printf("  字符 %c 在英文字母中的位置是:第 %d 个\n",zf1,i+1);


return 0;


}

xuzhouliuying
高粉答主

2018-04-11 · 繁杂信息太多,你要学会辨别
知道顶级答主
回答量:5.4万
采纳率:86%
帮助的人:2.5亿
展开全部

思路混乱。既然是getchar接收字符,那么a就应该定义为字符型,定义为整型就错了。后面的a=a-96就跟着错了。一开始就不对,接着就一错到底。正确做法:a为字符型,然后利用ASCII码表中对应的数值进行计算。

#include <stdio.h>
int main()
{
char a;
a=getchar();
printf("%d",a-'A'+1);
return 0;
}
更多追问追答
追问
抱歉刚学C语言,第一次编程,a=a-96那里还是不太懂,能解释一下吗?
追答
一开始a的类型就错了,应定义为字符型,既然是字符型,那么a=a-96,就变成前面第96个字符,早就出了大写字母的范围了,大写字母只有26个,哪来的减96?而且退一万步讲,就算你认为你是想减首字母前一个字符对应的数值,ASCII码表中A对应的数值是65,小写字母a对应的才是97,就是减也不该减96。当然,由于定义就错得比较离谱,这个错误就不算什么了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式