求问一道c语言编程题,在二维数组中进行查找 输出下标
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求问一道c语言编程题,在二维数组中进行查找 输出下标相关的知识,希望对你有一定的参考价值。
#include <stdio.h>int main() int a[3][5]; int i,j,n; for(i=0;i<3;i++) for(j=0;j<5;j++) scanf("%d",&a[i][j]); scanf("%d",&n); for(i=0;i<3;i++) for(j=0;j<5;j++) if(a[i][j]==n) break; printf("%d %d",i,j); 这样输出是很乱的数字
C语言程序:#include <stdio.h>
#include <string.h>
#define ROW 5
#define MAX 100
void main()
/* 存储题目 */
char question[ROW][MAX] =
"以下表示C语言中短整型的是:",
"以下不属于整数类型的是:",
"执行'int x=1; int y=x++;'后y的值是:",
"以下说法错误的是:",
"执行'int i; for(i=0;i<10;i++); printf(\"%d\",i);'后的运行结果是:";
/* 存储4个答案 */
char *answer[ROW][4] =
"A. int", "B. short", "C. long", "D. small",
"A. int", "B. short", "C. long", "D. small",
"A. 1", "B. 2", "C. -1", "D. 0",
"A. main函数是C程序的入口", "B. 一个C程序可以包含多个函数", "C. C程序对大小写不敏感", "D. 数组一经定义,它的大小不容改变",
"A. 11", "B. 0123456789", "C. 0", "D. 陷入死循环";
/* 存储正确答案 */
char key[ROW] = 'B','D','A','C','A';
char choice;
int score = 0;
int n, col;
printf("C语言程序设计测试\n");
printf("--------------------------------------------------------\n");
for(n=0; n<ROW; n++)
printf("%d. %s\n", n+1, question[n]);
for(col=0; col<4; col++)
printf("%s\n", answer[n][col]);
printf("您的答案:");
scanf("%c", &choice);
getchar();
if(choice == key[n] || (choice - 32) == key[n])
score += 20;
printf("\n");
printf("测试结束\n");
printf("您的最终得分:%d\n", score);
参考技术A 按照逻辑,printf("%d %d", i, j)应该是找到的下标,那就应该在if语句中包含,可是原来的程序没有花括号,只执行了break,符合的数字就跳过了,反而打印的是不符合的数字。所以加上花括号把两条语句包含在内。
而且在一开始再声明一个int 变量int isfound = 0;在if语句中设置isfound = 1,在程序最后判断
if(isfound == 0)
printf("没有找到").这样就完整了。
剑指Offer编程题(Java实现)——二维数组中的查找
题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
解题思路
根据排序特点,该二维数组中的一个数,小于它的数一定在其左边,大于它的数一定在其下边。
因此,从右上角开始查找,就可以根据 target 和当前元素的大小关系来缩小查找区间,当前元素的查找区间为左下角的所有元素。
时间复杂度 O(M + N),空间复杂度 O(1)。其中 M 为行数,N 为 列数。
答案
public class Solution public boolean Find(int target, int [][] array) if (array == null || array.length == 0 || array[0].length == 0) return false; int x = 0; int y = array[0].length - 1; while(x < array.length && y >= 0) if(array[x][y] == target) return true; else if(array[x][y] > target) y--; else x++; return false;
运行时间:170ms
占用内存:16512k
【注意】
判断array是否为空语句一定要加上,一开始没加怎么都通过不了,也算是考验代码健壮性。
以上是关于求问一道c语言编程题,在二维数组中进行查找 输出下标的主要内容,如果未能解决你的问题,请参考以下文章