70,020
社区成员




#include <stdio.h>
#include <string.h>
#define M 50
int main()
{
char num[M];
//int n,mask,t,d,index,count,i;
int i;
int sum = 0;
scanf("%s", num);
for(i = 0; i < strlen(num); i++)
if(!(num[i] >= '0' && num[i] <= '9'))
num[i] = 0;
// puts(num);
for(i = 0;i < M;i++){
if(num[i] >= '0'&&num[i] <='9' )
sum += (num[i] - '0');
}
printf("%d\n",sum);
return 0;
}
输入的不到M(50)个,后面的数据都是随机值。所以第一个for循环的判断条件用strlen计算一下输入的字符个数;scanf会自动加上字符串的结束标记'\0'(值等价与0)
若输入的非'0'~'9',num[i] = 0;0和'\0'是一样的,所以后面puts调试的输出遇到'\0'结束输出,调试的和sum 的结果不一致。#include<stdio.h>
#define M 50
//int vmask(int n);
int main(){
//char str[][10] ={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
char num[M];
int n,mask,t,d,index,count,i;
int sum = 0;
for(i = 0;i < M;i++)num[i] = 0;
scanf("%s",num);
// puts(num);
for(i = 0;i < M;i++){
if(num[i] >= '0'&&num[i] <='9' )
sum += (num[i] - '0');
}
printf("%d\n",sum);
return 0;
}