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);
}