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

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

题目要求

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

提示

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

参考解答

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

#include
#include
#include
#include

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 列.

你可能感兴趣的:(大学C语言程序设计,C语言入门基础)