鱼C论坛

 找回密码
 立即注册
查看: 1080|回复: 1

[已解决]求助c语言指针问题

[复制链接]
发表于 2020-12-16 20:16:25 From FishC Mobile | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
从键盘为数组a[4][4]输入数据,分别用指向数组元素的指针变量和指向一维数组的指针变量输入输出数组元素,求该数组每一行的最大值,将这些值保存在一维数组b[4]中
最佳答案
2020-12-16 21:42:40
  1. #include <stdio.h>

  2. int main(void)
  3. {
  4.         int a[4][4] = {0} , b[4] , i , j , k , * p1 = a[0] , (* p2)[4] = a      ;
  5.         for(i = 0 ; i < 4 ; i ++) {
  6.                 for(j = 0 ;j < 4 ; j ++) scanf("%d" , & a[i][j])                ;
  7.                 fflush(stdin)                                                   ;
  8.         }

  9. //用二维数组指针寻找行最大值

  10.         for(i = 0 ; i < 4 ; i ++) {
  11.                 b[i] = * (* (p2 + i)) ;
  12.                 for(j = 0 ; j < 4 ; j ++) {
  13.                         if(* (* (p2 + i) + j) > b[i]) b[i] = * (* (p2 + i) + j) ;
  14.                 }      
  15.         }
  16.         for(i = 0 ; i < 4 ; i ++) printf("%d\n" , b[i])                         ;
  17.         for(i = 0 ; i < 4 ; i ++) b[i] = 0                                      ;

  18. //用一维数组指针寻找行最大值

  19.         for(i = 0 ; i < 16 ; i ++) {
  20.                 if(! (i % 4)) {
  21.                         b[i / 4] = * (p1 + i)                                   ;
  22.                 } else {
  23.                         if(* (p1 + i) > b[i / 4]) b[i / 4] = * (p1 + i)         ;
  24.                 }
  25.         }
  26.         for(i = 0 ;i < 4 ; i ++) printf("%d\n" , b[i])                          ;
  27. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-12-16 21:42:40 | 显示全部楼层    本楼为最佳答案   
  1. #include <stdio.h>

  2. int main(void)
  3. {
  4.         int a[4][4] = {0} , b[4] , i , j , k , * p1 = a[0] , (* p2)[4] = a      ;
  5.         for(i = 0 ; i < 4 ; i ++) {
  6.                 for(j = 0 ;j < 4 ; j ++) scanf("%d" , & a[i][j])                ;
  7.                 fflush(stdin)                                                   ;
  8.         }

  9. //用二维数组指针寻找行最大值

  10.         for(i = 0 ; i < 4 ; i ++) {
  11.                 b[i] = * (* (p2 + i)) ;
  12.                 for(j = 0 ; j < 4 ; j ++) {
  13.                         if(* (* (p2 + i) + j) > b[i]) b[i] = * (* (p2 + i) + j) ;
  14.                 }      
  15.         }
  16.         for(i = 0 ; i < 4 ; i ++) printf("%d\n" , b[i])                         ;
  17.         for(i = 0 ; i < 4 ; i ++) b[i] = 0                                      ;

  18. //用一维数组指针寻找行最大值

  19.         for(i = 0 ; i < 16 ; i ++) {
  20.                 if(! (i % 4)) {
  21.                         b[i / 4] = * (p1 + i)                                   ;
  22.                 } else {
  23.                         if(* (p1 + i) > b[i / 4]) b[i / 4] = * (p1 + i)         ;
  24.                 }
  25.         }
  26.         for(i = 0 ;i < 4 ; i ++) printf("%d\n" , b[i])                          ;
  27. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-8 02:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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