C语言调用函数实现矩阵自乘

各位前辈,小弟新学C语言,怎么也调试不过,不知道哪里出了问题,请问我该怎么调试?
调用void SelfMul(int A1[][3],int A2[][3],int n)实现3阶矩阵的乘法

#include
//void SelfMul(int A1[][maxSize],int A2[][maxSize],int n)
void SelfMul(int A1[][3],int A2[][3],int n)
{
int s=0;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
A2[i][j]=0;
for(int k=0;k<n;k++)
A2[i][j]=A2[i][j]+A1[i][k]*A1[k][j];
printf("%d ",A2[i][j]);
if(++s%3==0)printf("\n");
}
}
int main()
{
int A1[][3]={{0,1,0},{0,0,1},{1,1,0}};
int A2[3][3];
// int s=0;
SelfMul(A1[][3],A2[][3],3); //编译问题出错提示所在行
/*
for(int m=0;m<3;m++)
for(int b=0;b<3;b++)
{
printf("%d ",A2[m][b]);
if(++s%3==0)printf("\n");
}
*/
return 0;
}

编译不通过,提示error C2059: syntax error : ']'

c
suannai0314
鹳狸媛 楼主的这个问题解决了么?下边的答案能解决问题么?如果可以麻烦点击答案旁的√采纳哦~如果没有也可以将自己的答案贴上然后进行采纳的。
6 年多之前 回复

3个回答

标准的[]里面应该是有值的
你试试这个编译应该不会出错,但是运行就不知道了

enter code here  #include <stdio.h>

void SelfMul(int A1[][3],int A2[][3],int n);
void SelfMul(int A1[][3],int A2[][3],int n)
{
int s=0;
for(int i=0; i<n; i++)
for(int j=0; j<n; j++)
{
A2[i][j]=0;
for(int k=0; k<n; k++)
A2[i][j]=A2[i][j]+A1[i][k]*A1[k][j];
printf("%d ",A2[i][j]);
if(++s%3==0)printf("\n");
}
}
int main()
{
int A1[][3]= {{0,1,0},{0,0,1},{1,1,0}};
int A2[3][3];
int s = 0;
SelfMul(A1[3][3],A2[3][3],3);
for(int m=0; m<3; m++)
for(int b=0; b<3; b++)
{
printf("%d ",A2[m][b]);
if(++s%3==0)printf("\n");
}

return 0;

}

你好,如上面那面仁兄所回!
就是在调用函数的时候,只需要调用SelfMul(A1, A2, 3);就可以了
解释:
若传递进去的参数为A1[3][3],根据数组的规则,
那么这只是这个数组中的一个元素
而且已经越界了(数组下标从0开始)

而函数只希望传进一个n行3列的二给数组,
所以此时只需传递这两个二维数组的数组名就可以了!

其它并没有检查!

对您的建议,注意缩进和空格!

void SelfMul(int A1[][3], int A2[][3], int n)
{
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
A2[i][j] = 0;
for(int k = 0; k < n; k++)
A2[i][j] = A2[i][j] + A1[i][k] * A1[k][j];
printf("%d ", A2[i][j]);
}
printf("\n");
}
}
int main()
{
int A1[][3]= {{0, 1, 0}, {0, 0, 1}, {1, 1, 0}};
int A2[3][3];
SelfMul(A1, A2, 3);
/*
for(int m = 0; m < 3; m++)
{
for(int b = 0; b < 3; b++)
{
printf("%d ", A2[m][b]);
}
printf("\n");
}
*/
return 0;
}

代码格式已经改变了!

SelfMul(A1,A2,3);

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
各位大佬们,本人智商捉鸡,一个CUDA并行规约的问题想了好几天了绕不过来,求指导!!!
**这是我在网上找的一个CUDA求最值的核函数,把它调通了之后可以正常获取到最大值。 现在就是一个5000行1024列的一个矩阵,通过cuda并行规约可以计算输出每一行的最值,最后文件保存输出的是5000个最值,每一行数据的最值。 但是我想要的是每一个最值所对应的索引值,即矩阵下标值,我尝试了很多方法都不行,因为并行规约的问题,下标值一直变,没办法得到最初的行序列中的最大值对应的索引值。 但现在我想获取到每一个最值对应的索引值,但就是怎么该都获取不到,各位大佬可不可以给点想法,该怎么改啊, 对于我来说,只有最大值对应的真实索引下标值才是真正有用的数据。 下面的代码可以直接复制运行。** ``` #include<math.h> #include<cuda_runtime_api.h> #include "device_launch_parameters.h" #include<stdio.h> #include<stdlib.h> #include<time.h> #include <cuComplex.h> #include <device_functions.h> #include <cuda_runtime.h> //#include <cufft.h> #define Height 5000 #define Width 1024 const int N = Height * Width; const int threadsPerBlock = 1024; const int blocksPerGrid = (N + threadsPerBlock - 1) / threadsPerBlock; #define SAVE_FILE_PATH "F:\\GPU-Reduce-partialMax_device_Result.txt" __global__ void findMaxOfMatrix(double Mat_device[Height][Width], double partialMax_device[Height]) { //申请共享内存,存在于每个block中(GTX1060的共享内存为48KB) __shared__ double partialMax[threadsPerBlock]; //确定索引 int id = threadIdx.x + blockIdx.x * blockDim.x; int tid = threadIdx.x; //double MaxValue[threadsPerBlock]; //int index; //传global memory数据到shared memory partialMax[tid] = Mat_device[id / Width][id % Width]; //传输同步 __syncthreads(); //在共享存储器中进行规约 for (int stride = blockDim.x / 2; stride > 0; stride >>= 1)//右移一位相当于除了个2 { __syncthreads(); if (tid < stride) { if (partialMax[tid] < partialMax[tid + stride]) { int temp = partialMax[tid]; partialMax[tid] = partialMax[tid + stride]; partialMax[tid + stride] = temp; } __syncthreads(); } } //将当前block的计算结果写回输出数组 if (tid == 0) { //partialMax_device[blockIdx.x] = index; partialMax_device[blockIdx.x] = partialMax[0]; } } int main() { float time1; cudaEvent_t start1, stop1; cudaEventCreate(&start1); cudaEventCreate(&stop1); //申请host端内存及初始化,获得随机值 double(*Mat_host)[Width] = new double[Height][Width]; double *partialMax_host = new double[blocksPerGrid]; //构建一个 Height 行 Width 列的数组矩阵 for (int i = 0; i < Height; ++i) for (int j = 0; j < Width; j++) Mat_host[i][j] = (rand() % 2020) + 1; //分配Device空间矩阵 double(*Mat_device)[Width]; double *partialMax_device; cudaMalloc((void**)&Mat_device, N * sizeof(double)); cudaMalloc((void**)&partialMax_device, blocksPerGrid*sizeof(double)); //int *index; //cudaMalloc((void**)&index, blocksPerGrid * sizeof(double)); //int window_slide_num = blocksPerGrid; cudaEventRecord(start1, 0); //把数据从Host传到Device cudaMemcpy(Mat_device, Mat_host, N * sizeof(double), cudaMemcpyHostToDevice); //调用内核函数 findMaxOfMatrix << <blocksPerGrid, threadsPerBlock >> >(Mat_device, partialMax_device); //将结果传回到主机端 cudaMemcpy(partialMax_host, partialMax_device, sizeof(double)*blocksPerGrid, cudaMemcpyDeviceToHost); //将部分和继续作对比,求最大值 /*double max = 0.0; for (int i = 0; i < blocksPerGrid; i++) { if (max < partialMax_host[i]) { max = partialMax_host[i]; } }*/ cudaEventRecord(stop1, 0); cudaEventSynchronize(stop1); //printf("\n\n maxNum:%5.5lf ", max); cudaEventElapsedTime(&time1, start1, stop1); printf("\n The time of calculating is : %f ms\n", time1); //创建一个用于读写的空文件,如果文件名称与已存在的文件相同,则会删除已有文件的内容,文件被视为一个新的空文件 FILE* fp; char file[128] = { 0 }; sprintf(file, SAVE_FILE_PATH); fp = fopen(file, "w+"); if (fp == NULL){ printf("保存数据的文件创建失败!\n"); return 0; } else { printf("\n正在保存数据,请稍等.....\n"); } for (int i = 0; i < blocksPerGrid; i++) { fprintf(fp, "%5.5lf\n", partialMax_host[i]);//将数据格式化写入stream文件流中 } fclose(fp); printf("\n文件保存完成!\n\n"); double max = 0.0; for (int i = 0; i < blocksPerGrid; i++) { if (max < partialMax_host[i]) { max = partialMax_host[i]; } } printf("\n\n maxNum:%5.5lf ", max); //释放显空间 system("pause"); cudaFree(Mat_device); cudaFree(partialMax_device); free(Mat_host); free(partialMax_host); return 0; } ```
c语言编程时出现错误为:1.#QNAN0000000,麻烦大佬们看一下问题出在哪儿了,感谢
![图片说明](https://img-ask.csdn.net/upload/201911/11/1573471041_542290.png) # 数值分析大作业 ## c语言 这个是数值分析大作业,我是按照书上一步一步编写的,前366行都是没问题的,问题就出在双步位移QR分解那里,但是我真的无能为力了,感谢大佬们相救,感谢。 ``` 代码如下:(有些printf是我测试用的) #include<stdio.h> #include<math.h> const int n=10,L=10; double err=1e-12; //定义主函数 int main() { int i,j; double A[n][n],B[n][n]; //B[][]是为保证矩阵A(n-1)[][]不被破坏的中间矩阵 //调用函数声明 void faketriangle(double a[n][n]); //构造拟上三角化矩阵函数 void QR(double a[n][n]); void doublestepQR(double a[n][n]); printf("矩阵A为:\n"); //定义矩阵A for(i=0;i<n;i++) { for(j=0;j<n;j++) { if(i==j) { A[i][j]=1.52*cos(1+i+1.2*(1+j)); }else { A[i][j]=sin(0.5*(1+i)+0.2*(1+j)); } printf("%0.12f\t",A[i][j]); } printf("\n"); } printf("\n"); printf("矩阵A(n-1)为:\n"); //调用构造拟上三角化矩阵函数A(n-1) faketriangle(A); for(i=0;i<n;i++) { for(j=0;j<n;j++) { B[i][j]=A[i][j]; } } printf("\n"); printf("矩阵A(n-1)分解为QR矩阵\n"); QR(A); printf("\n"); doublestepQR(B); } //构造拟上三角化矩阵函数A(n-1) 函数主体 void faketriangle(double a[n][n]) { int i,j,r; double sum,d,c,h,t; double u[n],w[n],q[n],p[n]; //算法开始迭代 for(r=0;r<n-2;r++) { sum=0; for(i=r+2;i<n;i++) { sum+=fabs(a[i][r]); } //判断是否满足a[i][r]=0(i=r+2,..,n)? if(sum>0) { sum=0; //计算d for(i=r+1;i<n;i++) { sum+=a[i][r]*a[i][r]; } d=sqrt(sum); //计算c if(a[r+1][r]>0) { c=-d; }else { c=d; } //计算h h=c*c-c*a[r+1][r]; //向量u[r]的建立 for(i=0;i<n;i++) { if(i<r+1) { u[i]=0; }else if(i==r+1) { u[i]=a[i][r]-c; }else { u[i]=a[i][r]; } // printf("%0.12f\n",u[i]); } //求解向量p for(i=0;i<n;i++) { sum=0; for(j=0;j<n;j++) { sum+=a[j][i]*u[j]; } p[i]=sum/h; // printf("%0.12f\n",p[i]); } // //求解矩阵q for(i=0;i<n;i++) { sum=0; for(j=0;j<n;j++) { sum+=a[i][j]*u[j]; } q[i]=sum/h; // printf("%0.12f\n",q[i]); } //求t sum=0; for(i=0;i<n;i++) { sum+=p[i]*u[i]; } t=sum/h; // printf("%0.12f\n",t); //求w[] for(i=0;i<n;i++) { w[i]=q[i]-t*u[i]; // printf("%0.12f\n",w[l]); } //求a(r+1) for(i=0;i<n;i++) { for(j=0;j<n;j++) { a[i][j]=a[i][j]-(w[i]*u[j]+u[i]*p[j]); // printf("%0.12f\t",a[i][j]); } // printf("\n"); } } } //输出矩阵A(n-1) for(i=0;i<n;i++) { for(j=0;j<n;j++) { printf("%0.12f\t",a[i][j]); } printf("\n"); } } //将 A(n-1)矩阵进行QR分解 void QR(double a[n][n]) { int i,j,k,r; double sum,d,c,h; double Q[n][n],u[n],w[n],p[n],R[n][n],b[n][n]; //定义矩阵Q[][] for(i=0;i<n;i++) { for(j=0;j<n;j++) { if(i==j) { Q[i][j]=1; }else { Q[i][j]=0; } // printf("%0.12f\t",Q[i][j]); } // printf("\n"); } // printf("\n"); //算法迭代 for(r=0;r<n-1;r++) { sum=0; for(i=r+1;i<n;i++) { sum+=fabs(a[i][r]); } if(sum>0) { //计算d sum=0; for(i=r;i<n;i++) { sum+=a[i][r]*a[i][r]; } d=sqrt(sum); //计算c if(a[r][r]>0) { c=-d; }else { c=d; } //计算h h=c*(c-a[r][r]); //构造向量u[] for(i=0;i<n;i++) { if(i<r) { u[i]=0; }else if(i==r) { u[i]=a[i][r]-c; }else { u[i]=a[i][r]; } } //计算w[] for(i=0;i<n;i++) { sum=0; for(j=0;j<n;j++) { sum+=Q[i][j]*u[j]; } w[i]=sum; } //计算Q(r+1) for(i=0;i<n;i++) { for(j=0;j<n;j++) { Q[i][j]=Q[i][j]-w[i]*u[j]/h; } } //计算P[] for(j=0;j<n;j++) { sum=0; for(i=0;i<n;i++) { sum+=a[i][j]*u[i]/h; } p[j]=sum; } //计算a[r+1] for(i=0;i<n;i++) { for(j=0;j<n;j++) { a[i][j]=a[i][j]-u[i]*p[j]; } } } } printf("Q矩阵为:\n"); //输出Q[][]、R[][] for(i=0;i<n;i++) { for(j=0;j<n;j++) { printf("%0.12f\t",Q[i][j]); } printf("\n"); } printf("\n"); printf("R矩阵为:\n"); for(i=0;i<n;i++) { for(j=0;j<n;j++) { R[i][j]=a[i][j]; printf("%0.12f\t",R[i][j]); } printf("\n"); } printf("RQ相乘后的矩阵为:\n"); //求解R[][]*Q[][] for(i=0;i<n;i++) { for(j=0;j<n;j++) { sum=0; for(k=0;k<n;k++) { sum+=R[i][k]*Q[k][j]; } b[i][j]=sum; printf("%0.12f\t",b[i][j]); } printf("\n"); } // printf("QR相乘后的矩阵为:\n"); // //求解Q[][]*R[][] // for(i=0;i<n;i++) // { // for(j=0;j<n;j++) // { // sum=0; // for(k=0;k<n;k++) // { // sum+=Q[i][k]*R[k][j]; // } // b[i][j]=sum; // printf("%0.12f\t",b[i][j]); // } // printf("\n"); // } } //以上没问题 //定义复数结构体 struct complex { double re; double im; }; //对A(n-1)进行双步位移的QR分解 void doublestepQR(double a[n][n]) { //M[][]QR分解函数声明 void MQR(double a[n][n],double M[n][n],int m); int i,j,k,m,r,l; double A[n][n],M[n][n],I[n][n],A2[n][n]; double x,y,z,sum; double s,t; struct complex lambda[n]; struct complex s1,s2; k=0;m=n-1; step3: if(fabs(a[m][m-1])<=err) { lambda[m].re=a[m][m]; lambda[m].im=0; m--; goto step4; }else { goto step5; } step4: if(m==0) { lambda[m].re=a[0][0]; lambda[m].im=0; goto step11; }else if(m==-1) { goto step11; }else { goto step3; } step5: x=a[m-1][m-1]+a[m][m]; y=a[m-1][m-1]*a[m][m]-a[m-1][m]*a[m][m-1]; z=x*x-4*y; if(z>=0) { z=sqrt(z); s1.re=(x+z)/2; s1.im=0; s2.re=(x-z)/2; s2.im=0; }else { z=sqrt(fabs(z)); s1.re=(x)/2; s1.im=(z)/2; s2.re=x/2; s2.im=(-z)/2; } step6: if(m==1) { lambda[m].re=s1.re; lambda[m].im=0; lambda[m-1].re=s2.re; lambda[m-1].im=s2.im; goto step11; }else { goto step7; } step7: if(fabs(a[m-1][m-2])<=err) { if(z>=0) { lambda[m-1].re=(x+sqrt(z))/2; //两个特征值 lambda[m-1].im=0; lambda[m-2].re=(x-sqrt(z))/2; lambda[m-2].im=0; }else { lambda[m-1].re=(x)/2; lambda[m-1].im=(sqrt(fabs(z)))/2; lambda[m-2].re=x/2; lambda[m-2].im=(-sqrt(fabs(z)))/2; } m=m-2; goto step4; }else { goto step8; } step8: if(k==L) { goto step12; }else { goto step9; } step9: // for(i=0;i<m;i++) // { // for(j=0;j<m;j++) // { // a[i][j]=a[i][j]; // } // } s=a[m-1][m-1]+a[m][m]; t=a[m-1][m-1]*a[m][m]-a[m][m-1]*a[m-1][m]; //定义矩阵I[][] for(i=0;i<m;i++) { for(j=0;j<m;j++) { if(i==j) { I[i][j]=1; }else { I[i][j]=0; } } } // printf("%M[][]为:\n"); //计算矩阵M[][] for(i=0;i<m;i++) { for(j=0;j<m;j++) { sum=0; for(l=0;l<m;l++) { sum+=a[i][l]*a[l][j]; } M[i][j]=sum-s*a[i][j]+t*I[i][j]; printf("%0.12f\t",M[i][j]); } printf("\n"); } printf("\n"); //调用M[][]QR分解、计算A(k+1)的函数 MQR(a,M,m); step10: k++; goto step3; step11: printf("特征值已计算完毕。\n"); for(i=0;i<n;i++) { printf("%0.12f+%0.12fi\n",lambda[i].re,lambda[i].im); } for(i=0;i<n;i++) { if(lambda[i].im==0) { // vector(); } } step12: printf("未得到所有特征值。\n"); } //M[][]QR分解、计算A(k+1)的函数 void MQR(double a[n][n],double M[n][n],int m) { int i,j,r; double sum,d,c,h,t; double B[n][n],C[n][n],p[n],q[n],v[n],w[n],u[n]; printf("B:\n"); for(i=0;i<m;i++) { for(j=0;j<m;j++) { B[i][j]=M[i][j]; printf("%f\t",B[i][j]); } printf("\n"); } for(i=0;i<m;i++) { for(j=0;j<m;j++) { C[i][j]=a[i][j]; } } //循环计算矩阵A(k+1) for(r=0;r<m;r++) //r的范围 { sum=0; for(i=r+1;i<m;i++) { sum+=fabs(B[i][r]); } printf("sum:\n"); printf("%0.12f\n",sum); //sum有问题 printf("\n\n\n"); printf("r:%d\n\n\n\n\n",r); if(sum>0) { //计算d sum=0; for(i=r;i<m+1;i++) { sum+=B[i][r]*B[i][r]; printf("B:%0.12f\n",B[i][r]); //B[][]? printf("\n"); } printf("sum:%0.12f\n",sum); //sum有问题 fiest!! printf("\n"); d=sqrt(sum); printf("%0.12f\n",d); //d有问题 printf("\n"); //计算c if(B[r][r]>0) { c=-d; }else { c=d; } printf("%0.12f\n",c); //c有问题 printf("\n"); //计算h h=c*(c-B[r][r]); printf("%0.12f\n",h); //h有问题 printf("\n"); //构造向量u[] for(i=0;i<m;i++) { if(i<r) { u[i]=0; }else if(i==r) { u[i]=B[i][r]-c; }else { u[i]=B[i][r]; } } //计算v[] for(i=0;i<m;i++) { sum=0; for(j=r;j<m;j++) { sum+=B[j][i]*u[j]; } v[i]=sum/h; } //计算B(r+1) for(i=0;i<m;i++) { for(j=0;j<m;j++) { B[i][j]=B[i][j]-u[i]*v[j]; } } //计算p[] for(i=0;i<m;i++) { sum=0; for(j=r;j<m;j++) { sum+=C[j][i]*u[j]; } p[i]=sum/h; } //计算q[] for(i=0;i<m;i++) { sum=0; for(j=r;j<m;j++) { sum+=C[i][j]*u[j]; } q[i]=sum/h; } //计算t sum=0; for(i=r;i<m;i++) { sum+=p[i]*u[i]; } t=sum/h; //计算w[] for(i=0;i<m;i++) { w[i]=q[i]-t*u[i]; } //计算C[r+1] for(i=0;i<m;i++) { for(j=0;j<m;j++) { C[i][j]=C[i][j]-w[i]*u[j]-u[i]*p[j]; } } }else { ; } } for(i=0;i<m;i++) { for(j=0;j<m;j++) { a[i][j]=C[i][j]; printf("%f\t",a[i][j]); } printf("\n"); } } ```
c语言课程设计分油问题
输入三个油瓶容量与目标容量, 用邻接矩阵求它的最短路径 ,先判断两点间有没有路 最短路是什么, 调用邻接矩阵函数求 。
如何实现python程序和C++程序的交互?
现在有一个项目的程序是用C++写的,它是一个游戏,这部分的代码比较多,有很多类和函数,然后我想用python训练神经网络作为这个游戏的AI。训练过程怎么说实现和C++游戏的数据通信呢? 如果用python调用C++,网上的一些方法只能调用一些简单的函数,调用类还会很复杂,而且我需要的不是调用一些写死的模块,是要连接两个程序。比如说,C++这边的游戏输出一个盘面状态的矩阵,python网络接受这些数据输出一个Action的矩阵,C++游戏接受这个Action矩阵之后程序内部进行裁决改变盘面状态的矩阵再输给python程序。 我需要实现的就是这么一个数据交互,而且希望速度比较快。 将神经网络用于强化学习和一些决策问题的时候,是不是模型都得用python来写呢?如果编程语言不同,训练起来是不是很慢?
VS2013+Intel Fortran+Cublas
您好,在下fortran新手一枚.很冒昧的想向您请教一个fortran的问题。 概括来说是从fortran中调用c函数的问题。我的开发环境是VS2013+Intel fortran。我想在fortran中调用cublas库(Nvidia的一个使用GPU进行矩阵运算的c语言库)。 一般来说我们可以在fortran中定义如下的interface来调用c函数: ``` Interface integer function c_test( m ) BIND (C, NAME="Test") use iso_c_binding integer :: m end function end interface ``` 而cublas官方提供了interface来给fortran调用c函数,但是interface被定义在c文件中,例如fortran.c。如下: ``` typedef size_t devptr_t; #if defined(__cplusplus) extern "C" { #endif /* __cplusplus */ int CUBLAS_INIT (void); int CUBLAS_SHUTDOWN (void); int CUBLAS_ALLOC (const int *n, const int *elemSize, devptr_t *devicePtr); int CUBLAS_FREE (const devptr_t *devicePtr); .... .... .... #if defined(__cplusplus) } #endif /* __cplusplus */ ``` 我在网上没有找到相关的知识,我想问的是 (1)是否从fortran调用c函数的时候,interface可以使用iso_c_binding的方法定义在 .f90文件中,也可以被定义在 .c文件中? (2)像cublas这样把interface定义在 .c文件中,在vs2013中该如何实现呢,( Linux下生成.o文件,混合编译很简单,但是boss说必须要用windows)。我比较困惑该如何进行下去,您能告诉我该用什么方法么, 是vs下混合编译么 Thanks in advance 祝您工作顺利!
关于FORTRAN调用matlab出现问题,无从下手,跪求大神指点!
首先说明,我用的是VS2008平台,intel fortran安装在该平台下,matlab为2010a版本 。调用了matlab中的libeng.lib libmat.lib libmex.lib libmx.lib库文件。程序可以编译,但是运行时候出错。代码 !!matlab函数调用模块 !!!!! module matlab implicit none integer ep !指针,用于指向打开的matlab integer mstatus !非指针,记录命令执行的结果是否有效 integer,external::engOpen,engPutVariable,engGetVariable,engEvalString,engClose integer,external::mxCreateDoubleMatrix,mxGetPr contains !!====================================== !!打开matlab应用程序 subroutine startmatlab() implicit none write(*,*)"正在打开matlab应用程序,请稍后......." ep = engOpen('matlab') if(ep==0)then write(*,*)"未能打开matlab应用程序,程序结束" stop else write(*,*)"成功打开matlab应用程序窗口" endif endsubroutine startmatlab !!=================================== !!关闭matlab应用程序 subroutine closematlab() implicit none write(*,*)"正在关闭matlab窗口,请稍后......" mstatus = engClose(ep) if(mstatus /=0 )then write(*,*)"未能关闭matlab程序窗口,程序结束" stop else write(*,*)"成功关闭matlab的程序窗口" endif endsubroutine closematlab !!======================================== !!在matlab中执行命令 subroutine mc(string) implicit none character(*) string print *,"正在matlab中计算语句: ",string if(engEvalString(ep,string) /=0 )then !!!engEvalString发送命令让 Matlab 执行,参数 ep 为函数 engOpen 返回的引擎指针,字符串 string 为要 matlab 执行的命令。 write(6,*) 'engEvalString failed' stop endif endsubroutine mc !!========================================== !!将fortran中的矩阵送到matlab中去 subroutine f2m(fdata,mstring,row,col) implicit none integer row,col real(8) fdata(1:row,1:col) character(*)mstring integer ptemp ptemp = mxCreateDoubleMatrix(row,col,0) !!!mxCreatDoubleMatrix新建一个double 类型数组 if(ptemp==0)then write(*,*)"无法申请内存" stop endif call mxCopyReal8ToPtr(fdata,mxGetPr(ptemp),row*col) !!!mxCopyReal8ToPtr将一个Fortran语言的实数类型数组中的数据复制到某个阵列的实数部分或虚数部分中。 !!!fdata为fortran语言的实数类型数组 !!!mxGetPr(ptemp)为指向某个阵列的实数或虚数部分的数据的指针;mxGetPr用来获取矩阵指针 !!!row*col为希望复制的元素的个数 mstatus = engPutVariable(ep,mstring,ptemp) !!!向 Matlab 引擎工作空间写入变量。 call mxDestroyArray(ptemp) !!!释放内存 print *,"正在matlab中生成矩阵: ",mstring if(mstatus /= 0)then !!成功返回0 write(*,*) 'engPutVariable failed' stop endif endsubroutine f2m !!============================================== !!将matlab中的矩阵输入到Fortran中 subroutine m2f(mstring,ddata,row,col) integer row,col real(8) ddata(row,col) character(*)mstring integer ptemp ptemp = engGetVariable(ep,mstring) !!!获得当前 Matlab 窗口的显示 / 隐藏情况,可以调用函数: call mxCopyPtrToReal8(mxGetPr(ptemp),ddata,row*col) endsubroutine m2f endmodule !!================================================= !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! program main use matlab implicit none integer,parameter :: ndata=10 real(8) x(ndata),y(ndata),z(ndata) integer m !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!给x和y赋值 do m=1,ndata x(m)=3.1415926587*(m-1)/(ndata-1) y(m)=sin(x(m)) enddo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!打开matlab !call startmatlab() !!将x和y输出到matlab call f2m(x,"x",1,ndata) call f2m(y,"y",1,ndata) !!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!在matlab中画图 call mc("plot(x,y);title('y=sin(x)';xlable('x');ylable('y'))") !!在matlab中计算 call mc("z=2*y") !!将计算结果输出到fortran call m2f("z",z,1,ndata) !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!在fortran中打印结果 print *," x "," y " ," z " do m=1,ndata write(*,"(G15.6,G15.6,G15.6)") x(m),y(m),z(m) enddo end program main 出错时指向 cookie = systime.ft_struct.dwLowDateTime; cookie ^= systime.ft_struct.dwHighDateTime; 错误信息:“matlabtest.exe”: 已加载“C:\Windows\System32\ntdll.dll” “matlabtest.exe”: 已加载“C:\Windows\System32\kernel32.dll” “matlabtest.exe”: 已加载“C:\Windows\System32\KernelBase.dll” matlabtest.exe 中的 0x000db346 处最可能的异常: 0xC0000005: 读取位置 0x000db346 时发生访问冲突 matlabtest.exe 中的 0x000db346 处未处理的异常: 0xC0000005: 读取位置 0x000db346 时发生访问冲突 。该怎么处理?求大神指点?先行谢过。 在线等答案。
C中指向double型的指针作形参,在运算编译的时候报错,不知道原因?
本题的实现要求用函数实现,主函数只负责进行函数调用。函数的参数要求全部用到的情况是:  用数组名作函数参数;  用指向数组元素的指针变量作函数参数;  用指向一维数组的指针变量作函数参数; 题目:输入两个行、列数相同的矩阵(实际上是二维数组)A、B,以矩阵的方式分别输出A、B;求矩阵的和并输出;求出每个矩阵中的最大值及其位置;求出每个矩阵中绝对值最大的元素及其位置。下面的各要求通过编写函数实现: ① 输入矩阵(实际上是二维数组); ② 输出矩阵; ③ 求出两个矩阵的和。设A=(aij)m×n,B=(bij)m×n,则C=A+B=(cij)m×n,cij= aij+ bij; ④ 求矩阵中的最大值及其位置; ⑤ 求矩阵中绝对值最大的元素及其位置。 # 程序一直没有编译成功 附上报错图 ![图片说明](https://img-ask.csdn.net/upload/201901/06/1546704478_924396.png) ``` #include<stdio.h> #define M 4 #define N 4 int input_A(double a[][N]) { int j,k; printf("Please input A:\n"); for(j=0;j<M;j++) for(k=0;k<N;k++) { scanf("%5d",&a[j][k]); } } int input_B(double b[][N]) { int j,k; printf("Please input B:\n"); for(j=0;j<M;j++) for(k=0;k<N;k++) { scanf("%5d",&b[j][k]); } } int output(double a[][N],double b[][N]) { int j,k; printf("output A:\n"); for(j=0;j<N;j++) { for(k=0;k<N;k++) { printf("%5d",a[j][k]); } printf("\n"); } printf("output B:\n"); for(j=0;j<N;j++) { for(k=0;k<N;k++) { printf("%5d",b[j][k]); } printf("\n"); } } double sum(double *p,double *q,double *c[N]) { int j,k; double sum; for(j=0;j<N;j++) for(k=0;k<N;k++) { c[j][k]=*(*(p+j)+k)+*(*(q+j)+k); } for(j=0;j<N;j++) for(k=0;k<N;k++) { sum=sum+*(*(c+j)+k); } printf("总和为%lf",sum); } int max(double *p,double *q) { double *ma,*mb; int j,k,jm,km; ma=p;mb=q; for(j=0;j<N;j++) { for(k=0;k<N;k++) { if(*(*(p+j)+k)>*ma) { jm=j; km=k; *ma=*(*(p+j)+k); } } } printf("A矩阵中最大值为%lf,位置:%d行%d列\n",*ma,j+1,k+1); for(j=0;j<N;j++) { for(k=0;k<N;k++) { if(*(*(q+j)+k)>*mb) { jm=j; km=k; *mb=*(*(q+j)+k); } } } printf("B矩阵中最大值为%lf,位置:%d行%d列\n",*mb,j+1,k+1); } int abs_max(double a[][N],double b[][N]) { double *ma,*mb; int j,k,jm,km; ma=a[0][0];mb=b[0][0]; for(j=0;j<N;j++) { for(k=0;k<N;k++) { if(((a[j][k]>=0)?a[j][k]:-a[j][k])>*ma) { jm=j; km=k; *ma=a[j][k]; } } } printf("A矩阵中绝对最大值为%lf,位置:%d行%d列\n",*ma,j+1,k+1); for(j=0;j<N;j++) { for(k=0;k<N;k++) { if(((b[j][k]>=0)?b[j][k]:-b[j][k])>*mb) { jm=j; km=k; *mb=b[j][k]; } } } printf("B矩阵中绝对最大值为%lf,位置:%d行%d列\n",*mb,j+1,k+1); } main() { double A[M][N],B[M][N],C[M][N]; input_A(A); input_B(B); output(A,B); sum(A,B,C); max(A,B); abs_max(A,B); } ``` 新手一枚 谢谢大佬们指教 下面是根据评论区大神建议修改后的代码: ``` #include<stdio.h> #define M 4 #define N 4 int input_A(double a[][N]) { int j,k; printf("Please input A:\n"); for(j=0;j<M;j++) for(k=0;k<N;k++) { scanf("%lf",&a[j][k]); } } int input_B(double b[][N]) { int j,k; printf("Please input B:\n"); for(j=0;j<M;j++) for(k=0;k<N;k++) { scanf("%lf",&b[j][k]); } } int output(double a[][N],double b[][N]) { int j,k; printf("output A:\n"); for(j=0;j<N;j++) { for(k=0;k<N;k++) { printf(" %5.2lf ",a[j][k]); } printf("\n"); } printf("output B:\n"); for(j=0;j<N;j++) { for(k=0;k<N;k++) { printf(" %5.2lf ",b[j][k]); } printf("\n"); } } double sum(double (*p)[N],double (*q)[N],double (*c)[N]) { int j,k; double sum; for(j=0;j<N;j++) for(k=0;k<N;k++) { c[j][k]=*(*(p+j)+k)+*(*(q+j)+k); } for(j=0;j<N;j++) for(k=0;k<N;k++) { sum=sum+*(*(c+j)+k); } printf("总和为%.2lf\n",sum); } int max(double (*p)[N],double (*q)[N]) { double *ma,*mb; int j,k,jm,km; ma=*p;mb=*q; for(j=0;j<N;j++) { for(k=0;k<N;k++) { if(*(*(p+j)+k)>*ma) { jm=j; km=k; ma=*(p+j)+k; } } } printf("A矩阵中最大值为%lf,位置:%d行%d列\n",*ma,jm+1,km+1); for(j=0;j<N;j++) { for(k=0;k<N;k++) { if(*(*(q+j)+k)>*mb) { jm=j; km=k; mb=*(q+j)+k; } } } printf("B矩阵中最大值为%lf,位置:%d行%d列\n",*mb,jm+1,km+1); } int abs_max(double a[][N],double b[][N]) { double *ma,*mb; int j,k,jm,km; ma=&a[0][0];mb=&b[0][0]; for(j=0;j<N;j++) { for(k=0;k<N;k++) { if(((a[j][k]>=0)?a[j][k]:-a[j][k])>*ma) { jm=j; km=k; ma=&a[j][k]; } } } printf("A矩阵中绝对最大值为%lf,位置:%d行%d列\n",*ma,jm+1,km+1); for(j=0;j<N;j++) { for(k=0;k<N;k++) { if(((b[j][k]>=0)?b[j][k]:-b[j][k])>*mb) { jm=j; km=k; mb=&b[j][k]; } } } printf("B矩阵中绝对最大值为%lf,位置:%d行%d列\n",*mb,jm+1,km+1); } main() { double A[M][N],B[M][N],C[M][N]; input_A(A); input_B(B); output(A,B); sum(A,B,C); max(A,B); abs_max(A,B); } ``` 可以_正常运行_
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
卸载 x 雷某度!GitHub 标星 1.5w+,从此我只用这款全能高速下载工具!
作者 | Rocky0429 来源 | Python空间 大家好,我是 Rocky0429,一个喜欢在网上收集各种资源的蒟蒻… 网上资源眼花缭乱,下载的方式也同样千奇百怪,比如 BT 下载,磁力链接,网盘资源等等等等,下个资源可真不容易,不一样的方式要用不同的下载软件,因此某比较有名的 x 雷和某度网盘成了我经常使用的工具。 作为一个没有钱的穷鬼,某度网盘几十 kb 的下载速度让我...
2019年还剩1天,我从外包公司离职了
这日子过的可真快啊,2019年还剩1天,外包公司干了不到3个月,我离职了
《面试宝典》2019年springmvc面试高频题(java)
前言 2019即将过去,伴随我们即将迎来的又是新的一年,过完春节,马上又要迎来新的金三银四面试季。那么,作为程序猿的你,是否真的有所准备的呢,亦或是安于本职工作,继续做好手头上的事情。 当然,不论选择如何,假如你真的准备在之后的金三银四跳槽的话,那么作为一个Java工程师,就不可不看了。如何在几个月的时间里,快速的为即将到来的面试进行充分的准备呢? 1、什么是Spring MVC ?简单...
计算机网络的核心概念
这是《计算机网络》系列文章的第二篇文章 我们第一篇文章讲述了计算机网络的基本概念,互联网的基本名词,什么是协议以及几种接入网以及网络传输的物理媒体,那么本篇文章我们来探讨一下网络核心、交换网络、时延、丢包、吞吐量以及计算机网络的协议层次和网络攻击。 网络核心 网络的核心是由因特网端系统和链路构成的网状网络,下面这幅图正确的表达了这一点 那么在不同的 ISP 和本地以及家庭网络是如何交换信息的呢?...
python自动下载图片
近日闲来无事,总有一种无形的力量萦绕在朕身边,让朕精神涣散,昏昏欲睡。 可是,像朕这么有职业操守的社畜怎么能在上班期间睡瞌睡呢,我不禁陷入了沉思。。。。 突然旁边的IOS同事问:‘嘿,兄弟,我发现一个网站的图片很有意思啊,能不能帮我保存下来提升我的开发灵感?’ 作为一个坚强的社畜怎么能说自己不行呢,当时朕就不假思索的答应:‘oh, It’s simple. Wait for me a few
一名大专同学的四个问题
【前言】   收到一封来信,赶上各种事情拖了几日,利用今天要放下工作的时机,做个回复。   2020年到了,就以这一封信,作为开年标志吧。 【正文】   您好,我是一名现在有很多困惑的大二学生。有一些问题想要向您请教。   先说一下我的基本情况,高考失利,不想复读,来到广州一所大专读计算机应用技术专业。学校是偏艺术类的,计算机专业没有实验室更不用说工作室了。而且学校的学风也不好。但我很想在计算机领...
复习一周,京东+百度一面,不小心都拿了Offer
京东和百度一面都问了啥,面试官百般刁难,可惜我全会。
20道你必须要背会的微服务面试题,面试一定会被问到
写在前面: 在学习springcloud之前大家一定要先了解下,常见的面试题有那块,然后我们带着问题去学习这个微服务技术,那么就会更加理解springcloud技术。如果你已经学了springcloud,那么在准备面试的时候,一定要看看看这些面试题。 文章目录1、什么是微服务?2、微服务之间是如何通讯的?3、springcloud 与dubbo有哪些区别?4、请谈谈对SpringBoot 和S...
Java 14 都快来了,为什么还有这么多人固守Java 8?
从Java 9开始,Java版本的发布就让人眼花缭乱了。每隔6个月,都会冒出一个新版本出来,Java 10 , Java 11, Java 12, Java 13, 到2020年3月份,...
轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API ...
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
害怕面试被问HashMap?这一篇就搞定了!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了 其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
python爬取百部电影数据,我分析出了一个残酷的真相
2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线观影人次17.27亿,同比增长0.64%。 看上去似乎是一片大好对不对?不过作为一名严谨求实的数据分析师,我从官方数据中看出了一点端倪:国产票房增幅都已经高达8.65%了,为什...
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试一个ArrayList我都能跟面试官扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
2020年1月中国编程语言排行榜,python是2019增长最快编程语言
编程语言比例 排名 编程语言 最低工资 工资中位数 最低工资 最高工资 人头 人头百分比 1 rust 20713 17500 5042 46250 480 0.14% 2 typescript 18503 22500 6000 30000 1821 0.52% 3 lua 18150 17500 5250 35000 2956 0.84% 4 go 17989 16...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
Idea 中最常用的10款插件(提高开发效率),一定要学会使用!
学习使用一些插件,可以提高开发效率。对于我们开发人员很有帮助。这篇博客介绍了开发中使用的插件。
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
一个程序在计算机中是如何运行的?超级干货!!!
强烈声明:本文很干,请自备茶水!???? 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞Java的,肯定写过这段代码 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } ...
【蘑菇街技术部年会】程序员与女神共舞,鼻血再次没止住。(文末内推)
蘑菇街技术部的年会,别开生面,一样全是美女。
那个在阿里养猪的工程师,5年了……
简介: 在阿里,走过1825天,没有趴下,依旧斗志满满,被称为“五年陈”。他们会被授予一枚戒指,过程就叫做“授戒仪式”。今天,咱们听听阿里的那些“五年陈”们的故事。 下一个五年,猪圈见! 我就是那个在养猪场里敲代码的工程师,一年多前我和20位工程师去了四川的猪场,出发前总架构师慷慨激昂的说:同学们,中国的养猪产业将因为我们而改变。但到了猪场,发现根本不是那么回事:要个WIFI,没有;...
为什么程序猿都不愿意去外包?
分享外包的组织架构,盈利模式,亲身经历,以及根据一些外包朋友的反馈,写了这篇文章 ,希望对正在找工作的老铁有所帮助
Java校招入职华为,半年后我跑路了
何来 我,一个双非本科弟弟,有幸在 19 届的秋招中得到前东家华为(以下简称 hw)的赏识,当时秋招签订就业协议,说是入了某 java bg,之后一系列组织架构调整原因等等让人无法理解的神操作,最终毕业前夕,被通知调往其他 bg 做嵌入式开发(纯 C 语言)。 由于已至于校招末尾,之前拿到的其他 offer 又无法再收回,一时感到无力回天,只得默默接受。 毕业后,直接入职开始了嵌入式苦旅,由于从未...
世界上有哪些代码量很少,但很牛逼很经典的算法或项目案例?
点击上方蓝字设为星标下面开始今天的学习~今天分享四个代码量很少,但很牛逼很经典的算法或项目案例。1、no code 项目地址:https://github.com/kelseyhight...
Python全栈 Linux基础之3.Linux常用命令
Linux对文件(包括目录)有很多常用命令,可以加快开发效率:ls是列出当前目录下的文件列表,选项有-a、-l、-h,还可以使用通配符;c功能是跳转目录,可以使用相对路径和绝对路径;mkdir命令创建一个新的目录,有-p选项,rm删除文件或目录,有-f、-r选项;cp用于复制文件,有-i、-r选项,tree命令可以将目录结构显示出来(树状显示),有-d选项,mv用来移动文件/目录,有-i选项;cat查看文件内容,more分屏显示文件内容,grep搜索内容;>、>>将执行结果重定向到一个文件;|用于管道输出。
​两年前不知如何编写代码的我,现在是一名人工智能工程师
全文共3526字,预计学习时长11分钟 图源:Unsplash 经常有小伙伴私信给小芯,我没有编程基础,不会写代码,如何进入AI行业呢?还能赶上AI浪潮吗? 任何时候努力都不算晚。 下面,小芯就给大家讲一个朋友的真实故事,希望能给那些处于迷茫与徘徊中的小伙伴们一丝启发。(下文以第一人称叙述) 图源:Unsplash 正如Elsa所说,职业转换是...
强烈推荐10本程序员必读的书
很遗憾,这个春节注定是刻骨铭心的,新型冠状病毒让每个人的神经都是紧绷的。那些处在武汉的白衣天使们,尤其值得我们的尊敬。而我们这些窝在家里的程序员,能不外出就不外出,就是对社会做出的最大的贡献。 有些读者私下问我,窝了几天,有点颓丧,能否推荐几本书在家里看看。我花了一天的时间,挑选了 10 本我最喜欢的书,你可以挑选感兴趣的来读一读。读书不仅可以平复恐惧的压力,还可以对未来充满希望,毕竟苦难终将会...
立即提问