C语言第十一章

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用指向一维数组的指针变量即二维数组的行指针作为函数参数,实现矩阵转置。按如下函数原型编程计算并输出m×n阶矩阵的转置矩阵。其中,m和n的值由用户从键盘输入。已知m和n的值都不超过10。

void Transpose(int (*a)[N], int (*at)[M], int m, int n);

void InputMatrix(int (*a)[N], int m, int n);

void PrintMatrix(int (*at)[M], int n, int m);

输入提示信息:"Input m, n:"

输入格式:"%d,%d"

输入提示信息:"Input %d*%d matrix:\n"

输出提示信息和格式:"The transposed matrix is:\n"

输出格式:"%d\t"

#include

#define M 10

#define N 10

void Transpose(int (*a)[N], int (*at)[M], int m, int n);

void InputMatrix(int (*a)[N], int m, int n);

void PrintMatrix(int (*at)[M], int n, int m);

int main()

{

int s[M][N],st[N][M],m,n;

printf("Input m, n:");

scanf("%d,%d",&m,&n);

InputMatrix(s,m,n);

Transpose(s,st,m,n);

printf("The transposed matrix is:\n");

PrintMatrix(st,n,m);

return 0;

}

void Transpose(int (*a)[N], int (*at)[M], int m, int n)

{

int i,j;

for(i=0;i

{

for(j=0;j

{

*(*(at+j)+i)=*(*(a+i)+j);

}

}

}

void InputMatrix(int (*a)[N], int m, int n)

{

int i,j;

printf("Input %d*%d matrix:\n",m,n);

for(i=0;i

{

for(j=0;j

{

scanf("%d",*(a+i)+j);

}

}

}

void PrintMatrix(int (*at)[M], int n, int m)

{

int i,j;

for(i=0;i

{

for(j=0;j

{

printf("%d\t",*(*(at+i)+j));

}

printf("\n");

}

}

从键盘任意输入一个整型表示的月份值,用指针数组编程输出该月份的英文表示,若输入的月份值不在1~12之间,则输出“Illegal month”。

**输入格式要求:"%d" 提示信息:"Input month number:"

**输出格式要求:"month %d is %s\n"

"Illegal month", "January", "February", "March", "April", "May", "June", "July", August", "September", "October", "November", "December"

程序运行示例1如下:

Input month number:5

month 5 is May

程序运行示例2如下:

Input month number:13

Illegal month

#include

int main()

{

int n;

static char*monthName[]={"Illegal month", "January", "February", "March", "April", "May", "June", "July", “August", "September", "October", "November", "December"};

printf("Input month number:");

scanf("%d",&n);

if((n<=12)&&(n>=1))

printf("month %d is %s\n",n,monthName[n]);

else

printf("%s\n",monthName[0]);

return 0;

}

按如下函数原型编程计算并输出n×n阶矩阵的转置矩阵。其中,n由用户从键盘输入。已知n值不超过10。

void Transpose(int *a, int n);

void Swap(int *x, int *y);

void InputMatrix(int *a, int n);

void PrintMatrix(int *a, int n);

输入提示信息:"Input n:"

输入格式:"%d"

输入提示信息:"Input %d*%d matrix:\n"

输出提示信息:"The transposed matrix is:\n"

输出格式:"%d\t"

#include

#define N 10

void Transpose(int *a, int n);

void Swap(int *x, int *y);

void InputMatrix(int *a, int n);

void PrintMatrix(int *a, int n);

int main()

{

int s[N][N],n;

printf("Input n:");

scanf("%d",&n);

InputMatrix(*s,n);

Transpose(*s,n);

printf("The transposed matrix is:\n");

PrintMatrix(*s,n);

return 0;

}

void Swap(int *x, int *y)

{

int temp;

temp=*x;

*x=*y;

*y=temp;

}

相关文档
最新文档