利用C语言编写完整程序实现如下功能:通过键盘输入一个自然数n(n是小于8位的自然数),计算n的各位数字,并对各位数字进行判断,如果该位数满足小于5则计算累加和,保存到变量s中;否则计算累乘,结果保存到变量c中,最后输出s和c的值。例如:如输入n=1234567,则s=10(即1+2+3+4),C=210(即5×6×7)
如输入n=2517,则=3(即2+1),C=35(即5x7)
不要当作数字来处理麻烦,可以当作字符串来处理,简单
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s;
cin >> s;
//char s[9] = "0";
//scanf("%s",s);
int S = 0;
int C = 1;
for (int i = 0 ; i < 9 && s[i] != '\0' ; i++)
{
if (s[i] >= '5') C *= s[i] - '0';
else S += s[i] - '0';
}
printf("S = %d C = %d" ,S,(C == 1 ? 0 : C));
}
在位数不明确的情况下,先编写程序(最基础的便是每除10,位数加1,当结果为0时,得出位数,因为整除结果不会出现小数),而后判断位数是否大于4,然后就行分离运算,即取整取余,达到目的
#include <iostream>
using namespace std;
int main()
{
cout << "输入一个自然数:" << endl;
int n;
cin >> n;
int s = 0;
int c = 1;;
int i = 0;
while ( n > 0 )
{
int a = n % 10;//对10 求余数 得到个位数
if ( a < 5 )
{
s += a;
}
else
{
c *= a;
}
n = n / 10;
}
cout << "s=" << s << " c=" << c << endl;
return 0;
}
最简化版
#include<bits/stdc++.h>
using namespace std;
int s=0,c=1;
int main(){
string n;
cin >> n;
for(int i=0;i<n.size();i++)
{
if(n[i]<'5')s+=n[i]-'0';
else c*=n[i]-'0';
}
cout << "S=" << s;
if(c==0)cout << " C=0";
else cout << " C=" << c;
}