鱼C论坛

 找回密码
 立即注册
查看: 3535|回复: 20

利用指针指定打印二维数组的某行某列的元素

[复制链接]
发表于 2023-8-1 19:17:26 | 显示全部楼层
  1. #include <stdio.h>
  2. double er(double *abcd, int x, int y)
  3. {
  4.     int a, b;
  5. read_input:
  6.     printf("输入你要打印的元素。(格式:行,列)\n");
  7.     scanf("%d,%d", &a, &b);
  8.     if (a > x || b > y || a <= 0 || b <= 0)
  9.     {
  10.         printf("你输入的行或者列错误。\n");
  11.         goto read_input;
  12.     }
  13.     double *p = abcd + (a - 1) * y + (b - 1); // 计算指向所需元素的指针位置
  14.     printf("%f\n", *p);
  15. }
  16. int main()
  17. {
  18.     double ab[9][99] = { 0 };
  19.     int a, b;
  20.     int d = 0, f = 0;
  21.     printf("输入二维数组的行数。\n");
  22.     scanf("%d", &a);
  23.     printf("输入二维数组的列数。\n");
  24.     scanf("%d", &b);
  25.     printf("依次输入二维数组的元素。\n");
  26.     for (;d < a;d++)
  27.     {
  28.         for (;f < b;f++)
  29.         {
  30.             scanf("%lf", &ab[d][f]);
  31.         }
  32.         f = 0;
  33.     }
  34.     er(&ab[0][0], a, b);
  35.     return 0;
  36. }
复制代码

修改内容如下:
1. 移除 scanf_s 函数中的 _s 后缀。
2. 修复换行符 \n 的转义错误。
3. 在输入提示的标签处添加 read_input: 标签。
4. 将 double* p = abcd + (a + 1) * y + (b - 1); 修改为 double *p = abcd + (a - 1) * y + (b - 1);,以修正计算指向所需元素的指针位置。
5. 在 main 函数中,修复换行符的转义错误。
6. 移除 scanf_s 函数中的 _s 后缀。
7. 在内层循环结束后,添加 f = 0; 以重置循环计数器。
8. 添加 return 0; 以返回一个整数类型的值。

希望这次能够满足你的需求,如果还有其他问题,请随时提问。

如果回答对你有帮助,请给我一个最佳答案!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-1 19:24:12 | 显示全部楼层
  1. #include <stdio.h>

  2. void er(double *abcd, int x, int y)
  3. {
  4.     int a, b;
  5. a:
  6.     printf("输入你要打印的元素。(格式:行,列)\n");
  7.     scanf_s("%d,%d", &a, &b);
  8.     if (a > x || b > y || a <= 0 || b <= 0)
  9.     {
  10.         printf("你输入的行或者列错误。");
  11.         goto a;
  12.     }
  13.     printf("%f\n", *(abcd + (a - 1) * y + (b - 1)));
  14. }

  15. int main()
  16. {
  17.     double ab[9][99] = {0};
  18.     int a, b;
  19.     int d = 0, f = 0;
  20.     printf("输入二维数组的行数。\n");
  21.     scanf_s("%d", &a);
  22.     printf("输入二位数组的列数。\n");
  23.     scanf_s("%d", &b);
  24.     printf("依次输入二维数组的元素。\n");
  25.     for (; d < a; d++)
  26.     {
  27.         for (; f < b; f++)
  28.         {
  29.             scanf_s("%lf", &ab[d][f]);
  30.         }
  31.         f = 0;
  32.     }
  33.     d = 0;
  34.     f = 0;
  35.     er(&ab[0][0], a, b);
  36.     return 0;
  37. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-1 19:43:37 | 显示全部楼层
学习编程中的Ben 发表于 2023-8-1 16:42
啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
我也没办法了QAQ

想得美,我不也回答了,你还白嫖一个最佳
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-31 07:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表