m0_73778095 2022-09-27 18:44 采纳率: 88.9%
浏览 16
已结题

请问这到底是怎么回事?

想要让程序分别打印出字母,空格,数字和其他字符的个数,但是程序写了好久都运行失败,用f10检查时发现程序每次在while里要么读到if的条件语句那一行后if所带的语句没有读就直接跳过,要么就直接全部跳过,而且一直在while里面循环,导致程序没有输出结果就直接结束了
#include<stdio.h>
int main()
{
char sen;
int a = 0, b = 0, c = 0, d = 0;
printf("请输入一串字符:");
sen = getchar();
while ((sen = getchar()) != '\n')
{
if (sen >= 'a' && sen <= 'z' || sen >= 'A' && sen <= 'Z')
a++;
else if (sen >= ' ')
b++;
else if (sen >= '0' && sen <= '9')
c++;
else d++;
}
printf("字母个数;%d\n空格个数%d\n数字个数:%d\n其他字符个数:%d", a, b, c, d);
return 0;
}
这是后面改完能正常运行的,但是我还是不明白,while后面为什么要用sen=getchar(),如果我用scanf去输入字符串,这里直接while(sen!='\n')就又不行,还有为什么要用\n?

  • 写回答

1条回答 默认 最新

  • .魚肉 2022-09-27 18:50
    关注

    这里是双等号

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月5日
  • 已采纳回答 9月27日
  • 创建了问题 9月27日

悬赏问题

  • ¥15 有偿请教计算电磁学的问题涉及到空间中时域UTD和FDTD算法结合的
  • ¥15 vite打包后,页面出现h.createElement is not a function,但本地运行正常
  • ¥15 Java,消息推送配置
  • ¥15 Java计划序号重编制功能,此功能会对所有序号重新排序,排序后不改变前后置关系。
  • ¥15 关于哈夫曼树应用得到一些问题
  • ¥15 使用sql server语句实现下面两个实验(需要代码和运行结果截图)
  • ¥20 用web解决,要给我一个完整的网页,符合上述的要求
  • ¥20 求个sql server代码和结果的图 两道题
  • ¥15 银河麒麟操作系统无法使用U盘
  • ¥100 寻找:光电二极管电路设计服务