鱼C论坛

 找回密码
 立即注册
查看: 1426|回复: 4

[已解决]关于指针

[复制链接]
发表于 2020-5-16 17:24:59 | 显示全部楼层 |阅读模式
5鱼币
菜鸟又来求助了;一个实验作业,输入一个3X4的数组先找出每一-行中 的最大元素,再分别除该行中的所有元素,最后输出数组。要求:定义和调用函数处理数组中的元素,在函数中使用指针、数组各一次。
  1. #include<stdio.h>
  2. void max(float a[3][4])
  3. {
  4.         float m[3];
  5.         int i, j;
  6.         for (i = 0;i < 3;i++) {//取出最大值
  7.                 for (j = 0; j < 4;j++) {
  8.                         if (a[i][j] >= m[i]) {
  9.                                 m[i] = a[i][j];
  10.                         }
  11.                 }
  12.         }
  13.         for (i = 0;i < 3;i++) {//各项除去最大值
  14.                 for (j = 0;j < 4;j++) {
  15.                         a[i][j] = a[i][j] / m[i];
  16.                 }
  17.         }
  18. }
  19. int main()
  20. {
  21.         float a[3][4];
  22.         int i, j;
  23.         printf("请输入3*4的数组:");
  24.         for (i = 0;i < 3;i++) {
  25.                 for (j = 0;j < 4;j++) {
  26.                         scanf("%f", &a[i][j]);

  27.                 }
  28.         }
  29.         max(a);
  30.         for (i = 0;i < 3;i++) {
  31.                 for (j = 0;j < 4;j++) {
  32.                         printf("%.2f ", a[i][j]);
  33.                 }
  34.                 printf("\n");
  35.         }
  36.         return  0;

  37. }
复制代码

功能是实现了,但是还要要求用到指针 大佬能看看怎么改嘛?
最佳答案
2020-5-16 17:25:00
指针和数组之间有什么区别?
这样算指针和数组各使用一次吗?

  1. #include<stdio.h>
  2. //void max(float a[3][4])
  3. void max(float (*a)[4])
  4. {
  5.         float m[3];
  6.         int i, j;
  7.         for (i = 0;i < 3;i++) {//取出最大值
  8.                 for (j = 0; j < 4;j++) {
  9.                         if (a[i][j] >= m[i]) {
  10.                                 m[i] = a[i][j];
  11.                         }
  12.                 }
  13.         }
  14.         for (i = 0;i < 3;i++) {//各项除去最大值
  15.                 for (j = 0;j < 4;j++) {
  16.                         a[i][j] = a[i][j] / m[i];
  17.                 }
  18.         }
  19. }
  20. int main()
  21. {
  22.         float a[3][4];
  23.         int i, j;
  24.         printf("请输入3*4的数组:");
  25.         for (i = 0;i < 3;i++) {
  26.                 for (j = 0;j < 4;j++) {
  27.                         scanf("%f", &a[i][j]);

  28.                 }
  29.         }
  30.         max(a);
  31.         for (i = 0;i < 3;i++) {
  32.                 for (j = 0;j < 4;j++) {
  33.                         printf("%.2f ", a[i][j]);
  34.                 }
  35.                 printf("\n");
  36.         }
  37.         return  0;

  38. }
复制代码

最佳答案

查看完整内容

指针和数组之间有什么区别? 这样算指针和数组各使用一次吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-16 17:25:00 | 显示全部楼层    本楼为最佳答案   
指针和数组之间有什么区别?
这样算指针和数组各使用一次吗?

  1. #include<stdio.h>
  2. //void max(float a[3][4])
  3. void max(float (*a)[4])
  4. {
  5.         float m[3];
  6.         int i, j;
  7.         for (i = 0;i < 3;i++) {//取出最大值
  8.                 for (j = 0; j < 4;j++) {
  9.                         if (a[i][j] >= m[i]) {
  10.                                 m[i] = a[i][j];
  11.                         }
  12.                 }
  13.         }
  14.         for (i = 0;i < 3;i++) {//各项除去最大值
  15.                 for (j = 0;j < 4;j++) {
  16.                         a[i][j] = a[i][j] / m[i];
  17.                 }
  18.         }
  19. }
  20. int main()
  21. {
  22.         float a[3][4];
  23.         int i, j;
  24.         printf("请输入3*4的数组:");
  25.         for (i = 0;i < 3;i++) {
  26.                 for (j = 0;j < 4;j++) {
  27.                         scanf("%f", &a[i][j]);

  28.                 }
  29.         }
  30.         max(a);
  31.         for (i = 0;i < 3;i++) {
  32.                 for (j = 0;j < 4;j++) {
  33.                         printf("%.2f ", a[i][j]);
  34.                 }
  35.                 printf("\n");
  36.         }
  37.         return  0;

  38. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-16 17:43:37 | 显示全部楼层
在函数中使用?
这样?
  1. #include<stdio.h>
  2. void max(float a[3][4])
  3. {
  4.         float m[3];
  5.         int i, j;
  6.         for (i = 0;i < 3;i++) {//取出最大值
  7.                 for (j = 0; j < 4;j++) {
  8.                         //if (a[i][j] >= m[i]) {
  9.                         if (*(a + i)[j] >= m[i]) {
  10.                                 m[i] = a[i][j];
  11.                         }
  12.                 }
  13.         }
  14.         for (i = 0;i < 3;i++) {//各项除去最大值
  15.                 for (j = 0;j < 4;j++) {
  16.                         a[i][j] = a[i][j] / m[i];
  17.                 }
  18.         }
  19. }
  20. int main()
  21. {
  22.         float a[3][4];
  23.         int i, j;
  24.         printf("请输入3*4的数组:");
  25.         for (i = 0;i < 3;i++) {
  26.                 for (j = 0;j < 4;j++) {
  27.                         scanf("%f", &a[i][j]);

  28.                 }
  29.         }
  30.         max(a);
  31.         for (i = 0;i < 3;i++) {
  32.                 for (j = 0;j < 4;j++) {
  33.                         printf("%.2f ", a[i][j]);
  34.                 }
  35.                 printf("\n");
  36.         }
  37.         return  0;

  38. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-16 17:51:14 | 显示全部楼层
人造人 发表于 2020-5-16 17:25
指针和数组之间有什么区别?
这样算指针和数组各使用一次吗?

我觉得也没区别,用到就算吧,
  1. void max(float (*a)[4])
复制代码
这一段是个指针?我一开始改的是
  1. float *a
复制代码
但是报错了_(:з」∠)_
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-16 18:00:31 | 显示全部楼层
人造人 发表于 2020-5-16 17:25
指针和数组之间有什么区别?
这样算指针和数组各使用一次吗?

哦,懂了,一级指针引用二维数组,谢谢大佬
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-16 04:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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