c语言程序编写 输入一个4×3的整数矩阵,输出其中最大值,最小值和他们的下标(行号和列号)

顺便写上分析和注释 各位大神帮帮忙 谢谢了

#include<stdio.h>
void main(){
int arr[4][3];
int i,j,min,max;

int r1=0,r2=0,c1=0,c2=0;
for(i=0;i<4;i++)//输进二维数组
for(j=0;j<3;j++){
printf("Input arr[%2d][%2d]: ",i,j);
scanf("%d",&arr[i][j]);
}

max=arr[0][0];//令最大值初始化为arr[0][0]
min=arr[0][0];//令最小值初始化为arr[0][0]
printf("\n\n\t--------Arr[][]----------\n");//打印二维数组

for(i=0;i<4;i++){
printf("\n\t");
for(j=0;j<3;j++)
printf("%5d",arr[i][j]);
}

if(arr[i][j]>max){//当arr[i ][j]>max时,令max=arr[i][j],r1=i;c1=j
max=arr[i][j];
r1=i;
c1=j;

}
if(arr[i][j]<min){//当arr[i ][j]<min时,令min=arr[i][j],r2=i;c2=j
min=arr[i][j];
r2=i;
c2=j;

printf("\nThis is max: %2d, r: %2d , c: %2d",max,r1,c1);
printf("\nThis is min: %2d, r: %2d , c: %2d",min,r2,c2);
printf("\n\n\t");
}

扩展资料:

C语言编程时常犯的错误:

 1 、书写标识符时,忽略了大小写字母的区别

main(){ int a=5; printf("%d",A);}

编译程序把a和A认为是两个不同的变量名,而显示出错信息。C认为大写字母和小写字母是两个不同的字符。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。

 2 、忽略了变量的类型,进行了不合法的运算

代码如下:

main(){ float a,b; printf("%d",a%b);}

%是求余运算,得到a/b的整余数。整型变量a和b可以进行求余运算,而实型变量则不允许进行“求余”运算。

3 、将字符常量与字符串常量混淆

char c;

c=”a”;

在这里就混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。

C规定以“\”作字符串结束标志,它是由系统自动加上的,所以字符串“a”实际上包含两个字符:‘a’和‘’,而把它赋给一个字符变量是不行的。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-05-11
#include<stdio.h>
void main(){
 int arr[4][3];
 int i,j,min,max;
 int r1=0,r2=0,c1=0,c2=0;
 for(i=0;i<4;i++)//输进二维数组 
  for(j=0;j<3;j++){
   printf("Input arr[%2d][%2d]: ",i,j);
   scanf("%d",&arr[i][j]);
  }
 max=arr[0][0];//令最大值初始化为arr[0][0] 
 min=arr[0][0];//令最小值初始化为arr[0][0] 
 printf("\n\n\t--------Arr[][]----------\n");//打印二维数组 
 for(i=0;i<4;i++){
  printf("\n\t");
  for(j=0;j<3;j++)
   printf("%5d",arr[i][j]);
 }

 for(i=0;i<4;i++)
  for(j=0;j<3;j++){
   if(arr[i][j]>max){//当arr[i ][j]>max时,令max=arr[i][j],r1=i;c1=j 
    max=arr[i][j];
    r1=i;
    c1=j;
   }
   if(arr[i][j]<min){//当arr[i ][j]<min时,令min=arr[i][j],r2=i;c2=j    
 min=arr[i][j];
    r2=i;
    c2=j;
   }
  }
  printf("\nThis is max: %2d, r: %2d , c: %2d",max,r1,c1);
  printf("\nThis is min: %2d, r: %2d , c: %2d",min,r2,c2);
  printf("\n\n\t");
}

//望采纳

追问

谢谢

本回答被提问者和网友采纳
第2个回答  2014-05-11
#include <stdio.h>

int main(void)
{
int i;
int j;
int t_line;
int t_row;
int tmp;
int t_array[4][3];
for(i = 0; i < 4; i++)
{
for(j = 0; j < 3; j++)
{
scanf("%d", &t_array[i][j]);
}
}
for(i = 0; i < 4; i++)
{
for(j = 0; j < 3; j++)
{
printf("%d ", t_array[i][j]);
}
printf("\n");
}
printf("\n");
tmp = t_array[0][0];
t_line = 0;
t_row = 0;
for(i = 0; i < 4; i++)
{
for(j = 0; j < 3; j++)
{
if(tmp > t_array[i][j])
{
tmp = t_array[i][j];
t_line = i;
t_row = j;
}
}
}
printf("最大值:t_array[%d][%d] = %d\n", t_line, t_row, tmp);
tmp = t_array[0][0];
for(i = 0; i < 4; i++)
{
for(j = 0; j < 3; j++)
{
if(tmp < t_array[i][j])
{
tmp = t_array[i][j];
t_line = i;
t_row = j;
}
}
}
printf("最大值:t_array[%d][%d] = %d\n", t_line, t_row, tmp);
return 0;
}追问

谢谢

第3个回答  2014-05-11
#include <stdio.h>
#include <limits.h>

int A[12];
void main(){
for(int i=0;i<12;i++)
scanf("%d",A+i);
int max=INT_MIN;
int maxId;
int min=INT_MAX;
int minId;
for(int j=0;j<12;j++){
if(*(A+j)>max){
max=*(A+j);
maxId=j;
}
if(*(A+j)<min){
min=*(A+j);
minId=j;
}
}

printf("the max of the matrix is %d\t row:%d col:%d\n",max,maxId/3+1,maxId%3+1);
printf("the min of the matrix is %d\t row:%d col:%d\n",min,minId/3+1,minId%3+1);
}追问

谢谢