001 dart刷题

#dart刷题系列第一期

1.   l1 = [1,2,3,4,5,11],计算l1内所有数字的总和

void main(){
  List l1 = <int> [1,2,3,4,5,11];
  int a = 0;
  for (int i=0;i<l1.length;i++){
  int b = l1[i];
  a += b;
  }
  print(a);
}

计算总和,但是所有的元素都在列表里面,所以第一步是得把元素提取出来,而后再把他们加起来

所以第一步是遍历循环,第二步则是全部加到一个数里面

以上,为第一题的全部原理

2.  加减乘除的计算,a = 10 , b = 5 ,利用函数计算a+b,a-b,a*b,a/b

Suanshu(a,b,c){
  if (c == "+"){
    return a + b;
} else if (c == "-"){
    return a - b;
} else if (c == "*"){
    return a * b;
} else if (c == "/"){
    return a / b;
}
}

void main(){
  print(Suanshu(10,5,"+"));
  print(Suanshu(10,5,"-"));
  print(Suanshu(10,5,"*"));
  print(Suanshu(10,5,"/"));
}

由于是计算,所以很容易想到三个元素,两个数,以及符号,那么作为计算器,自然应该是要输入三个元素,当然,由于是简易计算器,所以这里没有给如果符号不在c的时候该怎么办

然后函数创造出来后,直接调用,以上,为第二题的全部逻辑

3.  数据分类

小明有一堆数据,但是数据太多,小明不知道如何快速的分类下数据,请你帮帮他:

数据:111,32,34,24,2454,23,23433,34,234,11,43,234,3354,23,232,4343,3333544,1,11,1,322,3,4,5,23,343,43,2,3,343434,123

分类要求:一位数,两位数,三位数,四位数,五位数及以上

输出:每个类型有多少数字?

void main(){
  List l0 = [111,32,34,24,2454,23,23433,34,234,11,43,234,3354,23,232,4343,3333544,1,11,1,322,3,4,5,23,343,43,2,3,343434,123];
  List l1 = [];
  List l2 = [];
  List l3 = [];
  List l4 = [];
  List l5 = [];
shuaixuan(l0,l1,l2,l3,l4,l5);
  print(l1);
  print(l2);
  print(l3);
  print(l4);
  print(l5);
}

shuaixuan(List l,a,b,c,d,e){
  for (int i = 0; i< l.length; i++){
    if (l[i] ~/ 10 == 0){
      a.add(l[i]);
    } else if (l[i] ~/ 100 == 0){
      b.add(l[i]);
    } else if (l[i] ~/ 1000 == 0){
      c.add(l[i]);
    } else if (l[i] ~/ 10000 == 0){
      d.add(l[i]);
    } else {
      e.add(l[i]);
    }
  }
}

由于是按照位数分类,那么这是第一个要解决的问题,该如何分类?
由于差异是位数不同,所以我们必须从这里入手,位数不同,什么不同呢?

我们可以想到,有两种方式,一种是因为位数的不同,那么长度就不同,所以可以根据长度不一样,来进行分类

但是这是好方法吗?这里虽然可以解决问题,但是如果有小数,那不就不行了吗?所以,我们得找一个更好的方法,从而可以彻底解决这类的问题
那么在所有的计算方法中,很明显加法减法乘法除法都不太行,但是整除?整除似乎是可以的,对于任何一个n位数,整除n+1位的数结果都是0,但是整除的数字达到n+1位,那么就不是0,这里就是一个突破口

因此,可以根据这个突破口,设计函数,从而实现要求,以上,是第三题的全部解析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爱意随风起风止意难平

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

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

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

打赏作者

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

抵扣说明:

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

余额充值