4. (程序题)【问题描述】4.2 将一个3X2的矩阵(3行2列)的矩阵存入一个3X2的二维数组中,并输出矩阵。同时,找出矩阵中的最大值以及最大值所在的行下标和列下标,输出最大值所在的行下标和列下标及最大值。
【输入输出样例】
【样例说明】
输入提示符中冒号为英文符号,后面无空格,需换行。
输出矩阵时整数按照%4d格式输出。
最后输出结束不换行
/将一个32的矩阵的矩列存入二维数组*/
#include
#define N 3
#define M 2
#define K 6
int main()
{
int a[N][M];
int b[K];
int max,k,i,j;
printf("Enter 6 integers:\n");
for(k=0;k
scanf("%d",&b[k]);
printf("\n");//输入六个数字
max=b[0];
for(k=1;k
if(b[k]>max)max=b[k];//取最大值
k=0;//k恢复从头开始
for(i=0;i
for(j=0;j
a[i][j]=b[k];
printf("%4d",a[i][j]);
k++;}
}//存入矩阵
for(i=0;i
for(j=0;j
if(a[i][j]==max)
printf("max=a[%d][%d]=%d",i,j,max);break;//矩阵中等于最大值时输出
}
return 0;
}
2. (程序题, 20分) 【问题描述】3.2.18 自守数。自守数是其平方后尾数等于该数自身的自然数。
例如:55=25, 2525=625
求1~1000之间的所有自守数,每行输出5个数,每个数占6位。
【样例输出】
1 5 6 25 76
376 625
/自守数/
#include
#define H 20
#define L 5
int main()
{
int a[H][L];//5列每行
int i,h=0,l=0,j=1;
for(i=1;i<=1000;i++){//1到1000的数
while(j<=i) j*=10;
if(i*i%j==i){//判断是否是自守数
a[h][l]=i;//赋值
printf("%6d",a[h][l]);//输出
if(l<4)l++;
else {l=0;h++;}//第5列换行
}
}
return 0;
第1题修改如下,供参考:
#include <stdio.h>
#define N 3
#define M 2
#define K 6
int main()
{
int a[N][M];
//int b[K];
int max, max_i, max_j, i, j;
printf("Enter 6 integers:\n");
for (i = 0; i < N; i++)
for (j = 0; j < M; j++)
scanf("%d", &a[i][j]); //输入矩阵
//for (k = 0; k < K; k++)
// scanf("%d", &b[k]);
//printf("\n");//输入六个数字
//max = b[0];
//for (k = 1; k < K; k++)
// if (b[k] > max)max = b[k];//取最大值
//k = 0;//k恢复从头开始
max = a[0][0]; max_i = 0; max_j = 0;
for (i = 0; i < N; i++) { //输出矩阵 并找到最大值
for (j = 0; j < M; j++) {
printf("%4d", a[i][j]);
if (max < a[i][j]) {
max = a[i][j];
max_i = i; //记录行号
max_j = j; //记录列号
}
}
printf("\n");
}
//for (i = 0; i < N; i++) {
// for (j = 0; j < M; j++)
// if (a[i][j] == max)
printf("max=a[%d][%d]=%d", max_i, max_j, a[max_i][max_j]); //break;//矩阵中等于最大值时输出
//}
return 0;
}
第2题改动处见注释,供参考:
#include <stdio.h>
#define H 20
#define L 5
int main()
{
int a[H][L];//5列每行
int i, h = 0, l = 0, j = 1;
for (i = 1; i <= 1000; i++) {//1到1000的数
while (j <= i) j *= 10;
if (i * i % j == i) {//判断是否是自守数
a[h][l] = i;//赋值
printf("%6d", a[h][l]);//输出
if (l < 4) l++;
else { //第5列换行
printf("\n"); //修改 输出换行
l = 0;
h++;
}
}
}
return 0;
}