输入n个数,将符合以下至少两个条件的数进行输出、计数并求和。(是一个三位数;个位+十位刚好等于5;.能够被3整除),求解!

img

供参考:

#include <stdio.h>
#define N 1000
int fun(int n)
{
    int flg = n, k = 0;
    while (flg)       //求出位数
    {
        k++;        
        flg /= 10;
    }
    if (k == 3) flg++;   //位数为3位数
    if (n % 10 + n / 10 % 10 == 5) flg++; //个位+十位刚好等于5
    if (n % 3 == 0) flg++;  //能够被3整除
    return flg;
}
int main()
{
    int n, tmp, a[N] = {0}, i = 0;
    scanf("%d", &n);
    while (n--)
    {
        scanf("%d", &tmp);
        if (fun(tmp) >= 2) a[i++] = tmp;//至少两个条件的数
    }
    if (i == 0)
        printf("no");
    else {
        for (n = 0, tmp = 0; n < i; n++) {
            printf(n == 0 ? "%d" : " %d", a[n]);
            tmp += a[n];
        }
        printf("\n%d %d", i, tmp);
    }
    return 0;
}


代码如下:

#include<bits/stdc++.h>
using namespace std;
int x[10005];
void search(int q,int i)
{
    int a=q/100;
    int b=q%100/10;
    int c=q%10;
    int d=b+c;
    int e=q%3;
    if(a>0&&a<10) x[i]++;
    if(d==5) x[i]++;
    if(e==0) x[i]++;
}
int main()
{
    int n,k=0,s=0;
    int a[10005];
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        x[i]=0;
        search(a[i],i);
        if(x[i]>=2) 
        {
            k++;
            s+=a[i];
            cout<<a[i]<<" ";
        }
    }
    if(k==0) 
    {
        cout<<"no";
        return 0;
    }
    cout<<endl;
    cout<<k<<" "<<s;
    return 0;
}

运行结果:

img


希望对题主有帮助!