3x3矩陣c語言
『壹』 將一個3x3的矩陣轉置,怎樣用c語言寫
#include<stdio.h>
int main()
{
int a[3][3];int*i;
for(i=*a;i<*a+9;scanf("%d",i++));//輸入矩陣
void trans(int(*p)[3]);//聲明轉換函數
trans(a);
}
void trans(int(*p)[3])
{
int i,j,t,*k;
for(i=0;i<3;i++)
for(j=0;j<i;j++)
{
t=*(*(p+i)+j);*(*(p+i)+j)=*(*(p+j)+i);*(*(p+j)+i)=t;//行列交換
}
for(i=0;i<3;i++,printf(" "))
for(k=*(p+i);k<*(p+i)+3;printf("%2d",*k++));//輸出轉置矩陣
}
(1)3x3矩陣c語言擴展閱讀:
C#中for語句的語法:
for(initialization;Boolean expression;update control variable)
statement
其中,statement(語句)是for循環主體,要麼是一個語句,要麼是用大括弧{}封閉的代碼塊。[3]
例子1:
static void Main(string[]args)
{
for(int i=0;i<10;i++)
{
Console.WriteLine(i);
Console.ReadLine();
}
}
例子2:
static void Main(string[]args)
{
int i=0;
for(;i<10;i++)
{
Console.WriteLine(i);
Console.ReadLine();
}
}
例子2運算得到例子1相同的結果。
Pascal語言中的for循環
循環次數已知時,可以用for語句實現循環結構。
for語句有兩種格式:遞增型和遞減型。
(1)遞增型for語句格式
for<循環變數>:=<初值>to<終值>do<語句>;
(2)遞減型for語句格式,
for<循環變數>:=<初值>downto<終值>do<語句>;
其中,「循環變數"為一個有序類型的數據,
在第一種形式中,使用的是保留字to,循環變數則從「初值"開始逐一增加到「終值";
在第二種形式中,使用的是保留字downto,「循環變數"則從「初值"開始逐一遞減到「終值",每次執行一次循環體語句。
『貳』 c語言 任意輸入一個3×3的矩陣,用函數實現求上三角矩陣並輸出。
第一題#include <stdio.h>
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("\n");
} }
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 <stdio.h>
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 <stdio.h>
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\n最高分數是:%f\n最低分數是:%f\n",HH(shuzu),shuzu[0],shuzu[1]);
}
『叄』 用C語言編程求一個3x3矩陣的第一行所有元素的積
假設一個整數矩陣a[3][3]已經賦值。以下是用C語言編程求一個3x3矩陣的第一行所有元素的積的代碼段:
int i,y=1;
for(i=0;i<3;i++)
y*=a[0][i];
printf("第一行所有元素的乘積=%d\n",y);
『肆』 C語言,求3×3矩陣的轉置矩陣(在自身進行轉置)
#include<stdio.h>
int main()
{
int a1,b1;
int a[3][3];
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
printf("矩陣為 ");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
printf("%d ",a[i][j]);
if(j==2)
printf(" ");
}
printf(" ");
for(i=0;i<2;i++)
for(j=1;j<3;j++)
{
a1=a[i][j];
b1=a[j][i];
a[i][j]=b1;
a[j][i]=a1;
}
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
printf("%d ",a[i][j]);
if(j==2)
printf(" ");
}
return 0;
}
『伍』 如何用C語言輸出3*3的矩陣
#include<stdio.h>
#define N 3
void fun(int a[][N],int m)
{
int i, j;
for (i = 0; i < N; i++)
for (j = 0; j <= i; j++)
a[j][i] = a[j][i] * m;
}
int main()
{
int i, j;
int a[N][N];
printf("input a number: ");
for(i=0;i<N;i++)
for (j = 0; j < N; j++)
scanf_s("%d", &a[i][j]);
printf("3 * 3 matrix: ");
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
printf("%3d", a[i][j]);
printf(" ");
}
printf("change 3 * 3 matrix: ");
fun(a, 2);
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
printf("%3d", a[i][j]);
printf(" ");
}
return 0;
}
『陸』 c語言編程 輸入一個3*3的矩陣,列印該矩陣,並輸出該矩陣的對角元素
#include<stdio.h>
#defineM3
#defineN3
voidCreate_matrix(intmatrix[M][N],intm,intn){
inti,j;
printf("開始輸入矩陣內容(%d行%d列) ",m,n);
for(i=0;i<m;i++){
printf("輸入第%d行的%d個元素:",i+1,n);
for(j=0;j<n;j++)
scanf("%d",&matrix[i][j]);
}
}
voidPrint_matrix(intmatrix[M][N],intm,intn){
inti,j;
for(i=0;i<m;i++){
for(j=0;j<n;j++)
printf("%d ",matrix[i][j]);
printf(" ");
}
}
voidPrint_matrix_diagonal(intmatrix[M][N],intm,intn){
inti,j;
for(i=0;i<m;i++){
for(j=0;j<n;j++)
if(i==j||i+j==M-1)
printf("%d ",matrix[i][j]);
else
printf(" ");
printf(" ");
}
}
intmain(void){
intmatrix[M][N];
Create_matrix(matrix,M,N);
printf("====================================================== ");
printf("您輸入的矩陣為: ");
Print_matrix(matrix,M,N);
printf("對角線元素為: ");
Print_matrix_diagonal(matrix,M,N);
return0;
}
執行結果
『柒』 c語言3*3矩陣運算
/*自從學線代就開始琢磨怎樣將復雜的矩陣進行編程,歷經兩個月,終於實現了這個願望。這個程序使我弄清楚了怎樣使用二級指針實現動態二維數組,很有研究價值!希望能給各位學編程的gg&mm帶來一些啟發,去研究更高級的問題。*/
#include <iostream.h>
void zhuan()
{
int a,b;
double **x,**p;
cout<<"輸入矩陣的行數,列數:";
cin>>a>>b;
x=new double *[a];
for(int i=0;i<a;i++)
x[i]=new double[b];
cout<<"輸入數據:\n";
for(i=0;i<a;i++)
for(int j=0;j<b;j++)
cin>>x[i][j];
//////////////////////開始轉置:
p=new double *[b];
for(i=0;i<b;i++)
p[i]=new double[a];
for(i=0;i<b;i++)
for(int j=0;j<a;j++)
//////////////////////////////輸出轉置矩陣
for(i=0;i<b;i++)
{for(int j=0;j<a;j++)
cout<<p[i][j]<<'\t';
cout<<endl;
}
for(i=0;i<a;i++)
delete x;
delete p;
p=0;
x=0;
}
void jia()
{
int a1,b1,a2,b2;
double **x1,**x2;
cout<<"輸入第一個行數,列數:";
cin>>a1>>b1;
cout<<"輸入第二個行數,列數:";
cin>>a2>>b2;
if(a1!=a2 ||b1 !=b2)
////x1[][]
x1=new double *[a1];
for(int i=0;i<a1;i++)
x1[i]=new double[b1];
cout<<"輸入第一個矩陣:\n";
for(i=0;i<a1;i++)
for(int j=0;j<b1;j++)
cin>>x1[i][j];
//////x2[][]
x2=new double *[a2];
for(i=0;i<a2;i++)
x2[i]=new double[b2];
cout<<"輸入第二個矩陣:\n";
for(i=0;i<a2;i++)
for(int j=0;j<b2;j++)
cin>>x2[i][j];
cout<<"相加後:"<<endl;
for(i=0;i<a1;i++)
{
for(int j=0;j<b1;j++)
{
x1[i][j]+=x2[i][j];
cout<<x1[i][j]<<"\t";
}
cout<<endl;
}
for(i=0;i<a1;i++)
delete x1;x1=0;
delete x2;x2=0;
}
void jian()
{
int a1,b1,a2,b2;
double **x1,**x2;
cout<<"輸入第一個行數,列數:";
cin>>a1>>b1;
cout<<"輸入第二個行數,列數:";
cin>>a2>>b2;
if(a1!=a2 ||b1 !=b2)
////x1[][]
x1=new double *[a1];
for(int i=0;i<a1;i++)
x1[i]=new double[b1];
cout<<"輸入第一個矩陣:\n";
for(i=0;i<a1;i++)
for(int j=0;j<b1;j++)
cin>>x1[i][j];
//////x2[][]
x2=new double *[a2];
for(i=0;i<a2;i++)
x2[i]=new double[b2];
cout<<"輸入第二個矩陣:\n";
for(i=0;i<a2;i++)
for(int j=0;j<b2;j++)
cin>>x2[i][j];
cout<<"相減後:"<<endl;
for(i=0;i<a1;i++)
{
for(int j=0;j<b1;j++)
{
x1[i][j]-=x2[i][j];
cout<<x1[i][j]<<"\t";
}
cout<<endl;
}
for(i=0;i<a1;i++)
delete x1;x1=0;
delete x2;x2=0;
}
void cheng()
{
int a1,b1,a2,b2;
double **x1,**x2;
cout<<"輸入第一個行數,列數:";
cin>>a1>>b1;
cout<<"輸入第二個行數,列數:";
cin>>a2>>b2;
if(b1!=a2)
////x1[][]
x1=new double *[a1];
for(int i=0;i<a1;i++)
x1[i]=new double[b1];
cout<<"輸入第一個矩陣:\n";
for(i=0;i<a1;i++)
for(int j=0;j<b1;j++)
cin>>x1[i][j];
//////x2[][]
x2=new double *[a2];
for(i=0;i<a2;i++)
x2[i]=new double[b2];
cout<<"輸入第二個矩陣:\n";
for(i=0;i<a2;i++)
for(int j=0;j<b2;j++)
cin>>x2[i][j];
cout<<"相乘後:"<<endl;
double **r=new double *[a1];
for(i=0;i<a1;i++)
r[i]=new double[b2];
////乘開始:
for(int q=0;q<a1;q++)
for(int w=0;w<b2;w++)
{
r[q][w]=0;
for(int j=0;j<b1;j++)
r[q][w]+=x1[q][j]*x2[j][w];
}
//輸出
for( q=0;q<a1;q++)
{
for(int w=0;w<b2;w++)
{
cout<<r[q][w]<<"\t";
}
cout<<endl;
}
for(i=0;i<a1;i++)
for(i=0;i<a2;i++)
delete []x2[i];
delete x1;x1=0;
delete x2;x2=0;
delete r;r=0;
}
int main()
{
int c=1;
while(c)
{
cout<<"*********************************************************\n";
cout<<"\t(1)轉置\n\t(2)矩陣加法\n\t(3)矩陣減法\n\t(4)矩陣乘法\n\t(0)退出"<<endl;
cout<<"*********************************************************\n";
cin>>c;
switch(c)
{
case 0:break;
case 1:zhuan();break;
case 2:jia();break;
case 3:jian();break;
case 4:cheng();break;
default:cout<<"Please retry!"<<endl;
}
}
return 0;
}
『捌』 C語言編程:求3*3矩陣的轉置矩陣
思路:定了兩個二維數組分別存儲轉置前後的矩陣,接著for循環依次轉置即可。
//參考代碼
#include<stdio.h>
int main()
{
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}},b[3][3];
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
b[j][i]=a[i][j];
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%2d ",b[i][j]);
printf("\n");
}
return 0;
}
/*
運行結果:
1 4 7
2 5 8
3 6 9
*/
『玖』 C語言 :求一個3*3的整形矩陣對角線元素之和,請詳解一下
用C語言實現,代碼如下
#include "stdio.h"
#define M 3 //矩陣階數
void main()
{
int a[M][M],i,j,sum=0;
printf("請輸入%d*%d矩陣:\n",M,M);
for(i=0;i<M;i++)//輸入M*M階矩陣
for(j=0;j<M;j++)
{
scanf("%d",&a[i][j]);
if(i==j)sum+=a[i][j];//求主對角線的元素之和
}
printf("\n矩陣為:\n");
for(i=0;i<M;i++)//輸出矩陣
{
for(j=0;j<M;j++)
printf("%5d",a[i][j]);
printf("\n");//每個M個元素輸出一個換行符
}
printf("\n主對角線和=%d\n",sum);
}