C语言输入矩阵如何做到矩阵三角化?

作者&投稿:劳要 (若有异议请与网页底部的电邮联系)
求C语言矩阵三角化程序~

看看我写的,绝对是你想要的,一定要看啊,我可是连作业都不写了给你编的
#include
#define LENGTH 4
//矩阵的长
#define WIDTH 4
//矩阵的宽
void appr(int a,int b);
main()
{
int i,j,a[4][4],m,n,x,tem,tem1,tem2;
printf("请输入矩阵:");
for(i=0;i<WIDTH;i++)
{
for(j=0;j<LENGTH;j++)
scanf("%d",&a[i][j]);
}
//输入矩阵
x=0;
for(j=0;j<LENGTH;j++)
{
for(i=x;i<WIDTH;i++)
{
if(a[i][j])
{
if(i-x)
{
for(n=j;n<LENGTH;n++)
{
tem=a[x][n];
a[x][n]=a[i][n];
a[i][n]=tem;
}
}
for(m=i+1;m<WIDTH;m++)
{
if(a[m][j])
{
tem1=a[x][j];
tem2=a[m][j];
for(n=j;n<LENGTH;n++)
{
a[m][n]=a[m][n]*tem1-a[x][n]*tem2;
}
}
}
x++;
break;
}
}
}
//矩阵初等行变换





for(i=0;i<WIDTH;i++)
{
for(j=0;j<LENGTH;j++)
{
if(tem=a[i][j])
{
for(m=j;m<LENGTH;m++)
appr(a[i][m],tem);
break;
}
else
{
printf("0");
}
}
printf("
");
}
//输出
return 0;
}
/////////////////////////////////////////////////////////////////////////////////
//输出分数a/b的最简
void appr(int a,int b)
{
int m=a<b?a:b;
int i;
for(i=2;i<=m;i++)
if((!(a%i))&&(!(b%i)))
{
a/=i;
b/=i;
}
if(!(a%b))
printf("%d",a/b);
else if(b<0)
printf("%d/%d",-a,-b);
else
printf("%d/%d",a,b);
}

第一题#include
void shangsan(int (*p)[3])
{
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
if(i==1&&j==0)
printf("%c",32);
else if(i==2&&(j==0||j==1))
printf("%c",32);
else
printf("%d",(*(p+i))[j]); }
printf("
");
} }
void main()
{ int s[3][3];
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
scanf("%d",&s[i][j]);
shangsan(s);}第二题#include
int mystrcmp(char *p1,char *p2)
{ for(int i=0;i<15;i++,p1++,p2++)
{ if(*p1!=*p2)
return *p1-*p2;
}
return 0;
}
void main()
{
int M;
char s1[15],s2[15];
gets(s1);
gets(s2);
M=mystrcmp(s1,s2);
if(M==0)
printf("字符串相等!");
else
printf("字符串不相等!差值是:%d",M); }第三题#include
float HH(float score[])
{ float Max=0,Min=32767,sum=0;
for(int i=0;i<10;i++)
{
sum+=score[i];
if(score[i]>Max)
Max=score[i];
else if(Min>score[i])
Min=score[i];
}
score[0]=Max;
score[1]=Min;
return sum/10;}
void main()
{ float shuzu[10];
for(int i=0;i<10;i++)
scanf("%f",&shuzu[i]);
printf("平均分是:%f
最高分数是:%f
最低分数是:%f
",HH(shuzu),shuzu[0],shuzu[1]);
}

//正确的程序如下:
#include <stdio.h>
void main()
{
int i,j,n,*tem[3];
int p[2][3],q[3][2],r[2][2];
tem[0]=p[0];tem[1]=q[0];tem[2]=r[0];
printf("请输入第1个矩阵:\n");
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
{
r[i][j]=0;
}
}
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
scanf("%d",tem[0]+3*i+j);
}
}

printf("请输入第2个矩阵:\n");
for(i=0;i<3;i++)
{
for(j=0;j<2;j++)
{
scanf("%d",tem[1]+2*i+j);
}
}

printf("输出2个矩阵相乘得到的矩阵:\n");
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
{
for(n=0;n<3;n++)
{
r[i][j]+=(*(tem[0]+3*i+n))*(*(tem[1]+2*n+j));
}
}
}
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
{
printf("%d\t",*(tem[2]+i*2+j));
}
printf("\n");
}
getch();
}


//正确的程序如下:
#include
<stdio.h>
void
main()
{
int
i,j,n,*tem[3];
int
p[2][3],q[3][2],r[2][2];
tem[0]=p[0];tem[1]=q[0];tem[2]=r[0];
printf("请输入第1个矩阵:\n");
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
{
r[i][j]=0;
}
}
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
scanf("%d",tem[0]+3*i+j);
}
}
printf("请输入第2个矩阵:\n");
for(i=0;i<3;i++)
{
for(j=0;j<2;j++)
{
scanf("%d",tem[1]+2*i+j);
}
}
printf("输出2个矩阵相乘得到的矩阵:\n");
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
{
for(n=0;n<3;n++)
{
r[i][j]+=(*(tem[0]+3*i+n))*(*(tem[1]+2*n+j));
}
}
}
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
{
printf("%d\t",*(tem[2]+i*2+j));
}
printf("\n");
}
getch();
}

问题能说的详细些嘛?你的问题是矩阵输入时上三角或下三角?


C语言怎样输入多个的多维矩阵,不知到有多少个矩阵
方法很多:我这里直接用动态数组演示。矩阵维度该常量就行了。include <stdio.h>#include <malloc.h>#define row 2 \/\/矩阵行数#define col 3 \/\/矩阵列数int main(){ int ***a=NULL,**b=NULL,*c=NULL,*p=NULL,n,i,j,k; printf("输入要创建的二维矩阵(%dX%d)个数:",row,col...

C语言编写程序:通过键盘给3x4的整数矩阵输入数据,然后分别按行和按...
第一个程序:include<stdio.h> void main(){ int a[3][4],i,j;for(i=0;i<3;i++){ printf("输入第%d行的4个数:",i+1);for(j=0;j<4;j++)scanf("%d",&a[i][j]);} printf("按行输出:\\n");for(i=0;i<3;i++){ printf("第%d行:",i+1);for(j=0;j<4;j++...

输入一个5×5阶矩阵,编程计算每列上的各元素之和,并显示(求大神指导,C...
#include<stdio.h> #defineM100 intmain(){ inta[M][M],i,j,msum=0,ssum=0;intN;printf("inputN:");scanf("%d",&N);printf("请输入%d*%d的矩阵:\n",N,N);for(i=0;i<N;++i){ for(j=0;j<N;++j){ scanf("%d"...

C语言 输入一个4*4矩阵,编写两个函数分别实现对二维数组元素的行与行...
l1,int l2);\/\/指定的两列交换数据int main(){ int nums[4][4],i,j,h1,h2,l1,l2,(*p)[4]; for(i=0;i<4;i++) { printf("\\n输入4*4矩阵的第%d行的4个数:",i+1); for(j=0;j<4;j++) { scanf("%d",...

用C语言编写一个矩阵转置的函数,矩阵的行数和列数在程序中由用户输入...
int row,clo,**nList=NULL,**nListSave=NULL; printf("输入矩阵行列数:"); scanf("%d%d",&row,&clo); nList=getList(row,clo); setNum(nList,row*clo); printf("输入的矩阵为:\\n"); prtList(nList,row,clo); printf("转置后的矩阵为:\\n")...

请问C语言运行时如何输入两个矩阵
用一个三维数组 或 两个二维数组 int a[2][2][2] 使用时用第三维度为0或1来判断是第几个矩阵 int a[2][2], b[2][2]使用二个不同的二维数组来存储矩阵 int i, j, a[2][2][2] for (i = 0; i < 2; i++) for (j = 0; j < 2; j++) scanf("%d", &a[i...

C语言程序设计:在键盘上输入一个3行3列矩阵的各个元素的值(值为整数...
include <stdio.h>int main(){ int i = 0, j = 0; int a[3][3] = {0}; int sum1=0, sum2=0; printf("请依次输入矩阵各个元素的值:\\n"); for(i=0; i<3; i++) { scanf("%d,%d,%d",&a[i][0],&a[i][1],&a[i][2]); } printf(...

c语言程序编写 输入一个4×3的整数矩阵,输出其中最大值,最小值和他们...
include<stdio.h>void main(){int arr[4][3];int i,j,min,max;int r1=0,r2=0,c1=0,c2=0;for(i=0;i<4;i++)\/\/输进二维数组for(j=0;j<3;j++){printf("Input arr[%2d][%2d]: ",i,j);scanf("%d",&arr[i][j]);} max=arr[0][0];\/\/令最大值初始化为arr[0][0...

问pascal语言矩阵怎么编?,希望写下每步的意思
一级算法 1.输入矩阵a 2.用循环结构a for do 3.用循环结构把a用输出b 4.输出b矩阵 编一个转置MXN阶矩阵的程序 4 -5 6 12 4 0 3 0 1 22 9 变成 -5 1 15 3 15 4 10 6 22 4 12 9 10 原矩阵 转置后的矩阵 program trans...

java语言中如何在控制台上输入一个矩阵呢?
public class ABC { public static void main(String[] args)throws java.io.IOException { \/\/录入部分,每个数之间用空格隔开,录完一行回车 int rows = 4;\/\/行数 byte[] b = new byte[1024];int read;int[][] tmp = new int[rows][];System.out.println("输入: ");for(int i=0; ...

长安区18522081262: C语言输入矩阵如何做到矩阵三角化? -
纪甘善泰: //正确的程序如下:#include void main(){ int i,j,n,*tem[3]; int p[2][3],q[3][2],r[2][2]; tem[0]=p[0];tem[1]=q[0];tem[2]=r[0]; printf(...

长安区18522081262: 求C语言矩阵三角化程序 -
纪甘善泰: 看看我写的,绝对是你想要的,一定要看啊,我可是连作业都不写了给你编的 #include#define LENGTH 4 //矩阵的长 #define WIDTH 4 //矩阵的宽 void appr(int a,int b); main() { int i,j,a[4][4],m,n,x,tem,tem1,tem2; printf("请输入矩阵:"); for(i=...

长安区18522081262: 用C语言如何把矩阵转化为梯矩阵 -
纪甘善泰: #include <studio.h> #include <math.h> int main() {int n,m;int i,j,k,l,x; printf("请输入矩阵");for (i=0;i<n;i++)for (j=0;j<m;j++)scanf(“%lf”,&A[i][j]);for(i=1;i++;i<n) { for(j=1;j++;j<=m) { if (A[i][i] !=0 ){ for(k=1;k++;k<=n-i); l=i+k; A[l][j]=A[l][j]/A[i][i...

长安区18522081262: 用C语言如何把矩阵转化为梯矩阵
纪甘善泰: #include &lt;studio.h&gt; #include &lt;math.h&gt; int main() { int n,m; int i,j,k,l,x; printf("请输入矩阵"); for (i=0;i&lt;n;i++) for (j=0;j&lt;m;j++) scanf(“%lf”,&amp;A[i][j]); for(i=1;i++;i&lt;n) { for(j=1;j++;j&lt;=m) { if (A[i][i] !=0 ) { for(k=1;k++;k&lt;=n-i); ...

长安区18522081262: C语言矩阵上三角和下三角 -
纪甘善泰: 上三角和下三角是根据主对角线来划分的; 在你举得列子力 123 456 789 的159就是这个这个数列的主对角线 所以 123 56 9 是上三角; 1 45 789 是下三角

长安区18522081262: C语言编程 上三角矩阵 -
纪甘善泰: #include "stdio.h" #include "math.h" int main( ) {int a[6][6],flag,i,j,n;scanf("%d",&n);for (i=0;ifor (j=0;j scanf("%d",&a[i][j]); flag=0; for(i=1;i for(j=0;j if(a[i][j]==0) flag++; if(flag==n*(n-1)/2) printf("YES\n"); else printf("NO\n"); } }

长安区18522081262: C语言写上三角矩阵 -
纪甘善泰: #include<stdio.h> void main() { int a[5][5],i,j; printf("输入距阵数:\n"); for(i=0;i<5;i++) for(j=0;j<=i;j++) scanf("%d",&a[j][i]); for(i=0;i<5;i++) { for(j=0;j<5;j++) if(i>=j) printf("%5d",a[j][i]); else printf(" C"); printf("\n"); } }

长安区18522081262: c语言怎么把4*4数组设置成上三角矩阵 -
纪甘善泰: #include <stdio.h> int main(void) { int a[4][4]; int i,j; for(i = 0; i < 4; i++) for(j = 0; j < 4; j++) { scanf("%d",&a[i][j]); } for(i = 0; i < 4; i++) { for(j = 0; j < 4-i; j++) printf("%-3d",a[i][j]); printf("\n"); } return 0; }

长安区18522081262: c语言 上三角矩阵 -
纪甘善泰: 一 原因是这样的 :int flag; 定义了一个整形变量falg 但是没有给他赋初值,这样系统给他自动一个随机值你可以用下面语句看看 int a[6][6],flag,i,j,n,sum=0;printf("%d\n",flag);我运行的时候 flag是-1500456468而在c中 只要不为0 都看作真 所以 -1500456468 是真也就是if(flag) 恒成立二 解决办法 :预先赋初值int falg=0;或 if(sum==0)flag=1;else flag=0;

长安区18522081262: C语言 输出矩阵的下三角*/**/***/****
纪甘善泰: 如果是四行的话 #include&lt;stdio.h&gt; main() { int a,i; for(a=1;a&lt;5;a++;) { for(i=0;i&lt;a;i++) { printf("*"); } printf("\n"); } } 你指定的行数 #include&lt;stdio.h&gt; main() { int a,i,k; printf("请输入你要打出的行数\n"); scanf("%d",&amp;k); for(a=1;a&lt;k+1;a++) { for(i=0;i&lt;a;i++) { printf("*"); } printf("\n"); } }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网