c语言 输出二维数组任意行任意列元素的值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言 输出二维数组任意行任意列元素的值相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
void main()

int a[3][4]=1,3,5,7,9,11,13,15,17,19,21,23;
int (*p)[4],i,j;
p=a;
scanf("i=%d,j=%d",&i,&j);
printf("a[%d,%d]=%d\n",i,j,*(*(p+i)+j));
谭浩强书上的代码,运行有错啊,求高人指点

测试结果:
2,3
a[2,3]=23
请按任意键继续. . .

代码:

#include "stdio.h"
#include "stdlib.h"

main()

int a[3][4]=1,3,5,7,9,11,13,15,17,19,21,23;
int (*p)[4],i,j;
p=a;
scanf("%d,%d",&i,&j);
printf("a[%d,%d]=%d\n",i,j,*(*(p+i)+j));
system("pause");


说明:scanf最后不要加i=,j=之类的。纯粹获取输入就可以了。
参考技术A 如果用VC6.0编译的话
程序最前面加上#include "stdafx.h"就不报错了

如果提示 a[-858993460,-858993460]=-858993460
那说明输入格式错误 必须按 i=1,j=2 的格式输入才行 ,其中的 1,2可是随便换追问

谢谢哦,没办法只能给最快的那给人

参考技术B #include<stdio.h>
void main()

int a[3][4]=1,3,5,7,9,11,13,15,17,19,21,23;
int (*p)[4],i,j;
p=a;
scanf("%d%d",&i,&j);/*去掉i=,j=*/
printf("a[%d,%d]=%d\n",i,j,*(*(p+i)+j));
追问

谢谢哦,没办法只能给最快的那给人

参考技术C int a[3][4]=1,3,5,7,9,11,13,15,17,19,21,23;
int (*p)[4],i,j;
p=a;
printf("please input the row and columns: ");
scanf("%d,%d",i,j);
printf("a[%d,%d]=%d\n",i,j,*(*(p+i)+j));追问

谢谢哦,没办法只能给最快的那给人

参考技术D 可能是在win7或虚拟机里用的编译器无法正常工作

c语言查找二维数组的鞍点 新生求助大佬

对于给定的整数矩阵A[5,5],设计算法查找出所有的鞍点。
提示:鞍点的特点:列上最小,行上最大。

输入格式:
输入5行5列整数,同行数据间以空格为间隔。

输出格式:
在一行中以以下格式输出矩阵中的所有鞍点,每个鞍点的显示格式为:
[<鞍点的行坐标>,<鞍点的列坐标>,<鞍点的值>]

输入样例:
11 3 5 6 9
12 4 7 8 10
10 5 6 9 11
8 6 4 7 8
15 10 11 20 25
结尾无空行
输出样例:
[3,0,8][3,4,8]
结尾无空行

C语言查找二维数组的鞍点详细代码如图:

具体思路:

一、先把每行的最大值求出来×到数组;

二、依次遍历每行,如果其值等于最大值,再判断在列中是否最小即可。

三、输出结果。

参考技术A

#include <stdio.h>

int main()

int i,j,min,max,m=5,n=5,found=0;

  int a[5][5],h[5],l[5];

  for(i=0; i<m; i++)

    for(j=0; j<n; j++)

      scanf("%d",&a[i][j]);

  for(i=0; i<m; i++)

  h[i]=a[i][0];

    for(j=1; j<n; j++)

      if(a[i][j]>h[i])

        h[i]=a[i][j];

  //找出每行最大值

  for(j=0; j<n; j++)

  l[j]=a[0][j];

    for(i=1; i<m; i++)

      if(a[i][j]<l[j])

        l[j]=a[i][j];

  //找出每列最小值

  for(i=0; i<m; i++)

  for(j=0; j<n; j++)

      if(l[j]==h[i])

        printf("[%d,%d,%d]",i,j,a[i][j]);

         found=1;

       

  //进行比较,若行最小与列最大相等,则输出

  if(!found)printf("没有鞍点");

本回答被提问者采纳
参考技术B 开两个数组,一个数组存每一行的最大值,一个数组存每一列的最小值。先扫两遍矩阵把这两个数组计算出来,然后再扫一遍检查矩阵中每个元素是否同时等于其所处列的最小值与所处行的最大值,如果是就是鞍点,这样就行了吧。

以上是关于c语言 输出二维数组任意行任意列元素的值的主要内容,如果未能解决你的问题,请参考以下文章

C语言如何定义一个N行N列的二维数组任意输入数据

C语言 如何将一个二维数组的值全部替换成另一个二维数组

C语言 输出二维数组任一行任一列元素的值

C语言怎么定义一个二维数组可以使每行的输入长度任意

c语言中怎样实现对二维数组元素进行赋值并输出。

C语言中 指针做函数参数传递二维数组