1.程序分析:
本程序的关键之处在于会分离10-1000000以内的正整数的每一位数,例如199可分离为 1,9,9。具体分离方法如下代码所示,其实本程序最好能使用switch判断语句,这样的话不用进行过多的判断,以此耗费内存。
2.源代码:
/*
任意输入一个正整数n(0<n<1000000),求它的各位数字的平方和
*/
#include<iostream>
using namespace std;
int main()
{
int n = 1;
int sum = 0;
int a,b,c,d,e,f;
while(cin>>n)
{
if(n>0 && n<10)
{
sum += n * n;
cout<<"n的平方和为:"<<sum<<endl;
cout<<"--------------------------------"<<endl;
}
else if(n>=10 && n<100)
{
a = n /10;
b = n %10;
sum += a*a + b*b;
cout<<"n的平方和为:"<<sum<<endl;
cout<<"--------------------------------"<<endl;
}
else if(n>=100 && n<1000)
{
a = n/100;
b = (n/10) %10;
c = n % 10;
sum += a*a+b*b+c*c;
cout<<"n的平方和为:"<<sum<<endl;
cout<<"--------------------------------"<<endl;
}
else if(n>=1000 && n<10000)
{
a = n/1000;
b = (n/100) %10;
c = (n % 100) /10;
d = (n % 100) %10;
sum += a*a+b*b+c*c+d*d;
cout<<"n的平方和为:"<<sum<<endl;
cout<<"--------------------------------"<<endl;
}
else if(n>=10000 && n<100000)
{
a = n/10000;
b = (n % 10000) /1000;
c = ((n % 10000) % 1000) /100;
d = (((n % 10000) % 1000) % 100) / 10;
e = d = (((n % 10000) % 1000) % 100) % 10;
sum += a*a+b*b+c*c+d*d+e*e;
cout<<"n的平方和为:"<<sum<<endl;
cout<<"--------------------------------"<<endl;
}
else if(n>=100000 && n<1000000)
{
a = n/1000000;
b =(n % 1000000) /100000;
c =((n % 1000000) %100000) /10000;
d =(((n % 1000000) %100000) %10000) /1000;
e =((((n % 1000000) %100000) %10000) %1000) /100;
f =(((((n % 1000000) %100000) %10000) %1000)) %100;
sum += a*a+b*b+c*c+d*d+e*e+f*f;
cout<<"n的平方和为:"<<sum<<endl;
cout<<"--------------------------------"<<endl;
}
}
return 0;
}
3.运行结果:
该博客探讨了一个程序,用于计算10到1000000之间的正整数每位数字的平方和。程序通过分离每个数字并计算其平方来实现,作者建议使用switch语句优化内存使用。
1002

被折叠的 条评论
为什么被折叠?



