mojangAB123456 2024-01-21 10:03 采纳率: 100%
浏览 310
已结题

1425: 【入门】查找含有x的数

Joyskid OJ
1425: 【入门】查找含有x的数
内存限制:16 MB 时间限制:1.000 S
评测方式:文本比较 命题人:外部导入
提交:1971 解决:74
题目描述
请从一组数中找出含有x的数,统计出这样的数总共有多少个,总和是多少?

输入
输入包含三行:
第一行为N,表示这组整数总共有多少个数(N <= 1000);
第二行为N个整数(这些整数都是19999之间的数),整数之间以一个空格分开;
第三行包含一个一位的整数x(x是一个1
9之间的一位数);
输出
输出一行,有2个整数用空格隔开,第一个整数代表含有x的数的总个数,第二个整数代表含有x的数的总和。
样例输入
5
12 28 190 36 1255
2
样例输出
3 1295
来源/分类
数组问题

#include<iostream>
using namespace std;
int main(){
    int m,a[100],n;
    cin>>m;
    for(int i=0;i<m;i++){
        cin>>a[i];
    } 
    cin>>n;
    int j;
    for(j=0;j<m;j++){
        if(n==a[j]){
            cout<<j+1;
            break;
        }
    }
    if(j==m){
        cout<<"-1";
    }

     
    return 0;    
}
// 怎么错了???

  • 写回答

3条回答 默认 最新

  • a5156520 2024-01-21 10:43
    关注

    可以遍历数组中所有数的每一位,如果含有x,则累加到和,并让记数+1,循环结束在打印数量以及和即可。

    修改如下:

    #include<iostream>
    using namespace std;
    int main(){
        int m,a[1000],n;
        cin>>m;
        for(int i=0;i<m;i++){
            cin>>a[i];
        } 
        cin>>n;
        int j,sum=0,count=0;
        for(j=0;j<m;j++){
            
            int num = a[j]; // 取出当前位置的数 
            while(num!=0){  // 循环取出当前数的每一位,直到取完所有位上的数 
                int t=num%10;  // 取出当前的个位数 
                if(t==n){  // 如果其等于要寻找的数,则将当前的数累加到和中,并让计数器+1,然后可以break退出循环了 
                    sum+=a[j];
                    count++;
                    break;
                }
                num/=10;  // num除以10以判断下一个数位 
            } 
            
        }
        
        // 循环结束,即计算出满足要求的数有多少,以及和为多少,打印它们即可 
        printf("%d %d",count,sum);
     
         
        return 0;    
    }
    
     
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月31日
  • 已采纳回答 1月23日
  • 创建了问题 1月21日