C语言:生成一个4*4数组,并找出与一个指定数字最相近的元素的值以及所在位置

版权声明:根据《中华人民共和国著作权法》,如需转载请标明来源并联系作者进行授权。本文作者保留依法追究未经授权转载等侵犯作者著作权等的违法行为之权利。 https://blog.csdn.net/qq_41933331/article/details/79966258

题目来源:大工慕课 链接
作者:Caleb Sung

题目要求

使用两重循环为一个4X4的二维数组赋值,形如{{11,12,13,14},{21,22,23,24},{31,32,33,34},{41,42,43,44}},然后从键盘输入一个整数,输出与该整数最接近的元素,及其所在的行和列。

提示

  • math.h这个头文件有abs()方法可用于求绝对值。
  • 要记得用变量储存过程中的行列位置,详细请看代码

参考解答

这里计算使用的数组是随机的:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>

void main(){
    int a[4][4], i, j, d=999, input, tmp_i, tmp_j;
    srand(time(NULL)); 

    printf("请输入数字:  ");
    scanf("%d", &input);

    for(i=0; i<4; i++)
        for(j=0; j<4; j++)
            a[i][j] = rand()%100+0;
    printf("\n随机生成的数组为:\n");

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

    for (i=0; i<4; i++){
        for(j=0; j<4; j++){
            if (abs(a[i][j] - input) < d){
                d = abs(a[i][j]-input);
                tmp_i = i;
                tmp_j = j;
            }
        }
    }

    printf("数组中与输入的数字最接近的元素是:   %d\n", a[tmp_i][tmp_j]);
    printf("这个元素位于第 %d 行第 %d 列.", tmp_i+1, tmp_j+1);
}

运行结果

【输出】

请输入数字:

【输入】
26

【输出】

随机生成的数组为:
37      15      7       14
77      46      52      34
50      70      0       60
2       44      29      30

数组中与输入的数字最接近的元素是:      29
这个元素位于第 4 行第 3 列.
阅读更多

扫码向博主提问

Caleb_Sung

非学,无以致疑;非问,无以广识
  • 擅长领域:
  • 数据挖掘
  • 数据可视化
  • 机器学习
去开通我的Chat快问
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页