当输入的是字母的时候,isalnum也返回true,因为16进制里abcdef也是合法数字
所以你必须要写else
另外,你要把i++拿到括号外面来执行,不管前面进入哪个if,都统一执行一次i++
你现在的逻辑,反复进入if就反复执行i++,导致跳过了一些字母没有进行判断
问题出在isalnum()函数:判断字符是否为英文字母或数字,所以你前面两个if不能同时判断,必须要用else,否则都会符合条件执行。请采纳
第一个if语句用于统计字母的个数,第二个if语句用于统计数字的个数,最后一个else语句用于统计空格的个数。
第二个if语句中使用的是else if,这意味着如果前面的if语句判断为true,那么就不会执行后面的else if语句。因此,第一个if语句统计字母的个数,第二个else if语句统计空格的个数,而数字则被忽略了。所以,输出的结果是 4 0 3。
如果将第二个else if语句改为if语句,那么无论前面的if语句是否为true,都会执行后面的if语句。因此,第一个if语句统计字母的个数,第二个if语句统计数字的个数,第三个if语句统计空格的个数。所以,输出的结果是 4 2 3。
总之,使用if和else if的区别在于前面的if语句判断为true后,后面的else if语句就不会再执行。如果你想要每个条件都能被计算,就应该使用多个if语句。