实在不知道叫啥 2018-11-11 03:20 采纳率: 0%
浏览 770
已采纳

有关输入字符统计各类个数的问题

#include
#include
int main()
{
int capitalletter=0,lowercaser=0,blank=0,digit=0,other=0,x;
char str[10];
printf("Input 10 characters: ");
scanf("%s",&str);
for (x=0;x {
if (str[x]>='A'&str[x]<= 'Z')
capitalletter++;
else if (str[x]>='a'&str[x]<='z')
lowercaser++;
else if (str[x]>='0'&str[x]<='9')
digit++;
else if (str[x]=='032')
blank++;
else
other++;
}
printf("capital letter=%d,lower caser=%d,blank=%d,digit=%d,other=%d\n",capitalletter,lowercaser,blank,digit,other);
return 0;

}

为什么只要输入的数组里面有空格,就会把空格及其以后的字符都当成other输出。
如果输入的字符里没有空格,那么就都正确

  • 写回答

2条回答 默认 最新

  • Italink 2018-11-11 03:41
    关注

    scanf是接受不到空格的,你可以用gets(str) 读取一行字符
    你那可能要把gets_s改成gets

     #include <stdio.h>
    #include<string.h>
    int main()
    {
        int capitalletter = 0, lowercaser = 0, blank = 0, digit = 0, other = 0, x;
        char str[30];
        printf("Input 10 characters: ");
        gets_s(str);
        for (x = 0;x<strlen(str); x++){
        if (str[x] >= 'A'&str[x] <= 'Z')
            capitalletter++;
        else if (str[x] >= 'a'&str[x] <= 'z')
            lowercaser++;
        else if (str[x] >= '0'&str[x] <= '9')
            digit++;
        else if (str[x] == ' ')
            blank++;
        else
            other++;
        }
        printf("capital letter=%d,lower caser=%d,blank=%d,digit=%d,other=%d\n", capitalletter, lowercaser, blank, digit, other);
        return 0;
    }
    

    图片说明

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

报告相同问题?

悬赏问题

  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿