提示输入5个学生的成绩(保证分数在0~100之间),算出平均分、最高分、最低分,然后输出,请问我这哪里错了
答案:3 悬赏:30 手机版
解决时间 2021-11-26 06:40
- 提问者网友:我们很暧昧
- 2021-11-25 07:13
提示输入5个学生的成绩(保证分数在0~100之间),算出平均分、最高分、最低分,然后输出,请问我这哪里错了
最佳答案
- 五星知识达人网友:神鬼未生
- 2021-11-25 07:52
if(*p > *max) max=p;
if(*p < *min) max=p;
不明白你这个想做什么?这样的话实际的max的值并没有改变。而且为什么两个都是max
sum/5;中,sum是int类型,会精度丢失追问精度没关系。
if(*p > *max) max=p; // 如果*p值大于最大值,则将max指向p的地址
if(*p < *min) max=p; // 如果*p值小于最小值,则将min指向p的地址追答问题max指针是函数作用域,他在函数结束时候将被清除。追问不会啊,我在主函数中将max和min已经传进这个分函数了,不可能会被清空的追答不同的,这样,当你调用函数avage=jisuan(a,&max,&min);的时候,计算机会创建
一个临时指针叫做max(根据你的函数声明int jisuan(int *p,int *max,int *min);),然后,这个max指针存储接收到的地址,就是你传入的&max.那么很简单一个道理,当你执行max=p时发生了什么?max指针丢掉了传进来的&max,存储了p指针里的地址。然后函数调用完之后,这个创建的临时max指针被操作系统收回。实际上,你函数里做的一切都在这时化为乌有
if(*p < *min) max=p;
不明白你这个想做什么?这样的话实际的max的值并没有改变。而且为什么两个都是max
sum/5;中,sum是int类型,会精度丢失追问精度没关系。
if(*p > *max) max=p; // 如果*p值大于最大值,则将max指向p的地址
if(*p < *min) max=p; // 如果*p值小于最小值,则将min指向p的地址追答问题max指针是函数作用域,他在函数结束时候将被清除。追问不会啊,我在主函数中将max和min已经传进这个分函数了,不可能会被清空的追答不同的,这样,当你调用函数avage=jisuan(a,&max,&min);的时候,计算机会创建
一个临时指针叫做max(根据你的函数声明int jisuan(int *p,int *max,int *min);),然后,这个max指针存储接收到的地址,就是你传入的&max.那么很简单一个道理,当你执行max=p时发生了什么?max指针丢掉了传进来的&max,存储了p指针里的地址。然后函数调用完之后,这个创建的临时max指针被操作系统收回。实际上,你函数里做的一切都在这时化为乌有
全部回答
- 1楼网友:毛毛
- 2021-11-25 10:15
#include
//int jisuan(int *p,int *max,int *min);
int jisuan(int score[], int student_num, int *max, int *min);
int main()
{
int a[5],avage=0,max=0,min=0;
int i;
for(i=0;i<5;i++)
{
printf("input %d score:",i+1);
scanf("%d",&a[i]);
if(0>a[i] || a[i]>100 )
{
printf("error");
scanf("%d",&a[i]);
}
}
avage=jisuan(a, sizeof(a)/sizeof(int),&max,&min);
printf("avage=%d,max=%d,min=%d\n",avage,max,min);
}
int jisuan(int score[], int student_num, int *max, int *min)
{
int i = 0, sum = 0;
*max = score[0];
*min = score[0];
for (; i {
sum += score[i];
if (*max < score[i]) *max = score[i];
if (*min > score[i]) *min = score[i];
}
return sum/5;
}
//int jisuan(int *p,int *max,int *min);
int jisuan(int score[], int student_num, int *max, int *min);
int main()
{
int a[5],avage=0,max=0,min=0;
int i;
for(i=0;i<5;i++)
{
printf("input %d score:",i+1);
scanf("%d",&a[i]);
if(0>a[i] || a[i]>100 )
{
printf("error");
scanf("%d",&a[i]);
}
}
avage=jisuan(a, sizeof(a)/sizeof(int),&max,&min);
printf("avage=%d,max=%d,min=%d\n",avage,max,min);
}
int jisuan(int score[], int student_num, int *max, int *min)
{
int i = 0, sum = 0;
*max = score[0];
*min = score[0];
for (; i
sum += score[i];
if (*max < score[i]) *max = score[i];
if (*min > score[i]) *min = score[i];
}
return sum/5;
}
- 2楼网友:封刀令
- 2021-11-25 08:44
#include
int jisuan(int *p,int *max,int *min);
int main()
{int i=0;
int a[6] = {0},avage=0,max=0,min=100;//你定义的应该是a[6]并赋初值0,因为你这是数组,不是字符串,后面不会跟‘\0’
for(i=0;i<5;i++)
{
printf("input %d score:",i+1);
scanf("%d",&a[i]);
if(0>a[i] || a[i]>100 )
{
printf("error");
scanf("%d",&a[i]);
}
}
avage=jisuan(a,&max,&min);
printf("avage=%d,max=%d,min=%d\n",avage,max,min);
}
int jisuan(int *p,int *max,int *min)
{
int sum=0;
int i = 0;
for(;*p!='\0';p++)
{
sum+=*p;
if(*p > *max) *max=*p;
if(*p < *min) *min=*p;
}
return sum/5;
}
int jisuan(int *p,int *max,int *min);
int main()
{int i=0;
int a[6] = {0},avage=0,max=0,min=100;//你定义的应该是a[6]并赋初值0,因为你这是数组,不是字符串,后面不会跟‘\0’
for(i=0;i<5;i++)
{
printf("input %d score:",i+1);
scanf("%d",&a[i]);
if(0>a[i] || a[i]>100 )
{
printf("error");
scanf("%d",&a[i]);
}
}
avage=jisuan(a,&max,&min);
printf("avage=%d,max=%d,min=%d\n",avage,max,min);
}
int jisuan(int *p,int *max,int *min)
{
int sum=0;
int i = 0;
for(;*p!='\0';p++)
{
sum+=*p;
if(*p > *max) *max=*p;
if(*p < *min) *min=*p;
}
return sum/5;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯