难点在于逐个取出数据的每一位,我们编写f函数,使用了一个while函数,每次循环中用取余的运算符找到数据的个位累加,再将n/10,如此n便被去除了个位,十位就成了新的个位,最后当n为0时,便加上了每一位。
#include<bits/stdc++.h>//万能头
int f(int n){
int ans=0;
while(n!=0){
ans+=n%10;//取各位
n/=10;//去个位
}
return ans;
}//位数累加函数
int main()
{
int n;
scanf("%d",&n);
int num;//数据
int ans=0;//答案
for(int i=0;i<n;i++){
scanf("%d",&num);
ans+=f(num);//每个数据累加
}
printf("%d",ans%10);//答案模10
return 0;
}
数学处理,还可以当作字符串处理。代码如下:
#include<bits/stdc++.h>//万能头
int f(char* num,int n){
int ans=0;
for(int i=0;i<n;i++){
ans+=num[i]-'0';//数据类型转换累加
}
return ans;
}//位数累加函数
int main()
{
int n;
scanf("%d",&n);
char num[10001];//数据(字符串)
int ans=0;//答案
for(int i=0;i<n;i++){
scanf("%s",num);
int l=strlen(num);//字符串长度
ans+=f(num,l);//每个数据累加
}
printf("%d",ans%10);//答案模10
return 0;
}