1.源代码
#include <stdio.h>
int main()
{
int sum=0;
int i=0;
int j;
char ch[100];
while( (ch[i]=getchar())!='\n' ){
i++;
ch[i]='\0';
}
for(j=0; (ch[j]!='#'||ch[j+1]!='#');j++){
if(ch[j]>='0' && ch[j]<='9'){
sum++;
}
}
printf("sum=%d",sum);
return 0;
}
2.代码思路
- 定义一个主函数
main
,它首先声明一个长度为100的字符数组ch
,一个整数变量sum
,一个循环控制变量i
,和一个循环控制变量j
。然后,将sum
初始化为0,表示初始的数字字符个数。 - 接下来,使用一个
while
循环,从标准输入读取一行字符,直到遇到换行符为止。循环的每一步,都做以下操作:
- 使用
getchar
函数读取一个字符,并将其存放到数组ch
的第i
个位置,即ch[i]=getchar()
。 - 将
i
加一,表示数组的实际长度增加一位。 - 将数组
ch
的第i
个位置设为空字符,即ch[i]='\0'
,表示数组的结束标志。
- 然后,使用一个
for
循环,遍历数组ch
的所有字符,直到遇到两个连续的井号#
为止,即(ch[j]!='#'||ch[j+1]!='#')
。循环的每一步,都做以下操作:
- 使用一个
if
语句,判断当前字符是否是数字字符,即ch[j]>='0' && ch[j]<='9'
。如果是,就将sum
加一,表示数字字符个数增加一位。
- 最后,使用
printf
函数,将sum
的值输出到标准输出,格式为sum=%d
,并换行。返回0表示程序正常结束。