C语言第十一章
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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; }