①在矩阵中两个矩阵相乘②如何让一个15*15的矩阵,每次选取其中的5*5的矩阵求出平均数③用一个函数进行对数组进行输出。

1,对两个矩阵进行求积,这里主要使用了三个for循环。

public class T {
	static Scanner sr = new Scanner(System.in);
	static int n;//用静态方法相当于对数组进行存储。
	public static void main(String[] args) {
		System.out.println("请输入你要的矩阵大小");
	    n = sr.nextInt();
		 int[][] a = new int[n][n];
		 int[][] b = new int[n][n];
		 int[][] c = new int[n][n];
		System.out.println("请输入a矩阵内容");
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < n; j++) {
				a[i][j] = sr.nextInt();
			}
		}
		System.out.println("请输入b矩阵内容");
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < n; j++) {
				b[i][j] = sr.nextInt();
			}
		}
		for (int i = 0; i < n; i++) {
				for (int j = 0; j < n; j++) {
					c[i][j] = 0;
					for (int k = 0; k < n; k++)
						c[i][j] += a[i][k] * b[k][j];
				}
			}
		System.out.println("得到最后的相乘矩阵为");
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < n; j++) {
				System.out.print(c[i][j]+" ");
			}
			System.out.println();
		}
	}

2,让一个1515的矩阵,每次选取其中的55的矩阵求出平均数,并在此小矩阵中使大于平均数的置为1,小于的置为0,等于不管,使用的是递归。

public  class Text1 {
	static int[][] a = new int[15][15];
	public  void cr(int[][] a2) {
		int c=1;
		for(int i =0;i<a2.length;i++){
			for (int j = 0; j < a2[i].length; j++) {
			a2[i][j] = c;
			c++;
			System.out.println(a2[i][j]);
			}
		}
	}
	int b = 0;
	int c = 0;
	 void xz(int[][] a1) {
		int sum=0;
		for(int y=c;y<c+5;y++) {
		for(int i=b;i<b+5;i++) {
			sum+=a1[y][i];
		}
		}
		sum=sum/25;
		for(int y=c;y<c+5;y++) {
		for(int i=b;i<b+5;i++) {
			if(sum<a1[y][i]) {
				a1[y][i]=1;
			}else if(sum>a1[y][i]){
				a1[y][i]=0;
			}
		}
	}
		c+=5;	
		if(c==15)//主要判断是否走到了头,应该是走完了1,2,3这样的顺序该走4,5,6了,接下来就是把b给往下移了b+=5,也就走了4,5,6这样的了,也就接下来往下走了,当到两着都为15的时候也就是都走到头的时候,当然是把b+=5后用if来判断,成立后直接return了;当没有两者到最后,上面的b+=5;往下移的实现也就在于xz(a1)的递归调用了。
		{	
		b+=5;
		if(c==15&&b==15) {
			return;
		}
		c=0;
		}
		xz(a1);
}
public static void main(String[] args) {
	Text1 t=new Text1();
	t.cr(a);
	t.xz(a);
    for(int i =0;i<a.length;i++){
    for (int j = 0; j < a[i].length; j++) {
    System.out.println(" "+a[i][j]+" ");
         }
      }
   }	
}

这里所选取的矩阵是按照1,2,3,4,5,6选择的,这里其中包含5*5的矩阵。
在这里插入图片描述
3,定义一个函数返回一个数组,在main方法中进行接受:

public class HelloWorld {
	//import java.util.Arrays;
	//完成 main 方法
	static int[] scores={89,-23,64,91,119,52,73};
	static int n;
	public static void main(String[] args) {
	HelloWorld hello=new HelloWorld();
	int[] num1=hello.sco(scores);
	System.out.println("考试成绩前三名为:");
for (int i : num1) {
	System.out.println(i);
    }
	}
	//定义方法完成成绩后输出低于此成绩的分数。
	public int[] sco(int[] num){
	n=num.length;
	int[] score=new int[n];	
	System.out.println(num.length);
	for(int i=0;i<num.length;i++){
	if(num[i]<101){
	score[i]=num[i];
	}
	}
	return score; 
	}
	}
//1.数组定义的时候应该要初始化;
//2.数组越界;length所代表的是数组的长度,也不是该数组中最后一个数,
//因此调用的时候出现了数组越界。

结果为:
在这里插入图片描述
返回一个二维数组的时候为,剋以和上面进行对比看:

public static int[][] FangFa(int a[][]) {
    int b[][] = new int[a[0].length][a.length];
    for (int i = 0; i < a[0].length; i++) {
        for (int j = 0; j < a.length; j++) {
            b[i][j] = a[j][i];
        }
    }
    return b;
}

在c语言中进行对数组的输出:

#include <iostream>
 
using namespace std;
int ac1(int a,int b){
    int maxx,minn;
    maxx=a>b?a:b;
    minn=a<b?a:b;
    if(maxx%minn==0){
        return minn;
    }
    else return ac1(minn,maxx%minn);
}
int * ac(int x,int y,int a[2]);
 
int main()
{
    int s[2]={0};
    int a,b;
    cin>>a>>b;
    int *p;
    p=ac(a,b,s);
    cout<<ac1(a,b)<<endl;
    cout<<p[0]<<" "<<p[1]<<endl;
    return 0;
}
int * ac(int x,int y,int a[2]){
    int num=ac1(x,y);
    int num2=x*y/num;
    a[0]=num;
    a[1]=num2;
    return a;
}
/*
 //通过返回传入数组的指针的方式
#include"stdio.h"
#include<iostream>
using namespace std;
//定义指针函数
int *copy(int array[], int a[], int n);
int main(){
    int size = 4;
    int a2[4];
    int a1[4] = {3, 5, 7 ,8};
    int *p;
    p = copy(a1, a2, size);
    cout << p[0] << " " << p[1] << " "<<p[2] << " " << p[3] << endl;
    return 0;
}
int *copy(int array[], int a[], int n)
{
    for(int i = 0; i < n; i++)
        a[i] = array[i];
    return a;
}*/


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值