永发信息网

#include<stdio.h> main() {int a[10].*p,*s; for(p=a;p-a<10;p++) scanf("%d",p); for

答案:2  悬赏:0  手机版
解决时间 2021-12-24 03:48
  • 提问者网友:流星是天使的眼泪
  • 2021-12-23 04:04
p++)
if(*p>*s) s=p;
printf("index=%d\n “, )
这个程序是求得数组元素所在的位置 并输出该最大值 在输出语句协代表最大值的输出项。
1请问第一步for(p=a;p-a<10;p++) 是做什么用的?
2这一步是什么意思 还有下一部for(p=a;p-a<10;p++) 是什意思 做什么用的
3p是什么 a是什么 p-a 是什么?
最佳答案
  • 五星知识达人网友:山河有幸埋战骨
  • 2021-12-23 05:26
我先回答一下第三问:
3、a:数组 a[10] 的首地址指针(常量),即 a==&a[0]。p:int 类型指针。p-a:指针p到指针a的距离,例如:如果p指向a[5],那么 p-a==5。
1、第一步 for 循环的用途是:用 p 指针遍历数组 a[10]。
2、这一步的目的是输入十个整数存到数组 a[10]
1) p = a, 即 p = &a[0], 使指针p指向a[0]
2) p - a < 10, 判断指针的位置,当p指向a[0](数组a[10]的第1个数)时p-a==0,当p指向a[10](数组a[10]的第11个数)时p-a==10,此时p-a不小于10,退出循环。
3) scanf("%d",p) 将输入的整数存入p指向的地址中,例如:如果p指向a[0],就存入a[0]当中。
4) p++, p指向下一个整数,例如:如果之前p指向a[0],那么p就重新指向a[1]。
5) 继续执行 2)。
下一步的目的是找出这10个数中最大的数的地址:s,方法和第一步类似,用p遍历数组a[10],s默认指向a[0],if (*p>*s) s=p; 比较p地址指向的整数是否大于s地址指向的整数,如果是的话就把s指向p指向的整数。
全部回答
  • 1楼网友:英雄的欲望
  • 2021-12-23 05:44
#include //引用文件 main()//主函数 { int a[10].*p,*s; for(p=a;p-a<10;p++) scanf("%d",p); //在数组a中,一次输入10个数 for(p=a,s=a;p-a<10;p++ ) //p,s都指向数组第一个元素的地址,p加一 if(*p>*s) //如果p指向的地址的数值大于s指向的地址的数值 s=p;//把p指向的地址赋值给s指向的地址,s也就是为了保存当前循环的最大值的地址 printf("index=%d\n",s-a);//输出数组中最大值在数组中的下标 }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯