华为研发工程师编程题C++实现

编程题

1.

汽水瓶

某商店规定:三个空汽水瓶可以换一瓶汽水,允许向老板借空汽水瓶(但是必须要归还)。

小张手上有n个空汽水瓶,她想知道自己最多可以喝到多少瓶汽水。

数据范围:输入的正整数满足 1≤x≤100 1≤n≤100 

注意:本题存在多组输入。输入的 0 表示输入结束,并不用输出结果。

你的答案:

提交时间:2023-07-08 语言:C++ 运行时间:4ms 占用内存:472 状态:编译正确

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

#include <iostream>

using namespace std;

int main() {

 int a[10],n;

  cin>>n;

  a[0]=n;

  int i=1,j=0;

  while(1){

    if(n!=0){

        cin>>n;

        a[i]=n;

        i++;

    }else{

        break;

    }

  }

  for(j=0;a[j]!=0;j++){

    a[j]=a[j]/2;

    cout<<a[j]<<endl;

  }

  return 0;

}

// 64 位输出请用 printf("%lld")

知识点:模拟、数学

编程题

2.

明明的随机数

明明生成了N个1到500之间的随机整数。请你删去其中重复的数字,即相同的数字只保留一个,把其余相同的数去掉,然后再把这些数从小到大排序,按照排好的顺序输出。

数据范围: 1≤x≤1000 1≤n≤1000  ,输入的数字大小满足 ≤500 1≤val≤500 

你的答案:

提交时间:2023-07-08 语言:C++ 运行时间:5ms 占用内存:468 状态:编译正确

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

#include <iostream>

using namespace std;

int main() {

 int n;

  cin>>n;

  int a[1000],temp;

  int i=0,j=0;

  while(i<n){

        cin>>a[i];

        i++;

  };

  for(j=0;j<n-1;j++){

  for(i=0;i<n-1-j;i++){

    if(a[i]>a[i+1]){

       temp=a[i];

       a[i]=a[i+1];

       a[i+1]=temp;

    }

  }

  }

  cout<<a[0]<<endl;

  for(i=1;i<n;i++){

        if(a[i]!=a[i-1])cout<<a[i]<<endl;}

  return 0;

}

知识点:数组

编程题

3.

进制转换

写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。

数据范围:保证结果在 1≤x≤231−1 1≤n≤231−1 

你的答案:

提交时间:2023-07-09 语言:C++ 运行时间:4ms 占用内存:452 状态:编译正确

复制代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

#include <iostream>

using namespace std;

int main() {

    char a[10];

    char b[]="0123456789abcdef";

    char c[]="0123456789ABCDEF";

    cin>>a;

    int i=0,j=2;

    if((a[0]!=0)&&a[1]!='x'return 0;

    else{

        while(a[j]!=0) j++;

    }

    int sum =0;

    int d[8];

    int k=0,e=j-2;

    for(--j;j>1;j--){

            i=0;

    while(i<16){

        if(a[j]==b[i]||a[j]==c[i]) {d[k]=i;break;}

        i++;

    };

    k++;

    };

    for(k=0;k<e;k++){

            for (i=k;i>0;i--){

              d[k]=d[k]*16;

            };

            sum=sum+d[k];

    }

    cout<<sum<<endl;

}

// 64 位输出请用 printf("%lld")

知识点:字符串

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HsiaoShawn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值