华为机试—输出含“23”的数

输入一行数字:123 423 5645 875 186523

在输入第二行:23

将第一行中含有第二行中“23”的数输出并排序

结果即:123 423 186523

/*
  先排序,顺序遍历每个数字,看是否含有23
 */
#include<stdio.h>
#include<stdlib.h>
int cmp(const void *a,const void *b)
{
    return *(int*)a-*(int*)b;
}
int main(int argc, char *argv[])
{
    int a[1000];
    int s[1000];
    int m;
    int i=0;
    scanf("%d",&a[i]);
    while(getchar()!='\n')
        scanf("%d",&a[++i]);
    i++;
    int k=0;
    scanf("%d",&m);
    qsort(a,i,sizeof(int),cmp);
    for(int j=0;j<i;++j)
    {
        int bk=a[j];
        while(a[j]){
            if(a[j]%100==m){
                s[k++]=bk;
                break;
            }
            else
                a[j]/=10;
        }
    }
    for(int j=0;j<k-1;++j)
        printf("%d ",s[j]);
    printf("%d\n",s[k-1]);
    return 0;
}

测试数据:

123 423 5645 875 186523

23

测试结果:

时间: 2024-12-09 17:44:45

华为机试—输出含“23”的数的相关文章

华为机试—输出第n个丑数

#include <stdio.h> //判断一个数是否为丑数 bool IsChou(__int64 num) { while(num!=0) { if(num == 1) return 1; else if(num % 2 == 0) num /= 2; else if(num % 3 == 0) num /= 3; else if(num % 5 == 0) num /=5; else return 0; } } int findUglyNumber(int n) { __int64 a

华为机试-求最大连续bit数

题目描述功能: 求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1 输入: 一个byte型的数字 输出: 无 返回: 对应的二进制数字中1的最大连续数输入描述:输入一个byte数字输出描述:输出转成二进制之后连续1的个数示例1输入 3输出 2 程序实现 import java.util.Scanner; /** * 功能: 求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1 * * 输入: 一个b

华为机试4[编程题] 删数

[编程题] 删数 有一个数组a[N]顺序存放0~N-1,要求每隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置.以8个数 (N=7)为例:{0,1,2,3,4,5,6,7},0->1->2(删除)->3->4->5(删除)-> 6->7->0(删除),如此循环直到最后一个数被删除. 输入描述: 每组数据为一行一个整数n(小于等于1000),为数组成员数,如果大于1000,则对a[999]进行计算. 输出描述: 一行输出最后一

华为机试—计算麻将的番数(高级题160分)

一.题目如下 二.题目分析 麻将和牌有两种形式,即: 模式1 :11,11,11,11,11,11,11 模式2: 11,123,123,123,123(全部或者部分123可以被111,1111替代) 注:123=连续3张同花色牌,如4D5D6D.111=3张同样的牌,如3T3T3T. 条=T,筒=D 模式1即称之为"巧7对",一组牌刚好是7对牌.但是这里有一个疑问,"对"能否重复,即"杠"能否能当作2"对"(即题目中的&qu

华为机试—输出包含名字的个数和字符串

题目: 输入一个n,再输入n个字符串,再输入一个名字串,输出包含名字串的个数和字符串. 输入: 10 sfsfjacksdf jajajack jack jjjjjjjjckd jjjjjjjjjjjack jackkkkk jajackkkkkkk hello wordjack jajaccccjack jack 输出: 8 sfsfjacksdf jajajack jack jjjjjjjjjjjack jackkkkk jajackkkkkkk wordjack jajaccccjack

华为机试—输出大写字母

题目:输出大写字母 输入一个字符串,输出其中的大写字母 输入 2, sdARSFGfg 输出 ARSFG #include <iostream> #include <string> using namespace std; void filter(string str) { int i,len; len=str.length(); for(i=0;i<len;i++) { if(str[i]>=65 && str[i]<=90) printf(&q

华为机试—输出一个数字各个位数和

两种解法: 1.逐位相加 #include <iostream> #include <string> using namespace std; int main() { int s; cin>>s; int sum=0; while (s!=0) { sum=sum+s%10; s=s/10; } cout<<sum; return 0; } 2.转换成字符串相加 #include <iostream> #include <string&g

华为 2015 机试 输出:数字后面的连续出现的(2个或多个)相同字符(数字或者字符),删去一个,非数字后面的不要删除,例如,对应输出为:33aabb55pin。

1 package 华为机试; 2 //C++ 输入:由数字和字母组成的字符串,例如:333aaabb55ppin 3 //输出:数字后面的连续出现的(2个或多个)相同字符(数字或者字符),删去一个,非数字后面的不要删除,例如,对应输出为:33aabb55pin. 4 5 //这句话的核心就是在字符串删除一些字符,感觉处理很复杂,删除哪些字符呢?我们观察发现, 本字符串中删除了一个3,一个a,一个p,满足的规则是啥呢? 333中删除最后一个3,3aa删除了一个a,5pp中删除一个p, 6 //规

[华为机试]输入数字的汉语拼音,每个拼音的首字母大写。输出该数字的阿拉伯数字。

//输入数字的汉语拼音,每个拼音的首字母大写.输出该数字的阿拉伯数字. //JiuBaiJiuShiJiu -> 999 #include<stdio.h> #include<string.h> int result = 0; void add(int n,char wei[]) { if(strcmp(wei,"Wan") == 0) result = result + n * 10000; else if(strcmp(wei,"Qian&q