在线编译器 C

#include <stdio.h> void print_digit(char s[]){ int a[11]={0}; int i=0; while((s[i]!=0){ for(int m=0;m<10;m++){ if(m==(s[i]-'0')){ a[m]++; } } i++; } for(int i=0;i<10;i++){ if(a[i]!=0){ printf("%d %d\n",i,a[i]);} } } int main() { char t[100]; scanf("%s",t); print_digit(t); return 0; }
这段代码的目的是统计输入字符串中每个数字字符(0-9)出现的次数,并输出出现次数不为零的数字及其次数。

代码中存在一个语法错误:`while((s[i]!=0)` 这一行缺少一个右括号。正确的写法应该是 `while(s[i]!=0)` 或 `while((s[i]!=0))`。

- 检查 while 循环的条件部分,确保括号成对匹配。当前代码中左括号数量多于右括号,导致编译错误。
- 思考一下,当字符串结束时,s[i] 的值是什么?这个值在 while 循环条件中应该怎样正确判断?