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表示程序正常结束。