请问能指点一下矩阵转置和矩阵相加吗?

我对矩阵的输入输出以及加减乘,转置,旋转的原理有些不明白,希望可以得到解答,谢谢!

1个回答

矩阵用二维数组表示,比如
int mat[2][2];
输入
for (int i = 0; i < 2; i++)
for (int j = 0; j < 2; j++)
scanf("%d", &mat[i][j]);
输出
for (int i = 0; i < 2; i++)
{
    for (int j = 0; j < 2; j++)
        printf("%d ", mat[i][j]);
    printf("\n");
}

运算:
用例子来说:
加
1 2
3 4
+
3 5
1 2
=
4 7
4 6
也就是相同位置的两个数字相加
减一样,因为你把第二个矩阵每个数字取负号,它其实也是+

乘法分为点乘和叉乘。
点乘就是对应位置乘,
1 2
3 4
.
3 5
1 2
=
3 10
3 8

叉乘(也叫做矩阵乘法)
第1个矩阵第m行x第2个矩阵第n列得到结果的和得到第m行第n个值。

1 2
3 4
x
3 5
1 2
=
5 9
13 23
也就是
(1*3)+(2*1)  (1*5)+(2*2)
(3*3)+(4*1)  (3*5)+(4*2)

转置就是旋转90度(行变列)
T
1 2
3 4
就是
1 3
2 4
代码实现:
https://blog.csdn.net/zjxxyz123/article/details/79049579
alwaysmissme
余五阳 谢谢您
7 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
稀疏矩阵应用(加法、乘法、转置)

要求用C++编写 实现三元组,十字链表下的稀疏矩阵的加、转、乘的实现。 (1)稀疏矩阵的存储 (2)稀疏矩阵加法 (3)矩阵乘法 (4)矩阵转置 求各位大神指点!!!求源代码,最好有注释

JAva Java 现有矩阵A和B,大小3*3,编写函数,两个矩阵相加,

Java 现有矩阵A和B,大小3*3,编写函数,两个矩阵相加,原型double【】【】,Add Mathix【】【】(doubleA【】doubleB【】)

用C语言编写矩阵求和的代码

矩阵求和,运行后显示A+B=C的形式,而不是A + B = C

用c语言,实现mpi中矩阵加法的并行处理

如何在VC中用mpi定义二维数组,实现数组相加的并行处理?希望高手们可以指点一二,感激不尽

三元组实现矩阵的加法

这个代码的运行结果和测试数据是一样的,但是总显示 数据错误,就是PE, 有大神知道这是为什么吗?代码如下: #include <stdio.h> #include <stdlib.h> #define MAXNUM 10000 typedef struct Triple { int item; int ha,li; }Triple; typedef struct Matrix { Triple data[MAXNUM]; int mu,nu,tu; }Matrix; void add(Matrix a,Matrix b) { int i,j,flag,k; for(i=0;i<a.tu;i++) { for(j=0,flag=0;j<b.tu;j++) { if(a.data[i].ha==b.data[j].ha&&a.data[i].li==b.data[j].li) { flag=1; b.data[j].item=a.data[i].item+b.data[j].item; break; } } if(flag==1) continue; //not found the same place if(flag==0) { for(j=0;j<b.tu;j++) { if(a.data[i].ha<b.data[j].ha) { for(k=b.tu-1;k>=j;k--) { b.data[k+1].item=b.data[k].item; b.data[k+1].ha=b.data[k].ha; b.data[k+1].li=b.data[k].li; } b.data[j].ha=a.data[i].ha; b.data[j].li=a.data[i].li; b.data[j].item=a.data[i].item; b.tu++; break; } else if(a.data[i].ha==b.data[j].ha) { if(a.data[i].li<b.data[j].li) { for(k=b.tu-1;k>=j;k--) { b.data[k+1].item=b.data[k].item; b.data[k+1].ha=b.data[k].ha; b.data[k+1].li=b.data[k].li; } b.data[j].ha=a.data[i].ha; b.data[j].li=a.data[i].li; b.data[j].item=a.data[i].item; b.tu++; break; } else continue; } else if(a.data[i].ha>b.data[j].ha) continue; else if(j==b.tu-1&&a.data[i].ha>b.data[j].ha) { b.data[j+1].ha=a.data[i].ha; b.data[j+1].li=a.data[i].li; b.data[j+1].item=a.data[i].item; b.tu++; break; } } } } for(i=0;i<b.tu;i++) { if(i!=b.tu-1) printf("%d %d %d\n",b.data[i].ha,b.data[i].li,b.data[i].item); else printf("%d %d %d",b.data[i].ha,b.data[i].li,b.data[i].item); } return ; } int main() { Matrix a,b; a.mu=a.nu=100; b.mu=b.nu=100; scanf("%d %d",&a.tu,&b.tu); int i; for(i=0;i<a.tu;i++) scanf("%d %d %d",&a.data[i].ha,&a.data[i].li,&a.data[i].item); for(i=0;i<b.tu;i++) scanf("%d %d %d",&b.data[i].ha,&b.data[i].li,&b.data[i].item); add(a,b); return 0; }

c++编程来定义一个矩阵

用c++编程语言来定义一个矩阵的类,要求矩阵的几行几列自己定义,但重点是要实现矩阵的加法重载

用十字链表实现矩阵的A=A+B

C语言,希望能给出完整的源程序,在下感激不尽,希望哪位大神能够相助,在下感谢万分!

初学习mpi 各线程单独计算出一个矩阵 不知如何传输 请大家帮忙!

DO 700 I=1,NPOINT ! IF(INFB.EQ.1) THEN AMN=SIN(KM*(A+X(I)))*SIN(KN*(B+Y(I))) ! ELSE ! AMN=cos(KM*(A+X(I)))*cos(KN*(B+Y(I))) ! ENDIF DO 750 L=1,LAY+1 S(L,I)=S(L,I)+AMN*FAI(L) 750 CONTINUE 700 CONTINUE 1 continue u=1 do I=1,NPOINT do L=1,LAY+1 p(U)=s(L,I) u=u+1 enddo enddo ! final ITAG=110 IF (MYID.NE.0) THEN KOUNT=GCOUNT(MYID) IDEST=0 Mcount=L*I CALL MPI_SEND ( p(U),Mcount, MPI_REAL8, IDEST, ITAG, & & COMM, IERR) ELSE DO ISRC=1,NPROC-1 ISTART1=GSTART(ISRC) KOUNT1=GCOUNT(ISRC) CALL MPI_RECV ( p(U),Mcount, MPI_REAL8, ISRC, ITAG, & & COMM, ISTATUS, IERR) ENDDO ENDIF 这是其中的一部分 想问下大家应该怎么传输这样一个完整的矩阵

c语言编程问题:编写两个函数,求一个3*3矩阵对角线元素之和。

请大佬解答一下,编写两个函数,求一个_3*3矩阵对角线元素之和_。

新人求助,对稀疏矩阵进行基本操作时进行两矩阵相加的最后一个输出始终出错?

#include<iostream> using namespace std; #define OK 1 #define ERROR 0 #define maxsize 100 typedef int Elemtype; typedef int Status; typedef struct { int i, j; Elemtype e; }Triple; typedef struct { Triple data[maxsize + 1]; int mu, nu, tu; }TSMatrix; Status CreateTriple(TSMatrix& T) { cout << " 请输入稀疏矩阵的行数,列数和非零元个数:" << endl; cin >> T.mu >> T.nu >> T.tu; cout << "请依次输入" << T.tu << "个元素所处的行数,列数和值:" << endl; for (int i = 1; i <= T.tu; i++) { cin >> T.data[i].i >> T.data[i].j >> T.data[i].e; } return OK; } Status TransposeTSMatrix(TSMatrix T, TSMatrix& Q) { Q.mu = T.nu; Q.nu = T.mu; Q.tu = T.tu; if (Q.tu) { int q = 1; for (int col = 1; col <= T.nu; col++) //col为列标 for (int p = 1; p <= T.mu; p++) if (T.data[p].j == col) { Q.data[q].i = T.data[p].j; Q.data[q].j = T.data[p].i; Q.data[q].e = T.data[p].e; q++; } }return OK; } Status AddTSMatrix(TSMatrix T, TSMatrix Q, TSMatrix& A) { if (T.mu != Q.mu || T.nu != Q.nu) { cout << "两矩阵行数或列数不相等,无法相加!" << endl; return ERROR; } A.mu = T.mu; A.nu = T.nu; A.tu = T.tu + Q.tu; int mtu = 1, ntu = 1, k = 1; int x; while (mtu <= T.tu && ntu <= Q.tu) { //若T的行数与Q的行数相同 if (T.data[mtu].i == Q.data[ntu].i) { if (T.data[mtu].j < Q.data[ntu].j) //若T的列标小于Q的列标 { A.data[k].i = T.data[mtu].i; // 将T中的非零元素赋给A A.data[k].j = T.data[mtu].j; A.data[k].e = T.data[mtu].e; k++; mtu++; } else if (T.data[mtu].j > Q.data[ntu].j) //若T的列标大于Q的列标 { A.data[k].i = Q.data[ntu].i; // 将Q中的非零元素赋给A A.data[k].j = Q.data[ntu].j; A.data[k].e = Q.data[ntu].e; k++; ntu++; } else { //若T的列标等于Q的列标 //当两矩阵某一位置行列相同且元素非零,则将两非零元素相加 x = T.data[mtu].e + Q.data[ntu].e; if (x != 0) { A.data[k].i = T.data[mtu].i; A.data[k].j = T.data[mtu].j; // 将T中的非零元素赋给A A.data[k].e = x; k++; } mtu++; ntu++; } } else if (T.data[mtu].i < Q.data[ntu].i) //若T的行标小于Q的行标相同 { A.data[k].i = T.data[mtu].i; A.data[k].j = T.data[mtu].j; // 将T中的非零元素赋给A A.data[k].e = T.data[mtu].e; k++; mtu++; } else //若T的行标大于Q的行标相同 { A.data[k].i = Q.data[ntu].i; // 将Q中的非零元素赋给A A.data[k].j = Q.data[ntu].j; A.data[k].e = Q.data[ntu].e; k++; ntu++; } } while (ntu < Q.tu) //当Q中有元素剩余时 { A.data[k].i = Q.data[ntu].i; // 将T中的非零元素赋给A A.data[k].j = Q.data[ntu].j; A.data[k].e = Q.data[ntu].e; k++; ntu++; } A.tu = k; //A(相加后的矩阵)的非零元素个数 return OK; } Status PrintTSMatrix(TSMatrix T) { cout << "稀疏矩阵的行数,列数及非零元个数为:" << T.mu << " " << T.nu << " " << T.tu << endl; cout << "矩阵中的非零元素为:" << endl; for (int i = 1; i <= T.tu; i++) { cout << "(" << T.data[i].i << "," << T.data[i].j << "," << T.data[i].e << ")" << endl; } return OK; } int main() { TSMatrix T, Q, A; int n; cout << "|-----------------------------|" << endl; cout << "|1------------创建一个稀疏矩阵|" << endl; cout << "|2------------------矩阵的转置|" << endl; cout << "|3----------------两个矩阵相加|" << endl; cout << "|-----------------------------|" << endl; cout << "请输入操作数:" << endl; cin >> n; if (n < 0 || n>3) { cout << "无效操作!请重新输入!" << endl; cin >> n; } else while (n > 0 && n < 4) { switch (n) { case 1: CreateTriple(T); cout << "构造稀疏矩阵完成!矩阵如下:" << endl; PrintTSMatrix(T); cout << "如需继续操作,请输入操作码:" << endl; cin >> n; break; case 2: cout << "请先输入待转置的矩阵:" << endl; CreateTriple(T); TransposeTSMatrix(T, Q); cout << "转置后的矩阵为:" << endl; PrintTSMatrix(Q); cout << "如需继续操作,请输入操作码:" << endl; cin >> n; break; case 3: cout << "请输待第一个稀疏矩阵:" << endl; CreateTriple(T); cout << "请输入第二个稀疏矩阵:" << endl; CreateTriple(Q); AddTSMatrix(T, Q, A); cout << "相加后的矩阵为:" << endl; PrintTSMatrix(A); cout << "如需继续操作,请输入操作码:" << endl; cin >> n; break; } } } ![图片说明](https://img-ask.csdn.net/upload/201911/17/1573962601_259153.png)

用不带参数的构造函数,怎么进行矩阵运算

老师给我留的作业。急!!! 题目如下: 设计一个矩阵类,重载其加、减、乘运算符,实现矩阵的相加、相减、相乘,并用Windows Form程序进行测试。 要求: 1)定义一个一维数组,用于存储矩阵的值。 2)定义两个私有成员变量存储矩阵行列值。 3)定义带有set\get访问器的两个属性,对行列值变量进行设置。 4)定义一个索引器返回指定某行某列的矩阵的元素,索引器只有get访问器。 5)定义一个不带参构造函数,根据输入行列属性值随机创建矩阵,随机值为(1-100之间的数)。 6)定义+,-,*的重载方法,实现两个矩阵的相加、相减、相乘。 7)定义一个方法,实现矩阵的转置。 **问题:** 1.一个不带参数的构造函数,怎么能让数组的行列数自定义呢?怎么可以对矩阵进行各种运算呢? 2.求大神帮帮忙,写个完整的代码我看看。头凸

求各位大神帮我看看这个稀疏矩阵应用的C++代码

#include<stdio.h> #include<stdlib.h> #include<malloc.h> #define MAXSIZE 100 int num[100]; typedef struct OLNode{ int i,j; int e; struct OLNode *right,*down; }OLNode,*OLink; typedef struct { int mu,nu,tu; OLink *rhead,*chead; }CrossList; int CreateSMatix_OL(CrossList &M){ int i,j,e; OLink q; OLink p; printf("请输入稀疏矩阵的行数,列数,非零元素的个数:\n"); scanf("%d%d%d",&M.mu,&M.nu,&M.tu); M.rhead=(OLink *)malloc((M.mu+1)*sizeof(OLNode)); M.chead=(OLink *)malloc((M.nu+1)*sizeof(OLNode)); for( i=1; i<=M.mu; i++)M.rhead[i]=NULL; for( i=1; i<=M.nu; i++)M.chead[i]=NULL; printf("请输入元素的行 列 值。最后输入0 0 0为结束\n"); scanf("%d%d%d",&i,&j,&e); while(i!=0){ p=(OLink)malloc(sizeof(OLNode)); p->i=i; p->j=j; p->e=e; if(M.rhead[i]==NULL||M.rhead[i]->j>j){p->right=M.rhead[i]; M.rhead[i]=p; } else{ q=M.rhead[i]; while(q->right&&q->right->j<j)q=q->right; p->right=q->right; q->right=p; } if(M.chead[j]==NULL||M.chead[j]->i>i){p->down=M.chead[j]; M.chead[j]=p; } else{ q=M.chead[j]; while(q->down&&q->down->i<i)q=q->down; p->down=q->down; q->down=p; } scanf("%d%d%d",&i,&j,&e); } return 1; }//创建十字链表 int Compare(int a1,int b1,int a2,int b2){ if(a1>a2)return 1; else if(a1<a2)return -1; else if(b1>b2)return 1; if(b1<b2)return -1; else return 0; } int SMatrix_ADD(CrossList *A,CrossList *B){ OLNode *pa,*pb,*pre,*p,*cp[100]; int i,j,t; t=A->tu+B->tu; for(j=1; j<=A->nu; j++)cp[j]=A->chead[j]; for(i=1; i<=A->mu; i++){ pa=A->rhead[i]; pb=B->rhead[i]; pre=NULL; while(pb) { if(pa==NULL||pa->j>pb->j) { p=(OLink)malloc(sizeof(OLNode)); if(!pre)A->rhead[i]=p; else pre->right=p; p->right=pa; pre=p; p->i=i; p->j=pb->j; p->e=pb->e; if(!A->chead[p->j]){ A->chead[p->j]=cp[p->j]=p; p->down=NULL; } else{ cp[p->j]->down=p; cp[p->j]=p; } pb=pb->right; } else if(pa->j<pb->j){pre=pa; pa=pa->right; } else if(pa->e+pb->e) { t--; pa->e+=pb->e; pre=pa; pa=pa->right; pb=pb->right; } else { t=t-2; if(!pre)A->rhead[i]=pa->right; else pre->right=pa->right; p=pa; pa=pa->right; if(A->chead[p->j]==p)A->chead[p->j]=cp[p->j]=p->down; else cp[p->j]->down=p->down; free(p); pb=pb->right; } } } A->mu=A->mu>B->mu?A->mu:B->mu; A->nu=A->nu>B->nu?A->nu:B->nu; return 1; } //十字链表相加 int ShowMAtrix(CrossList *A){ int col; OLink p; for(col=1;col<=A->mu;col++) if(A->rhead[col]){p=A->rhead[col]; while(p){printf("%3d%3d%3d\n",p->i,p->j,p->e); p=p->right; } } return 1; } //十字链表显示 int MultSMatrix_OL(CrossList M, CrossList N, CrossList &Q) { int i, j, e; //中间变量 OLink p0, q0, p, pl, pla; //中间变量 //检查稀疏矩阵M的列数和N的行数是否对应相等 if(M.nu != N.mu) { printf ( "稀疏矩阵A的列数和B的行数不相等,不能相乘。\n" ); return 0; } Q.mu = M.mu, Q.nu = N.nu, Q.tu = 0; if(!(Q.rhead = (OLink *)malloc((Q.mu + 1) * sizeof(OLink)))) exit(-2); if(!(Q.chead = (OLink *)malloc((Q.nu + 1) * sizeof(OLink)))) exit(-2); for(i = 1; i <= Q.mu; i++) Q.rhead[i] = NULL; for(i = 1; i <= Q.nu; i++) Q.chead[i] = NULL; //稀疏矩阵相乘 for(i =1; i <= Q.mu; i++) for(j = 1; j <= Q.nu; j++) { p0 = M.rhead[i], q0 = N.chead[j], e = 0; while(p0&&q0) { if( p0->j > q0->i) q0 = q0->down; //M的列大于N的行,则N的列指针后移 if(p0->j < q0->i) p0 = p0->right; //M的列小于N的行,则M的行指针右移 else { e += p0->e * q0->e; q0 = q0->down, p0 = p0->right; //移动指针 } } if(e)//乘积不为0 { if(!(p = (OLink)malloc(sizeof(OLNode)))) exit(-2); Q.tu++; //非零元素增加 p->i = i, p->j = j, p->e = e, p->right = NULL, p->down = NULL; //赋值,指针后移 //将p插入十字链表 //行插入 if(Q.rhead[i] == NULL) //若p为该行的第1个结点 Q.rhead[i] = pl = p; //p插在该行的表头且pl指向p(该行的最后一个结点) else pl->right = p, pl = p; //插在pl所指结点之后,pl右移 //列插入 if(Q.chead[j] == NULL) //若p为该列的第一个点 Q.chead[j] = p; //该列的表头指向p else { pla = Q.chead[j]; //pla指向j行的第1个结点 while(pla->down) pla = pla->down; //pla指向j行最后一个结点 pla->down = p; } } } return 1; } }}//十字链表相乘 void TurnSMatrix_OL(CrossList &M) { int col,row; OLink p,q; for(col=1; col<=M.mu; col++) { q=p=M.rhead[col]; while(q){ row=p->i; p->i=p->j; p->j=row; q=p->right; p->right=p->down; p->down=q; } } }//十字链表转置 int DestroySMatrix_OL(CrossList &M) { int i; //中间变量 OLink p, q; //中间变量 if(!M.rhead || !M.chead) return 1; //M不存在 else {//M存在 if(M.chead)//所有列链表头指针置为空 for(i = 1; i <= M.nu; i++) M.chead[i] = NULL; if(M.rhead)//按行释放节点 for(i = 1; i <= M.mu; i++) { p = M.rhead[i]; while(p) { q = p, p = p->right; free(q); } } //释放行和列链表头指针指向基址 free(M.rhead); free(M.chead); //返回 return 1; } }//十字链表销毁 int main(){ int n,i; //TSMatrix M,T,S; CrossList MM,TT,SS; printf("请你选择操作:\n1:创建稀疏矩阵。\n2:退出\n(1|2):"); scanf("%d",&n); switch(n){ case 1:{CreateSMatix_OL(MM); ShowMAtrix(&MM); printf("已经选择创建稀疏矩阵,请选择操作\n 1:稀疏矩阵转置\n 2:稀疏矩阵相加\n 3:稀疏矩阵相乘\n 4:退出\n(1|2|3|4):"); scanf("%d",&i); switch(i){ case 1: TurnSMatrix_OL(MM); ShowMAtrix(&MM); break; case 2: printf("请你输入另一个稀疏矩阵:"); CreateSMatix_OL(TT); SMatrix_ADD(&MM,&TT); ShowMAtrix(&MM); break; case 3:printf("请你输入另一个稀疏矩阵:"); CreateSMatix_OL(TT); MultSMatrix_OL(MM,TT,SS); ShowMAtrix(&SS); break; case 4:exit(0); }}; break; case 2:exit(0); default :printf("erorr"); } } 编译没问题 但就是输出不了。有可能是十字链表显示那段代码出错

数据结构程序设计上机题

实验六 稀疏矩阵 实验目的: 1. 理解稀疏矩阵的设计目的和设计思想; 2.掌握稀疏矩阵存储结构和基本操作的实现方法; 3.思考稀疏矩阵实现数学运算的方法。 实验内容: 实现稀疏矩阵,并为其设计演示系统。 实现要求: 存储结构采用三元组顺序表或十字链表,基本操作包括初始化、销毁、转置和矩阵打印。 稀疏矩阵的输入形式采用三元组表示,而运算结果以通常的阵列形式列出。 主程序用于验证各基本操作的正确性; 演示系统以用户和计算机对话的方式执行,实现过程为: 循环提示用户选择“命令”,主程序执行相应操作; 直至用户选择“退出”操作; 系统提供给用户的命令包括:t(转置)、a(相加)、m(相乘)、x(退出)。

C++课程设计,急!!!!

1:定义两个二维数组用于存放矩阵 2:输入/输出:输入带运算的两个矩阵,输出运算结果 3:矩阵加:判断两个矩阵是否可以相加,如可以,计算两个矩阵之和,结果输出 4,5,6减乘除条件同3 7:矩阵转置:计算每个矩阵的转置,结果输出 求乘除运算程序,谢谢

求大神看看这个程序哪里出问题了

#include<stdio.h> #define M 20 #define N 20 double A[M][N],B[M][N],C[M][N]; int i,j,m,n,p,q,k; int main() { printf("******************************************************************\n"); printf("###########欢迎您使用矩阵函数系统.##########\n"); printf("##########系统功能:##########\n"); while(1) { printf("#####请选择您需要的运算,按回车结束.#####\n"); printf("***1. 矩阵相加\n"); printf("***2. 矩阵相减\n"); printf("***3. 矩阵相乘\n"); printf("***4. 单矩阵转置\n"); printf("***5. 退出\n"); printf("******************************************************************\n"); int a; scanf("%d",&a); if(a==5) break; switch(a) { case 1: { printf("请输入矩阵A的行数和列数(用逗号隔开):"); scanf("%d,%d",&i,&j); printf("请输入矩阵B的行数和列数(用逗号隔开):"); scanf("%d,%d",&m,&n); if(i!=m||j!=n) { printf("***对不起,您输入两个矩阵不能相加,请重试.***\n"); printf ("请重新输入矩阵B的行数和列数(用逗号隔开):\n"); scanf("%d,%d",&m,&n); } printf("请输入矩阵A:\n"); for(p=0;p<i;p++) { for(q=0;q<j;q++) scanf("%lf",&A[p][q]); } printf("输出矩阵A:\n"); for(p=0;p<i;p++) { for(q=0;q<j;q++) { printf("%10.2lf",A[p][q]); if((q+1)%j==0) printf("\n"); } } printf("请输入矩阵B:\n"); for(p=0;p<i;p++) { for(q=0;q<j;q++) scanf("%lf",&B[p][q]); } printf("输出矩阵B:\n"); for(p=0;p<i;p++) { for(q=0;q<j;q++) { printf("%10.2lf",B[p][q]); if((q+1)%j==0) { printf("\n"); } } } printf("矩阵A+矩阵B为:\n"); for(p=0;p<i;p++) { for(q=0;q<j;q++) C[p][q]=A[p][q]+B[p][q]; } for(p=0;p<i;p++) { for(q=0;q<j;q++) { printf("%10.2lf",C[p][q]); if((q+1)%j==0) { printf("\n"); } } } };break; case 2: { printf("请输入矩阵A的行数和列数(用逗号隔开):"); scanf("%d,%d",&i,&j); printf("请输入矩阵B的行数和列数(用逗号隔开):"); scanf("%d,%d",&m,&n); if(i!=m||j!=n) { printf("***对不起,您输入两个矩阵不能相加,请重试.***\n"); printf ("请重新输入矩阵B的行数和列数(用逗号隔开):\n"); scanf("%d,%d",&m,&n); } printf("请输入矩阵A:\n"); for(p=0;p<i;p++) { for(q=0;q<j;q++) scanf("%lf",&A[p][q]); } printf("输出矩阵A:\n"); for(p=0;p<i;p++) { for(q=0;q<j;q++) { printf("%10.2lf",A[p][q]); if((q+1)%j==0) { printf("\n"); } } } printf("请输入矩阵B:\n"); for(p=0;p<i;p++) { for(q=0;q<j;q++) scanf("%lf",&B[p][q]); } printf("输出矩阵B:\n"); for(p=0;p<i;p++) { for(q=0;q<j;q++) { printf("%10.2lf",B[p][q]); if((q+1)%j==0) { printf("\n"); } } } printf("矩阵A-矩阵B为:\n"); for(p=0;p<i;p++) { for(q=0;q<j;q++) C[p][q]=A[p][q]-B[p][q]; } for(p=0;p<i;p++) { for(q=0;q<j;q++) { printf("%10.2lf",C[p][q]); if((q+1)%j==0) { printf("\n"); } } } };break; case 3: { printf("请输入矩阵A的行数和列数(用逗号隔开):"); scanf("%d,%d",&i,&j); printf("请输入矩阵B的行数和列数(用逗号隔开):"); scanf("%d,%d",&m,&n); if( j != m) { printf("***对不起,您输入两个矩阵不能相乘,请重试.***\n"); printf ("请重新输入矩阵B的行数和列数(用逗号隔开):\n"); scanf("%d,%d",&m,&n); } printf("请输入矩阵A:\n"); for(p=0;p<i;p++) { for(q=0;q<j;q++) scanf("%lf",&A[p][q]); } printf("输出矩阵A:\n"); for(p=0;p<i;p++) { for(q=0;q<j;q++) { printf("%10.2lf",A[p][q]); if((q+1)%j==0) { printf("\n"); } } } printf("请输入矩阵B:\n"); for(p=0;p<i;p++) { for(q=0;q<j;q++) scanf("%lf",&B[p][q]); } printf("输出矩阵B:\n"); for(p=0;p<i;p++) { for(q=0;q<j;q++) { printf("%10.2lf",B[p][q]); if ((q+1)%j==0) { printf("\n"); } } } printf("矩阵A*矩阵B为:\n"); for(p=0;p<i;p++) { for(q=0;q<n;q++) { C[p][q]=0; for(k=0;k<j;k++) { C[p][q]+=A[p][k]*B[k][q]; } } } for(p=0;p<i;p++) { for(q=0;q<n;q++) { printf("%10.2lf",C[p][q]); if((q+1)%n==0) { printf("\n"); } } } } ;break; case 4: { printf("请输入矩阵A的行数和列数(用逗号隔开):"); scanf("%d,%d",&i,&j); printf("请输入矩阵A:\n"); for(p=0;p<i;p++) { for(q=0;q<j;q++) scanf("%lf",&A[p][q]); } printf("输出矩阵A:\n"); for(p=0;p<i;p++) { for(q=0;q<j;q++) { printf("%10.2lf",A[p][q]); if((q+1)%j==0) { printf("\n"); } } } for(p=0;p<i;p++) { for(q=0;q<j;q++) B[q][p]=A[p][q]; } printf("输出矩阵A的转置矩阵:\n"); for(p=0;p<j;p++) { for(q=0;q<i;q++) { printf("%10.2lf",B[p][q]); if((q+1)%i==0) { printf("\n"); } } } };break; case 5: ;break; default: printf("\n********您选择错误,请重试.********\n"); break; } } printf("#########再次感谢您使用本系统,合作愉快!############"); printf("\n"); printf("******************************************************************\n"); return 0; }![图片说明](https://img-ask.csdn.net/upload/201606/26/1466934082_187277.jpg)

菜单式系统求大佬帮忙更改

稀疏矩阵的每个结点包含down,right,row,col和value五个域。用单独一个结点表示一个非零项,并将所有结点连接在一起,形成两个循环链表。使得第一个表即行表,把所有结点按照行序(同一行内按列序)用right域链接起来。使得第二个表即列表,把所有结点按照列序(同一列内按行序)用down链接起来。这两个表共用一个头结点。另外,增加一个包含矩阵维数的结点。稀疏矩阵的这种存储表示称为完全链表表式。 实现一个完全链表系统进行稀疏矩阵运算,并分析下列操作函数的计算时间和额外存储空间的开销。 认识和掌握稀疏矩阵的完全链表表示;能够建立并运用这种存储结构 建立一个用户友好、菜单式系统进行下列操作,并使用合当的测试数据测试该系统。 (a) 读取一个稀疏矩阵建立其完全链表表示 (b) 输出一个稀疏矩阵的内容 (c) 删除一个稀疏矩阵 (d) 两个稀疏矩阵相加 (e) 两个稀疏矩阵相减 (f) 两个稀疏矩阵相乘 (g) 稀疏矩阵的转置![图片说明](https://img-ask.csdn.net/upload/201812/24/1545641300_687295.png) 链表上的操作。 #include"pch.h" #include<stdio.h> #include<stdlib.h> #include<iostream> #include<process.h> #define OK 1 #define ERROR 0 #define _CRT_SECURE_NO_WARNINGS using namespace std; typedef int ElemType; struct OLNode { int i, j; //非零元所在行、列 ElemType e;//非零元值 OLNode *right, *down; }; typedef OLNode *OLink; struct CrossList { OLink *rhead, *chead;//行、列表头的头节点 int mu, nu, tu;//矩阵的行、列和非零元个数 }; int Create(CrossList &M) { int i, j, k, m, n, t; ElemType e; OLNode *p, *q; cout<<"请输入稀疏距阵的行数 列数 非零元的个数:"; cin >> m >> n >> t;//scanf("%d%d%d" ,&m, &n, &t); M.mu = m; M.nu = n; M.tu = t; M.rhead = (OLink*)malloc((m + 1) * sizeof(OLink)); if (!M.rhead) exit(OVERFLOW); M.chead = (OLink*)malloc((n + 1) * sizeof(OLink)); if (!M.chead) exit(OVERFLOW); for (k = 0; k != m; k++)//初始化行头指针 M.rhead[k] = NULL; for (k = 0; k != n; k++)//初始化列头指针 M.chead[k] = NULL; printf("请按任意次序输入%d个非零元的行 列 元素值:\n", M.tu); for (k = 0; k < t; k++) { scanf_s("%d%d%d", &i, &j, &e); if (i > m || j > n) { printf("你输入的元素不在矩阵中 请检查重输:\n"); exit(OVERFLOW); } else { p = (OLNode*)malloc(sizeof(OLNode)); if (!p) exit(OVERFLOW); p->i = i; p->j = j; p->e = e; if (M.rhead[i] == NULL || M.rhead[i]->j > j)//p插入该行第一节点处 { p->right = M.rhead[i]; M.rhead[i] = p; } else//寻找行表插入位置 { for (q = M.rhead[i]; q->right&&q->right->j < j; q = q->right); p->right = q->right;//完成行插入 q->right = p; } if (M.chead[j] == NULL || M.chead[j]->i > i)//p插入该列第一节点处 { p->down = M.chead[j]; M.chead[j] = p; } else//寻找列表插入位置 { for (q = M.chead[j]; q->down&&q->down->i < i; q = q->down); p->down = q->down;//完成列插入 q->down = p; } } } return OK; } int Print(CrossList M) { int i, j, k; OLink p; int array[100][100]; for (i = 0; i != M.mu; i++) { for (j = 0; j != M.nu; j++) { array[i][j] = 0;//初始化数组所需部分 } } for (k = 0; k != M.nu; k++) { p = M.chead[k]; while (p) { array[p->i][p->j] = p->e;//将非零元存入数组中 p = p->down; } } for (i = 0; i != M.mu; i++) { for (j = 0; j != M.nu; j++) { if (j == M.nu - 1) cout << array[i][j] << endl; else cout << array[i][j] << " ";//以矩阵的显示方式显示稀疏矩阵 } } return OK; } int Add(CrossList M, CrossList N, CrossList &Q) { int i, k; OLink p, pq, pm, pn; OLink *col; pq=NULL;//******************************************************************************************** Q.mu = M.mu;//初始化Q Q.nu = M.nu; Q.tu = 0; Q.rhead = (OLink*)malloc((Q.mu + 1) * sizeof(OLink)); if (!Q.rhead) exit(OVERFLOW); Q.chead = (OLink*)malloc((Q.nu + 1) * sizeof(OLink)); if (!Q.chead) exit(OVERFLOW); for (k = 0; k != Q.mu; k++)//初始化行 Q.rhead[k] = NULL; for (k = 0; k != Q.nu; k++)//初始化列 Q.chead[k] = NULL; col = (OLink*)malloc((Q.nu + 1) * sizeof(OLink));//生成指向列的最后节点的数组 if (!col) exit(OVERFLOW); for (k = 0; k != Q.nu; k++)//赋初始值 col[k] = NULL; for (i = 0; i != M.mu; i++)//按行序相加 { pm = M.rhead[i]; pn = N.rhead[i]; while (pm&&pn) { if (pm->j < pn->j)//矩阵M当情前结点的列小于矩阵N当前结点的列 { p = (OLink)malloc(sizeof(OLNode));//生成Q的结点 if (!p) exit(OVERFLOW); Q.tu++; //非零元个数+1 p->i = i; //赋值 p->j = pm->j; p->e = pm->e; p->right = NULL; pm = pm->right; //pm右移 } else if (pm->j > pn->j) { p = (OLink)malloc(sizeof(OLNode)); if (!p) exit(OVERFLOW); Q.tu++; p->i = i; p->j = pn->j; p->e = pn->e; p->right = NULL; pn = pn->right; } else if (pm->e + pn->e)//M,N当前结点的列相同并且两元素之和非零 { p = (OLink)malloc(sizeof(OLNode)); if (!p) exit(OVERFLOW); Q.tu++; p->i = i; p->j = pn->j; p->e = pm->e + pn->e; p->right = NULL; pm = pm->right;//pm右移 pn = pn->right;//pn右移 } else//两元素相加为零 { pm = pm->right; pn = pn->right; continue; } if (Q.rhead[i] == NULL) Q.rhead[i] = pq = p; else { pq->right = p;//完成行插入 pq = pq->right; } if (Q.chead[p->j] == NULL) Q.chead[p->j] = col[p->j] = p; else { col[p->j]->down = p;//完成列插入 col[p->j] = col[p->j]->down; } } while (pm)//将矩阵M该行的剩余元素插入矩阵Q { p = (OLink)malloc(sizeof(OLNode)); if (!p) exit(OVERFLOW); Q.tu++; p->i = i; p->j = pm->j; p->e = pm->e; p->right = NULL; pm = pm->right; if (Q.rhead[i] == NULL) Q.rhead[i] = pq = p; else { pq->right = p; pq = pq->right; } if (Q.chead[p->j] == NULL) Q.chead[p->j] = col[p->j] = p; else { col[p->j]->down = p; col[p->j] = col[p->j]->down; } } while (pn)//将矩阵N该行的剩余元素插入矩阵Q { p = (OLink)malloc(sizeof(OLNode)); if (!p) exit(OVERFLOW); Q.tu++; p->i = i; p->j = pn->j; p->e = pn->e; p->right = NULL; pn = pn->right; if (Q.rhead[i] == NULL) Q.rhead[i] = pq = p; else { pq->right = p; pq = pq->right; } if (Q.chead[p->j] == NULL) Q.chead[p->j] = col[p->j] = p; else { col[p->j]->down = p; col[p->j] = col[p->j]->down; } } } for (k = 0; k != Q.nu; k++) if (col[k]) col[k]->down = NULL; free(col); return OK; } CrossList Negative(CrossList M) { OLink p; for (int j = 0; j != M.mu; j++) { p = M.rhead[j]; while (p) { p->e = -p->e;//将非零元的值反号 p = p->right; } } return (M); } int Mult(CrossList M, CrossList N, CrossList &Q) { int i, j, e; OLink q, p0, q0, q1, q2; q1 = NULL; if (M.nu != N.mu) { printf("你输入的两个距阵不能进行此操作\n"); exit(OVERFLOW); } else { Q.mu = M.mu; Q.nu = N.nu; Q.tu = 0; Q.rhead = (OLink*)malloc((Q.mu + 1) * sizeof(OLink)); if (!Q.rhead) exit(OVERFLOW); Q.chead = (OLink*)malloc((Q.nu + 1) * sizeof(OLink)); if (!Q.chead) exit(OVERFLOW); for (i = 0; i != Q.mu; i++)//初始化行 Q.rhead[i] = NULL; for (i = 0; i != Q.nu; i++)//初始化列 Q.chead[i] = NULL; for (i = 0; i != Q.mu; i++) for (j = 0; j != Q.nu; j++) { p0 = M.rhead[i]; q0 = N.chead[j]; e = 0; while (p0&&q0) { if (q0->i < p0->j) q0 = q0->down;//列后移 else if (q0->i > p0->j) p0 = p0->right;//行后移 else { e = e + p0->e*q0->e;//乘积累加 q0 = q0->down; p0 = p0->right;//行列后移 } } if (e)//e不为零则插入Q { Q.tu++; q = (OLink)malloc(sizeof(OLNode)); if (!q) exit(OVERFLOW); q->i = i; q->j = j; q->e = e; q->right = NULL; q->down = NULL; if (!Q.rhead[i]) Q.rhead[i] = q1 = q; else q1 = q1->right = q; if (!Q.chead[j]) Q.chead[j] = q; else { q2 = Q.chead[j]; while (q2->down) q2 = q2->down; q2->down = q; } } } return OK; } } int main() { CrossList A, B, C;//声明三各矩阵 int Select; cout << "请选择你需要的操作" << endl; cout << "1 加法" << endl; cout << "2 减法" << endl; cout << "3 乘法" << endl; cin >> Select; switch (Select) { case 1://稀疏矩阵相加 { Create(A); Create(B); cout << "你输入的是" << endl; Print(A); cout << "加上" << endl; Print(B); Add(A, B, C); cout << "结果是" << endl; Print(C); break; } case 2://稀疏矩阵相减 { Create(A); Create(B); cout << "你输入的是" << endl; Print(A); cout << "减去" << endl; Print(B); Negative(B); Add(A, B, C); cout << "结果是" << endl; Print(C); break; } case 3://稀疏矩阵相乘 { Create(A); Create(B); cout << "你输入的是" << endl; Print(A); cout << "乘以" << endl; Print(B); Mult(A, B, C); cout << "结果是" << endl; Print(C); break; } } } ``` ```

Java int二维数组值的变化

下面这段程序,为什么再次输出a的值的时候,已经变成了c的值了?有点诡异 public class Test { public final int TYPE_ADD = 1; /** * 矩阵类,实现n阶矩阵的加、乘、转置运算 * * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int[][] a = { { 1, 2 }, { 2, 3 } }; int[][] b = { { 4, 5 }, { 6, 7 } }; Test m = new Test(); System.out.println("输出原始矩阵a:"); for (int i = 0; i < a.length; i++) { for (int j = 0; j < a[i].length; j++) { System.out.print(a[i][j] + "\t"); } System.out.println(); } System.out.println("两矩阵相加:"); int[][] r = m.matrix_add(a, b); for (int i = 0; i < r.length; i++) { for (int j = 0; j < r[i].length; j++) { System.out.print(r[i][j] + "\t"); } System.out.println(); } System.out.println("再次输出原始矩阵a:"); for (int i = 0; i < a.length; i++) { for (int j = 0; j < a[i].length; j++) { System.out.print(a[i][j] + "\t"); } System.out.println(); } } // 矩阵相加 public int[][] matrix_add(int[][] a, int[][] b) { int[][] c = a; if (inputLegal(a, b, TYPE_ADD)) {// 只有同型矩阵才能相加 for (int i = 0; i < a.length; i++) {// i控制行 for (int j = 0; j < a[i].length; j++) {// j控制列 c[i][j] = a[i][j] + b[i][j]; } } } return c; } // 矩阵类型校验 public boolean inputLegal(int[][] a, int[][] b, int type) { boolean flag = true; if (type == TYPE_ADD) { if (a.length != b.length || a[0].length != b[0].length) { flag = false;// 判断是否为同型矩阵 } } return flag; } } ``` ```

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

CSDN:因博主近期注重写专栏文章(已超过150篇),订阅博主专栏人数在突增,近期很有可能提高专栏价格(已订阅的不受影响),提前声明,敬请理解!

CSDN:因博主近期注重写专栏文章(已超过150篇),订阅博主专栏人数在突增,近期很有可能提高专栏价格(已订阅的不受影响),提前声明,敬请理解! 目录 博客声明 大数据了解博主粉丝 博主的粉丝群体画像 粉丝群体性别比例、年龄分布 粉丝群体学历分布、职业分布、行业分布 国内、国外粉丝群体地域分布 博主的近期访问每日增量、粉丝每日增量 博客声明 因近期博主写专栏的文章越来越多,也越来越精细,逐步优化文章。因此,最近一段时间,订阅博主专栏的人数增长也非常快,并且专栏价

我说我不会算法,阿里把我挂了。

不说了,字节跳动也反手把我挂了。

培训班出来的人后来都怎么样了?(二)

接着上回说,培训班学习生涯结束了。后面每天就是无休止的背面试题,不是没有头脑的背,培训公司还是有方法的,现在回想当时背的面试题好像都用上了,也被问到了。回头找找面试题,当时都是打印下来天天看,天天背。 不理解呢也要背,面试造飞机,上班拧螺丝。班里的同学开始四处投简历面试了,很快就有面试成功的,刚开始一个,然后越来越多。不知道是什么原因,尝到胜利果实的童鞋,不满足于自己通过的公司,嫌薪水要少了,选择...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

工作八年,月薪60K,裸辞两个月,投简历投到怀疑人生!

近日,有网友在某职场社交平台吐槽,自己裸辞两个月了,但是找工作却让自己的心态都要崩溃了,全部无果,不是已查看无回音,就是已查看不符合。 “工作八年,两年一跳,裸辞两个月了,之前月薪60K,最近找工作找的心态崩了!所有招聘工具都用了,全部无果,不是已查看无回音,就是已查看不符合。进头条,滴滴之类的大厂很难吗???!!!投简历投的开始怀疑人生了!希望 可以收到大厂offer” 先来看看网...

97年世界黑客编程大赛冠军作品(大小仅为16KB),惊艳世界的编程巨作

这是世界编程大赛第一名作品(97年Mekka ’97 4K Intro比赛)汇编语言所写。 整个文件只有4095个字节, 大小仅仅为16KB! 不仅实现了3D动画的效果!还有一段震撼人心的背景音乐!!! 内容无法以言语形容,实在太强大! 下面是代码,具体操作看最后! @echo off more +1 %~s0|debug e100 33 f6 bf 0 20 b5 10 f3 a5...

不要再到处使用 === 了

我们知道现在的开发人员都使用 === 来代替 ==,为什么呢?我在网上看到的大多数教程都认为,要预测 JavaScript 强制转换是如何工作这太复杂了,因此建议总是使用===。这些都...

什么是a站、b站、c站、d站、e站、f站、g站、h站、i站、j站、k站、l站、m站、n站?00后的世界我不懂!

A站 AcFun弹幕视频网,简称“A站”,成立于2007年6月,取意于Anime Comic Fun,是中国大陆第一家弹幕视频网站。A站以视频为载体,逐步发展出基于原生内容二次创作的完整生态,拥有高质量互动弹幕,是中国弹幕文化的发源地;拥有大量超粘性的用户群体,产生输出了金坷垃、鬼畜全明星、我的滑板鞋、小苹果等大量网络流行文化,也是中国二次元文化的发源地。 B站 全称“哔哩哔哩(bilibili...

终于,月薪过5万了!

来看几个问题想不想月薪超过5万?想不想进入公司架构组?想不想成为项目组的负责人?想不想成为spring的高手,超越99%的对手?那么本文内容是你必须要掌握的。本文主要详解bean的生命...

MySQL性能优化(五):为什么查询速度这么慢

前期回顾: MySQL性能优化(一):MySQL架构与核心问题 MySQL性能优化(二):选择优化的数据类型 MySQL性能优化(三):深入理解索引的这点事 MySQL性能优化(四):如何高效正确的使用索引 前面章节我们介绍了如何选择优化的数据类型、如何高效的使用索引,这些对于高性能的MySQL来说是必不可少的。但这些还完全不够,还需要合理的设计查询。如果查询写的很糟糕,即使表结构再合理、索引再...

用了这个 IDE 插件,5分钟解决前后端联调!

点击上方蓝色“程序猿DD”,选择“设为星标”回复“资源”获取独家整理的学习资料!作者 |李海庆我是一个 Web 开发前端工程师,受到疫情影响,今天是我在家办公的第78天。开发了两周,...

大厂的 404 页面都长啥样?最后一个笑了...

每天浏览各大网站,难免会碰到404页面啊。你注意过404页面么?猿妹搜罗来了下面这些知名网站的404页面,以供大家欣赏,看看哪个网站更有创意: 正在上传…重新上传取消 腾讯 正在上传…重新上传取消 网易 淘宝 百度 新浪微博 正在上传…重新上传取消 新浪 京东 优酷 腾讯视频 搜...

【高并发】高并发秒杀系统架构解密,不是所有的秒杀都是秒杀!

网上很多的文章和帖子中在介绍秒杀系统时,说是在下单时使用异步削峰来进行一些限流操作,那都是在扯淡! 因为下单操作在整个秒杀系统的流程中属于比较靠后的操作了,限流操作一定要前置处理,在秒杀业务后面的流程中做限流操作是没啥卵用的。

自从喜欢上了B站这12个UP主,我越来越觉得自己是个废柴了!

不怕告诉你,我自从喜欢上了这12个UP主,哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看,可是吧,看的越多,我就越觉得自己是个废柴,唉,老天不公啊,不信你看看…… 间接性踌躇满志,持续性混吃等死,都是因为你们……但是,自己的学习力在慢慢变强,这是不容忽视的,推荐给你们! 都说B站是个宝,可是有人不会挖啊,没事,今天咱挖好的送你一箩筐,首先啊,我在B站上最喜欢看这个家伙的视频了,为啥 ,咱撇...

代码注释如此沙雕,会玩还是你们程序员!

某站后端代码被“开源”,同时刷遍全网的,还有代码里的那些神注释。 我们这才知道,原来程序员个个都是段子手;这么多年来,我们也走过了他们的无数套路… 首先,产品经理,是永远永远吐槽不完的!网友的评论也非常扎心,说看这些代码就像在阅读程序员的日记,每一页都写满了对产品经理的恨。 然后,也要发出直击灵魂的质问:你是尊贵的付费大会员吗? 这不禁让人想起之前某音乐app的穷逼Vip,果然,穷逼在哪里都是...

Java14 新特性解读

Java14 已于 2020 年 3 月 17 号发布,官方特性解读在这里:https://openjdk.java.net/projects/jdk/14/以下是个人对于特性的中文式...

爬虫(101)爬点重口味的

小弟最近在学校无聊的很哪,浏览网页突然看到一张图片,都快流鼻血。。。然后小弟冥思苦想,得干一点有趣的事情python 爬虫库安装https://s.taobao.com/api?_ks...

疫情后北上广深租房价格跌了吗? | Alfred数据室

去年3月份我们发布了《北上广深租房图鉴》(点击阅读),细数了北上广深租房的各种因素对租房价格的影响。一年过去了,在面临新冠疫情的后续影响、城市尚未完全恢复正常运转、学校还没开学等情况下...

面试官给我挖坑:a[i][j] 和 a[j][i] 有什么区别?

点击上方“朱小厮的博客”,选择“设为星标”后台回复&#34;1024&#34;领取公众号专属资料本文以一个简单的程序开头——数组赋值:int LEN = 10000; int[][] ...

又一起程序员被抓事件

就在昨天互联网又发生一起让人心酸的程序员犯罪事件,著名的百度不限速下载软件 Pandownload PC 版作者被警方抓获。案件大致是这样的:软件的作者不仅非法盗取用户数据,还在QQ群进...

应聘3万的职位,有必要这么刁难我么。。。沙雕。。。

又一次被面试官带到坑里面了。面试官:springmvc用过么?我:用过啊,经常用呢面试官:springmvc中为什么需要用父子容器?我:嗯。。。没听明白你说的什么。面试官:就是contr...

太狠了,疫情期间面试,一个问题砍了我5000!

疫情期间找工作确实有点难度,想拿到满意的薪资,确实要点实力啊!面试官:Spring中的@Value用过么,介绍一下我:@Value可以标注在字段上面,可以将外部配置文件中的数据,比如可以...

Intellij IDEA 美化指南

经常有人问我,你的 IDEA 配色哪里搞的,我会告诉他我自己改的。作为生产力工具,不但要顺手而且更要顺眼。这样才能快乐编码,甚至降低 BUG 率。上次分享了一些 IDEA 有用的插件,反...

【相亲】96年程序员小哥第一次相亲,还没开始就结束了

颜值有点高,条件有点好

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

一图看完本文 一、 计算机网络体系结构分层 计算机网络体系结构分层 计算机网络体系结构分层 不难看出,TCP/IP 与 OSI 在分层模块上稍有区别。OSI 参考模型注重“通信协议必要的功能是什么”,而 TCP/IP 则更强调“在计算机上实现协议应该开发哪种程序”。 二、 TCP/IP 基础 1. TCP/IP 的具体含义 从字面意义上讲,有人可能会认为...

腾讯面试题: 百度搜索为什么那么快?

我还记得去年面腾讯时,面试官最后一个问题是:百度/google的搜索为什么那么快? 这个问题我懵了,我从来没想过,搜素引擎的原理是什么 然后我回答:百度爬取了各个网站的信息,然后进行排序,当输入关键词的时候进行文档比对……巴拉巴拉 面试官:这不是我想要的答案 我内心 这个问题我一直耿耿于怀,终于今天,我把他写出来,以后再问,我直接把这篇文章甩给他!!! 两个字:倒排,将贯穿整篇文章,也是面试官...

你怎么看欧阳娜娜空降阿里p8?

前段时间 欧阳娜娜空降阿里P8被骂上热搜 有网友调侃道: 名牌大学毕业的研究生 要在阿里没日没夜、加班加点、 全年无休奋斗5年,才可能有机会 和20岁的欧阳娜娜一起喝下午茶…… 本来嘛,大厂✖明星的营销无可厚非 那是什么让撸代码N年的程序员愤愤不平呢? 还不是因为升到P8真的太难了! 这是很多阿里人甚至互联网人遥不可及的梦想! 阿里P8到底有多牛? 根据知乎大V@半佛仙人透露的情况: 阿里P8基本上要求研究生 5 年以上经验,本科 7 年以上经验; P8 一般去小公司就是各种 O,一般公司(非国企、.

程序员因没转发公司内容,被领导扣500,辞职后:加了三行代码

现如今,程序员在一二线城市可谓是非常的抢手,毕竟年薪那么多,一般在工作了几年之后,程序员想要攒到一套房子的首付是不成问题的,所以一些大龄的女青年在相亲的时候要把程序员当成了首选。但表面上看起来风光的程序员,背地里也受了非常多的委屈,最近有一名程序员没有转发公司的内容到朋友圈被领导扣了500块,当他辞职了之后,却非常淡定。 从个这个帖子中,我们可以看出这名程序员的情绪还是比较激动的,因为没有转发公司的内容到朋友圈,就要被罚款500块,这是非常不合理,换做是别人也不肯接受,而且三次没有转发就要被劝退,这是什么

相关热词 c# 开发接口 c# 中方法上面的限制 c# java 时间戳 c#单元测试入门 c# 数组转化成文本 c#实体类主外键关系设置 c# 子函数 局部 c#窗口位置设置 c# list 查询 c# 事件 执行顺序
立即提问
相关内容推荐