c语言小白😁,有没有大佬帮我发现一下有什么问题?☺️

 我来答
小菜鸟2无聊写代码
2019-10-05 · TA获得超过1059个赞
知道小有建树答主
回答量:932
采纳率:87%
帮助的人:168万
展开全部

正确的代码网友们给出来了,就是去掉while()外面的那个getchar的语句。

点工具——调试,可以查看程序运行过程,有问题要自己解决才对哦。多用调试更容易理解代码

//不说了今天好水逆,发代码也被度娘审核555,还没有吐出来555


//那个dev cpp 调试也用不了,给你凑合看borlandc的调试过程好了


输入五大写字符enter,ch='A'

第二个getchar后ch='S'

第三个getchar也要拿字符了

ch被赋了第三个字符'D'

第四个getchar,'F'

至此c++只被执行了两次,而getchar跑了四次

接下来的结果不解释,上图:

因为getchar,其实还按了一个回车

结果就是这样。好的代码需要勤于调试哦。

yzjxbin76
2019-10-06 · TA获得超过123个赞
知道小有建树答主
回答量:251
采纳率:67%
帮助的人:64.8万
展开全部
while循环中的le=getchar可以去掉。保留的话从输入中每读两个字符计数才加一,直到第一次遇到回车,最后结果相当于总数除以2。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pieryon
2019-10-05 · 知道合伙人数码行家
pieryon
知道合伙人数码行家
采纳数:14410 获赞数:166873
获取软件设计师高级职称 万达金融最佳创新奖

向TA提问 私信TA
展开全部
首先你最后要return 0;
输入一串字符,写法不对,参考如下:

char a[100];
int i;
gets(a);
for(i=0;a[i]!='\0';i++)
if(a[i]>='A'&&a[i]<='Z')
c++;
puts(a);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
珈乐的烤玉米肠机
2019-10-05
知道答主
回答量:15
采纳率:100%
帮助的人:4.9万
展开全部
观察程序,发现:
在while循环的判断条件中,getchar()已经被执行一次,即缓存区中的大写字母被取出了一个并将这个大写字母赋值给了le.
随后在循环体中,又执行了一次getchar(),缓存区中的大写字母又被取出.
也就是说,一次循环实际上是取出了两个大写字母,并且以第二次取出的字符作为字母判断.
所以,在这个程序中,实际上被判断的有S, C 和输入完字符后的那个 回车符.
所以说,程序判定只有两个大写字母.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cdyzxy
2019-10-06 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:85%
帮助的人:3778万
展开全部

把循环语句中的getchar去掉即可写成:

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式