m0_70029950 2022-06-01 10:53 采纳率: 79.2%
浏览 22
已结题

调试时,调试运行到while语句无法继续

问题遇到的现象和发生背景

编译没问题,但运行时没有输出,做过调试,调试运行到while语句无法继续

问题相关代码,请勿粘贴截图

#include <stdio.h>
#include <stdlib.h>
int main()
{
char a;
a=getchar();
int i=0;
while(a!='\n');
{
if(a>='a'&&a<='z')
{
a=a-32;
printf("%c",a);
}
else
{
printf("%c",a);
}
if(a=='a'||a=='A'||a=='e'||a=='E'||a=='i'||a=='I'||a=='o'||a=='O'||a=='u'||a=='U')
{
i++;
}
}
printf("\n");
printf("%d",i);
return 0;
}

运行结果及报错内容

img

我想要达到的结果

以此题为例
TYU67812NBM/.,8812H
1

  • 写回答

2条回答 默认 最新

  • a5156520 2022-06-01 12:00
    关注

    应该是因为while循环后面多了个分号,然后while循环里里面没有加getchar()多次读取字符,修改如下:

    
    
    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
        char a;
        a=getchar();
        int i=0;
    //这里原来的分号要去除,因为分号代表一个语句的结束,如果不去掉,当a不是直接输入回车,
    //其他就会一直卡这这里,因为while循环一直满足条件 
        while(a!='\n') 
        {
            if(a>='a'&&a<='z')
            {
                a=a-32;
                printf("%c",a);
            }
            else
            {
                printf("%c",a);
            }
            if(a=='a'||a=='A'||a=='e'||a=='E'||a=='i'||a=='I'||a=='o'||a=='O'||a=='u'||a=='U')
            {
                i++;
            }
            //因为要读取多个字符,所以a要在循环里多次读取单个字符,直到换行符, 
            //如果只用while循环外的一个getchar就只获取了一个字符 
            a=getchar(); 
        }
        printf("\n");
        printf("%d",i);
        return 0;
    }
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月9日
  • 已采纳回答 6月1日
  • 创建了问题 6月1日

悬赏问题

  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 划分vlan后不通了
  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大