[求助]C语言例题求解惑

longlong6267 2011-07-27 07:59:09
题目:输入10个1位正整数存入一维整形数组,统计并输出其中出现次数最多的次数的数以及出现的次数。要求用指向一维数组的指针变量来处理数组元素

void main()
{ static int a[10]={0},n[10],*p,*q;
for(p=a;p<a+10;p++)
scanf("%d",p);
for(p=a;p<a+10;p++)
n[*p]++;
q=p=n;
p++;
while(p<n+10)
{ if(*P<*q)
q=p;
p++;
}
printf("%d %d\n",q-n,*q);
}


疑问1 为什么声明要使用static
疑问2 q-n为什么是出现次数最多的一位整数 怎么计算的?


谢谢
...全文
90 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
longlong6267 2011-07-27
  • 打赏
  • 举报
回复
额 感谢#3L指点 我明白了 前面下标那里是怎么统计次数的 理解不够透彻导致后面看不懂 呵呵
longlong6267 2011-07-27
  • 打赏
  • 举报
回复
q最后不是指向数组n的其中一个元素么?
q-n输出的不应该是次数么?

题目的问题 我认为应该输出a数组里面的元素值
hndcwynui 2011-07-27
  • 打赏
  • 举报
回复
疑问1 其实不一定要使用static, 用static 声明表示数据放在静态存储区
疑问2 其实这个程序是有问题的,它要求你只能输入0-9之间的数, 如果超出这个范围就会出现数组越界访问了
q-n为什么是出现次数最多的一位整数 怎么计算的? 程序最后q是指向次数最多的位置, n是数组起始地址, q-n就是q指向的数组下标了, 在这里也即是次数出现最多的一位整数
longlong6267 2011-07-27
  • 打赏
  • 举报
回复
课本上就这么写的。。。。

请问哪里应该修改?
c_losed 2011-07-27
  • 打赏
  • 举报
回复
我了个去 你这代码明显不对么。。。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧