C语言从键盘上输入一些整数(输入0为结束),统计其中最大值整数出现的个数。

33.程序功能:从键盘上输入一些整数(以输入0为结束),统计其中最大值整数出现的个数。
#include<stdio.h>
#define N 100
int input(int *p)
{int x,n=0;
scanf("%d",&x);
while(x!=0){
*(p+n++)=x;
scanf("%d",&x);
}
return n;
}
int f(int *p,int n){
int i,*q=p,max=*p,s=0;
for(i=1;i<n;i++)
if(q[i]>max) max=q[i];
q=p;
for(i=0;i<n;i++)
if(q[i]==max) s++;
return s;
}
void main()
{int a[N],n;
n=input(a);
printf("%d\n",f(a,n));
}
还有别的方法了吗,这个程序的每一个步骤的作用是什么,能不能详细的给我说一说

这个程序中有3个函数,

1、int input(int *p)
这个函数的作用是往一个整型数组中,存放从键盘中输入的数字。并且返回一个整型数,这个返回值表示一共从键盘上输入了几个数字(注:程序中设置了从键盘最多能输入100个整数)。

2、int f(int *p,int n)
这个函数是统计从键盘中输入的数字中最大的有几个。

3、main()
是这个程序运行的主函数。

具体的解释看下面的注释:
#include<stdio.h>
#define N 100 /* N 是定义的一个常量,表示最多能从键盘输入N个数字*/

/* 入口参数*p是一个内存地址 */
int input(int *p)
{int x,n=0;
scanf("%d",&x); /* x是每次从键盘中输入的数字。*/
while(x!=0){ /* n是一个自增量,只要键盘输入的值不是0,while循环就不结束 */
*(p+n++)=x; /* 往p指向的地址中存入数据,n是自增量当做一个地址指针。实际的效果就是往main()函数中定义的数组a中存放从键盘输入的数字。 */
scanf("%d",&x); /* 从键盘读下一个数字 */
}
return n; /* 返回值,一共从键盘输入了几个数字 */
}
int f(int *p,int n){
int i,*q=p,max=*p,s=0;
for(i=1;i<n;i++)
if(q[i]>max) max=q[i]; /* 用一个循环遍历整个数组(main函数中定义的数组a),找出最大的数字 */
q=p;
for(i=0;i<n;i++)
if(q[i]==max) s++; /* 用一个循环遍历整个数组(main函数中定义的数组a),统计最大数字的个数 */
return s; /* 返回统计结果 */
}
void main()
{int a[N],n; /* a[N]是定义的一个整型的数组,数组的长度为N(程序中N为100);n是一个整型变量,存放的是从键盘输入的实际的数字的个数。 */
n=input(a); /* 调用input函数,用数组a的首地址作为入口参数,返回值是从键盘输入的实际的数字的个数。 */
printf("%d\n",f(a,n)); /* 打印出程序的运行结果。 */
}
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网