一.题目
二.分析与思路
难点在于逐个取出数据的每一位,我们编写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);//答案模10return 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);//答案模10return 0;
}