㈠ c语言实现3x3的二维数组转置,哪里不对
主函数中调用在z(),函数的时候不用带void ,在void z(a[][])形参,至少得写出来列的数目,
㈡ 用C语言编程:求一个3x3的整型二维数组对角线元素之和。
int main(void)
{
int a[3][3],i,j,sum1=0,sum2=0;
for(i=0;i<=2;i++)
for(j=0;j<=2;j++)
scanf("%d",&a[i][j]);
sum1=a[0][0]+a[1][1]+a[2][2];
sum2=a[0][2]+a[1][1]+a[2][0];
printf("%d,%d",sum1,sum2);
getchar();
getchar();
return 0;
}
㈢ C语言:定义一个3X3的二维数组,输入9个数组,然后计算每一行的和,以及每一列的和。
#include<stdio.h>
intmain()
{inti,j,a[4][4]={0};
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{a[i][j]=3*i+j+1;
a[i][3]+=a[i][j];
a[3][j]+=a[i][j];
}
for(i=0;i<4;i++)
{for(j=0;j<4;j++)
{printf("%3d",a[i][j]);
if(i==3&&j==2)break;
}
printf("
");
}
return0;
}
㈣ 用c语言任意输入一个3行3列的二维数组,求对角元素之和
#include<stdio.h>
#defineM3
#defineN3
voidcreateMatrix(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]);
}
}
voidprintMatrix(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(" ");
}
}
voidprintMatrix_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(" ");
}
}
intdiagonalSum(intmatrix[M][N],intm,intn){/*求对角线元素和*/
inti,j,sum=0;
for(i=0;i<m;i++){
for(j=0;j<n;j++)
if(i==j||i+j==M-1)
sum+=matrix[i][j];
}
returnsum;
}
intmain(void){
intmatrix[M][N];
createMatrix(matrix,M,N);
printf("====================================================== ");
printf("您输入的矩阵为: ");
printMatrix(matrix,M,N);
printf("对角线元素为: ");
printMatrix_diagonal(matrix,M,N);
printf("对角线元素之和为: ");
printf("%d ",diagonalSum(matrix,M,N));
return0;
}
㈤ 用C语言编写一个3x3的二维数组,求对角线的和
这个很简单啊 3x3的二维数组 你自己定义为 int A[x][y]; (你这题x=3,y=3;)
对角线你自己看下 是不是有主对角线和副的? 主的好求 在循环里 只有当x = y的时候就把他们的值相加 最后就是主对角线的值
副对角线的话你看下 第一个是不是 x=1 y=2 第二个x=2 y=2 第三个x=2 y=1 也是在循环里用个判断写下就OK了
最后的结果就是两对角线的和了 你好好做下看看
㈥ c语言,二维数组倒置
# include <stdio.h>
int main()//
{
int i,j,temp;
int a[3][3];
int (*p)[3];
//************************************************************************
//*********************输入二维数组*********************************
printf("请输入你喜欢的9个数字作为3x3二维数组:\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
}
//********************************************************************
//**********************打印输入的二维数组***********************
p=a;
printf("您刚才输入的3x3二维数组是:\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf(" %5d",a[i][j]);
printf("\n");
}
printf("\n"); printf("\n"); printf("\n"); printf("\n");
//*********************************************************************
//*************************二维数组倒置******************************
for(i=0;i<3;i++)
{
for(j=i+1;j<3;j++)//这里换了两次.等于没换
temp=a[j][i],
a[j][i]=a[i][j],
a[i][j]=temp;
// temp=*(*(p+i)+j),
// *(*(p+i)+j)=*(*(p+j)+i);
// *(*(p+j)+i)=temp;
}
//******************************************************************
//*************************输出倒置后的数组*************************
printf("倒置后的3x3二维数组是:\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf(" %5d",*(*(p+i)+j));
printf("\n");
}
return 0;//
}
//**********************程序完毕****************************************
㈦ C语言中如何将一个3×3的二维数组,行列互换,并赋值到另一个二维数组
#include<stdio.h>
intmain(void)
{
intarray[3][3]={1,2,3,4,5,6,7,8,9};
intarray_1[3][3];
printf("原始数组: ");
for(inti=0;i<3;i++){
for(intj=0;j<3;j++){
array_1[j][i]=array[i][j];
printf("%d ",array[i][j]);
}
printf(" ");
}
printf("转换后数组: ");
for(intm=0;m<3;m++){
for(intn=0;n<3;n++){
printf("%d ",array_1[m][n]);
}
printf(" ");
}
return0;
}
㈧ 用C语言定义一个3*3的二维数组,编写一个程序查找并输出此二
#include<stdio.h>
intmain()
{
intnums[3][3]={{8,9,3},{6,5,4},{2,1,9}};
inti,j,cloSum[3]={0},rowSum[3]={0},*min=&nums[0][0];
doublerowAve[3],cloAve[3];
printf("原数组:
");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%d",nums[i][j]);
if(*min>nums[i][j])
min=&nums[i][j];
cloSum[i]=cloSum[i]+nums[j][i];
rowSum[i]=rowSum[i]+nums[i][j];
}
printf("
");
}
printf("二维数组中最小值的下标:%d
",min-&nums[0][0]);
for(i=0;i<3;i++)
{
cloAve[i]=(double)cloSum[i]/3;
rowAve[i]=(double)rowSum[i]/3;
printf("第%d行的平均值:%lf
",i+1,rowAve[i]);
printf("第%d列的平均值:%lf
",i+1,cloAve[i]);
}
return0;
}
㈨ c语言中怎样输入一个3*3的二维数组存储到文件中在文件中按顺序输出二维数组
#include<stdio.h>
#include<time.h>
#defineN3//N定义数组的大小
voidShellSort(inta[],intn)
//直接插入排序:对含有n个整数的数组a[]进行从小到大排序
{
inti,j,t;
for(i=1;i<n;i++)
for(j=i-1;j>=0&&a[j]>a[j+1];j--)
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
intmain()
{
inti;
inta[N*N]={0},b[N*N]={0};//二维数组a[n][n]在内存中就是以连续的一片空间存放的
//本质上就是一个n*n大小的一维数组,故此处直接采用一维数组存取
FILE*fp,*fp2;
srand((unsignedint)time(NULL));//初始化随机数种子
for(i=0;i<N*N;i++)
{
a[i]=rand()%100+1;//随机生成100以内的整数,为了方便采用随机数
//实际上可以采取手工输入
//a[i]=scanf("%d");
printf("%3d",a[i]);//输出该数
if(i>0&&(i+1)%N==0)//按n*n行格式断行
printf(" ");
}
ShellSort(a,N*N);//数据排序
if((fp=fopen("d:\tmp\abc.txt","w"))==NULL)//请自行更改文件存放位置及文件名
{
printf("打开文件出错. ");
return0;
}
printf("排序结果写入文件 ");
for(i=0;i<N*N;i++)
{
printf("%3d",a[i]);////一起输出排序结果
fprintf(fp,"%3d",a[i]);//写到文件
if(i>0&&(i+1)%N==0)
{
fprintf(fp," ");//换行
printf(" ");
}
}
fclose(fp);
printf("读取文件 ");
if((fp2=fopen("d:\tmp\abc.txt","r"))==NULL)
{
printf("打开文件出错. ");
return0;
}
for(i=0;i<N*N;i++)
{
fscanf(fp2,"%d",&b[i]);
printf("%3d",b[i]);
if(i>0&&(i+1)%N==0)//换行
printf(" ");
}
fclose(fp2);
return0;
}
㈩ C语言,如何在子函数中写一个3*3二维数组,给主函数调用!!
在子函数申请二维数组,主函数使用,可以用动态申请。
方法不止一种,我这里用指针的指针实现二维数组。
二维数组除了行列,本身地址也是连续的,从第一行第一列的元素地址++,可以取出所有元素。所以我这里先申请了完整的连续地址。
#include<stdio.h>
#include<malloc.h>
int**sr(void)
{
inti,j;
int*memory=(int*)malloc(sizeof(int)*9);//申请完整的连续内存地址3*3
int**arr=(int**)malloc(sizeof(int*)*3);//申请二维数组行指针数组(也就是二维数组)
if(!memory||!arr){
printf("内存申请错误!
");returnNULL;}
for(i=0,j=0;i<9;i+=3)//将连续地址按列数,取出每行首地址,赋值给二维数组元素
arr[j++]=&memory[i];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&arr[i][j]);
returnarr;
}
intmain(void)
{
inti,j,**arr=sr();
if(!arr)
return1;
printf("---主函数调用子函数定义的二维数组---
");
for(i=0;i<3;i++,printf("
"))
for(j=0;j<3;j++)
printf("%d",arr[i][j]);
printf("
---实现二维数组地址连续性---
");
int*p=&arr[0][0];
while(p<=&arr[2][2])
printf("%d",*p++);
return0;
}