怎么用c语言设计下面的程序

利用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;
}

img

最简化版
#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;
}