查漏补缺

1.开根号操作

C语言:

#include <math.h>  //函数在math.h中

//实现开方操作

double b = sqrt(n);

//实现次方操作

double b = pow(2,3);  2^3

double b = pow(2,0.5); 也可以实现开方

 

JAVA语言

package chen;

public class Hello {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int a = 16;
        System.out.println("16的开平方为:" + Math.sqrt(a));
        System.out.println("2^3=" + Math.pow(2, 3));
        System.out.println("-4绝对值="+Math.abs(-4));
        System.out.println("100的对数="+Math.log10(100));
    }

}
 

Python语言

a = 16

a**(1/2)  #用** 可以轻松实现开方以及平方操作。

 

2.建立动态数组

C语言:

类型说明符 * 数组名 = (类型说明符 * )malloc(数组长度 * sizeof(类型说明符));

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
    int n,i;
    int *arr;
    printf("请输入所要创建的一维动态数组的长度:");
    scanf("%d",&n);
    if((arr=(int *)malloc(n*sizeof(int)))==NULL)
    {
        printf("分配内存空间失败,程序退出!");
        return 0;
    }
    for(i=0;i<n;i++)  /*向申请成功的数组中赋值*/
    {
        arr[i]=i+1;
        printf("%d\t",arr[i]);
        if(0==(i+1)%4)
            printf("\n");  /*一行打印四个元素*/
    }
    free(arr);  /*切记!使用完后记得要释放所申请的空间*/
    return 0;
}

 

Java建立动态数组:

(1)java建立数组(必须要定义数组长度)

1.首先必须先申明数组变量

dataType[] arrayRefVar; //如  double[] doub1;

2.创建数组

arrayRefVar = new dataType[arraySize];  //如 doub1 = new double[6];

可以一步到位

double[] doub1 = new double[6]

double[][] doub2 = new double[2][3]

还可以使用ArrayList实现建立动态数组,既可以申明数据类型,也可以不申明。

ArrayList<Integer> l1 = new ArrayList<Integer> ();

ArrayList l2 = new ArrayList ();

 

Python来说更简单,直接建立即可:

a = []

3.统计数组中出现次数最多的数

java语言 善于使用Map类 有点像python里的字典

Map map1 = new HashMap();  //不声明键和键值

 Map<Integer, Integer> map=new HashMap<Integer, Integer>();  //声明键和键值

/**************************************************************/

package chen;

import java.util.HashMap;
import java.util.Map;

public class Hello {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int[] a = {1,2,3,4,2,1,4,2,5,6,2,1,4,4,4};
        Map<Integer,Integer> map = new HashMap<Integer,Integer>();
        for (int i=0;i<a.length;i++)
        {
            if (map.get(a[i])==null)
            {
                map.put(a[i], 1);
            }
            else
            {
                map.put(a[i], map.get(a[i])+1);
            }
        }
        
        int max=0,j=0;
        for (int i:map.keySet())    //非常好用的迭代
        {
            if (map.get(i)>max)
            {
                max = map.get(i);
                j = i;
            }        
        }
        System.out.println(j);    
    }
}
 

python语言:

l1 = [1,2,3,1,3,2,5,3,7,4,5]
dict1 = {}

for i in range(len(l1)):
    if not l1[i] in dict1:
        dict1[l1[i]] = 1
    else:
        dict1[l1[i]] += 1

print(dict1)
Max,sign=0,0
for i in dict1.keys():
    if dict1[i] > Max:
        Max = dict1[i]
        sign = i

print(sign,"    ",Max)
 

4.数组排序

python 排序  

l1 = [2,3,4,5,1,2]

l1.sort()

 

Java排序  //我使用的是冒泡法排序

package chen;

import java.util.HashMap;
import java.util.Map;

public class Hello {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int[] a = {1,2,3,4,2,1,4,2,5,6,2,1,4,4,4};
        int more = 0;
        for (int i=0;i<a.length;i++)
        {
            System.out.print(a[i]+" ");
        }
        
        for (int i=0;i<a.length-1;i++)
        {
            for (int j=0;j<a.length-1-i;j++)
            {                
                if (a[j] > a[j+1])
                {
                    more = a[j];
                    a[j] = a[j+1];
                    a[j+1] = more;
                }    
            }
            more = 0;
        }
    }
}
 

5.java实现 第一行输入数组长度,第二行输入操作次数,第三行输入数组,统计数组数字出现次数,后面依次

输入操作数,>0的操作数如果存在次数+1,<0的操作数如果存在次数-1,最后输出次数最大的值(重复就全输出)。
  

package chen;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Hello {

    public static void main(String[] args) {
        int sign = 0,count=0; //数组长度,操作次数
        Scanner in = new Scanner(System.in);
        sign = in.nextInt();
        count = in.nextInt();
        
        //构建数组
        int[] list = new int[sign];
        for (int i=0;i<sign;i++)
        {
            list[i] = in.nextInt();
        }
        
        //统计数组元素出现次数并写成Map形式
        Map<Integer,Integer> map = new HashMap<Integer,Integer>();
        for (int i=0;i<sign;i++)
        {
//            if (map.get(list[i])==null)
//            {
//                map.put(list[i], 1);
//            }
//            else
//                map.put(list[i], map.get(list[i])+1);
            mod_add(list[i],map);
        }
        
        //实现输入判断,>0键值-1,<0键值+1,并取出键出现次数最大值
        
        for (int i=0;i<count;i++)
        {
            if ((sign=in.nextInt())>0)
            {
//                if (map.get(sign)==null)
//                {
//                    map.put(sign, 1);
//                }
//                else
//                {
//                    map.put(sign, map.get(sign)+1);
//                }
                mod_add(sign,map);
            }
            
            else
            {
                sign = Math.abs(sign);
//                if (map.get(sign)==null)
//                {
//                    map.put(sign,-1);
//                }
//                else
//                {
//                    map.put(sign, map.get(sign)-1);
//                }        
                mod_minus(sign,map);
            }
            
            sign = 0;
            for (int j:map.keySet())
            {
                if (sign<map.get(j))
                {
                    sign = map.get(j); //知道出现次数最多值为多少
                }
            }
            for (int j:map.keySet())
            {
                if (sign==map.get(j))
                {
                    System.out.print(j+" ");
                }
            }
            
        }
        
        //找出出现最多的值 sign表示键值 count表示键
        
    }    
    
    //方法一
public static void mod_add(int a,Map<Integer,Integer> map)
    {
        if (map.get(a)==null)
        {
            map.put(a, 1);
        }
        else
        {
            map.put(a,map.get(a)+1);
        }
    }
    //    方法二
public static void mod_minus(int a,Map<Integer,Integer> map)
    {
        if (map.get(a)==null)
        {
            map.put(a,-1);
        }
        else
        {
            map.put(a,map.get(a)-1);
        }
    }
}
 

     

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值