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;
}*/