C语言 输入一个4*4矩阵,编写两个函数分别实现对二维数组元素的行与行进行交换,以及列与列进行交换
# include
int main(void)
{
int a[4][4] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
int i, j, sum1, sum2;//定义sum1,sum2,分别存放两条对线元素的和;
sum1=sum2=0;
for(i=0; i<4; i++)
{
for(j=0; j<4; j++)
printf("%-5d", a[i][j]);// 输出该数组矩阵;
printf("
");
}
printf("
第一条对角线的元素值分别为:
");
for(i=0; i<4; i++)
{
printf("a[%d][%d]=%-3d", i, i, a[i][i]);//打印第一条对角线的元素及其值;
sum1 += a[i][i]; //求出第一条对角线的元素和;
}
printf("
其元素的和值为:%d
", sum1);
printf("
第二条对角线的元素值分别为:
");
j = 3;//第二条对角线元素为a[0][3]、a[1][2]、a[2][1]、a[3][0],用j的值约束列的值;
for(i=0; i<4; i++)
{
printf("a[%d][%d]=%-3d", i, i+j, a[i][i+j]);//打印第二条对角线的元素及其值;
sum2 += a[i][i+j]; //求出第二条对角线的元素和;
j-=2; //第二条对角线元素列的值每次-1,但是行的值每次+1,所以j的值每次-2;
}
printf("
其元素的和值为:%d
", sum2);
printf("
两条对角线元素的和值为:%d
", sum1+sum2);
return 0;
}
运行结果:
扩展资料:printf()用法:
1、printf()函数是格式化输出函数,一般用于向标准输出设备按规定格式输出信息。
格式输出,它是c语言中产生格式化输出的函数(在stdio.h中定义)。用于向终端(显示器、控制台等)输出字符。格式控制由要输出的文字和数据格式说明组成。
要输出的文字除了可以使用字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义。
简单点理解就是,在一段程序中你正确使用该函数,可以在该程序运行的时候输出你所需要的内容。
2、printf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。但作为一个特例,不要求在使用printf函数之前必须包含stdio.h文件。
printf()函数的调用格式为:printf("<格式化字符串>",<参量表>)。
其中格式化字符串用于指定输出格式。格式控制串可由格式字符串和非格式字符串两种组成。
用一个两重循环就可以了:#include void main(){int a[3][4] = {0}, row, col;
printf("请输入数组元素的值(3行4列):
");
for (row=0; row<3; row++)
for (col=0; col<4; col++)
scanf("%d", &a[row][col]);
printf("您输入的数组为:
");
for (row=0; row<3; row++){//输出当前行的元素
for (col=0; col<4; col++)
printf("%3d", a[row][col]);//换行
printf("
");
}
}
扩展资料:
C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。 目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。
其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
参考资料:C语言_百度百科
#include<stdio.h>
void printfNum(int (*)[4]);//打印矩阵
void ch(int (*nums)[4],int l1,int l2);//指定的两行交换数据
void cl(int (*nums)[4],int l1,int l2);//指定的两列交换数据
int main()
{
int nums[4][4],i,j,h1,h2,l1,l2,(*p)[4];
for(i=0;i<4;i++)
{
printf("
输入4*4矩阵的第%d行的4个数:",i+1);
for(j=0;j<4;j++)
{
scanf("%d",&nums[i][j]);
}
}
p=nums;
printf("
输入矩阵为:
");
printfNum(p);
printf("
输入要交换的行数(比如1 2 表示第一行和第二行)");
scanf("%d%d",&h1,&h2);
ch(p,h1,h2);
printf("
矩阵第%d行和第%d行交换以后为:
",h1,h2);
printfNum(p);
printf("
输入要交换的列数(比如1 2 表示第一列和第二列)");
scanf("%d%d",&l1,&l2);
cl(p,l1,l2);
printf("
矩阵第%d列和第%d列交换以后为:
",l1,l2);
printfNum(p);
}
void printfNum(int (*nums)[4])//打印矩阵
{
int i,j;
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
printf("%d ",nums[i][j]);
}
printf("
");
}
}
void ch(int (*nums)[4],int l1,int l2)//指定的两行交换数据
{
int i,save;
for(i=0;i<4;i++)
{
save=nums[l1-1][i];
nums[l1-1][i]=nums[l2-1][i];
nums[l2-1][i]=save;
}
}
void cl(int (*nums)[4],int l1,int l2)//指定的两列交换数据
{
int i,save;
for(i=0;i<4;i++)
{
save=nums[i][l1-1];
nums[i][l1-1]=nums[i][l2-1];
nums[i][l2-1]=save;
}
}
你是要这样的吗?
与行进行交换