PTA 7-2 求任意整数各个数字之和 (10 分)
本题目要求读入1个整数A,然后输出该数字每位数的累加和,要求使用列表推导式实现。
输入格式:
输入在一行中给出1个任意长度的整数(可正可负)。
输出格式:
对每一组输入,在一行中输出其绝对值每位数字累加和。
输入样例1:
在这里给出一组输入。例如:
12006
结尾无空行
输出样例1:
在这里给出相应的输出。例如:
9
结尾无空行
输入样例2:
在这里给出一组输入。例如:
-12006
结尾无空行
输出样例2:
在这里给出相应的输出。例如:
9
结尾无空行
整体思路:
在遇到问题时应该考虑周全,应该知道问题输入有几种情况,问题的输出又是哪种情况,从而来通过编程解决问题。
大致上可用定义函数的方法来处理数据和直接用main函数处理数据这两种情况,所以我也设计了两种方案供大家参考学习。
- 第一种使用if判断数据范围,在进行相应的数据处理,之后将参数返回。
#include <stdio.h>
int sum(int i){
if(i > 9){
return i % 10 + sum(i / 10);
}
if(i < 0&& -i>9){
int y;
y = -i;
return y % 10 + sum(y / 10);
}
if(i>0 && i<9){
return i;
}
else{
return -i;
}
}
int main(){
int num;
while(true){
(void)scanf("%d", &num);
printf("%d\n", sum(num));
}
}
- 第二种使用while循环,在main函数中处理数据。
#include<stdio.h>
int main()
{
int N,i=0,sum=0;
(void)scanf("%d",&N);
while(N!=0)
{
sum+=N%10;
N=N/10;
}
if(sum>0) {
printf("%d",sum);
}else{
printf("%d",-sum);
}
return 0;
}
希望学习到的小伙伴不要忘记点赞哟!