#include<stdio.h>
int max(int a[], int n)
{
int p, i;
p = a[1];
for (i = 1; i <= n; i++)
{
if (p < a[i])
p = a[i];
}
return p;
}
int average(int a[], int n)
{
int sum, av, i;
sum = 0;
for (i = 1; i <= n; i++)
{
sum = sum + a[i];
}
av = sum / n;
return av;
}
int main()
{
int cj[100];
int aver, max1, i;
for (i = 1; getchar()!='-'; i++)
{
scanf("%d", cj[i]);
}
aver = average(cj, i);
max1 = max(cj, i);
printf("平均数:%d", aver);
printf("最大值:%d", max1);
return 0;
}
scanf("%d", cj[i]);这里你输入整数的时候会有回车符,所以getchar()得到的是回车符,而输入的‘-’继续执行scanf("%d", cj[i]);被这语句给吸收了,所以不会退出。可以改成输入-1退出,而且scanf("%d", cj[i]);这里cj[i]前面漏掉了&
完整代码如下:
#include<stdio.h>
int max(int a[], int n)
{
int p, i;
p = a[1];
for (i = 1; i <= n; i++)
{
if (p < a[i])
p = a[i];
}
return p;
}
int average(int a[], int n)
{
int sum, av, i;
sum = 0;
for (i = 1; i <= n; i++)
{
sum = sum + a[i];
}
av = sum / n;
return av;
}
int main()
{
int cj[100];
int aver, max1, i;
for (i = 1; ; i++)
{
scanf("%d", &cj[i]); //这里需要&
if(cj[i] == -1)
break;
}
i--; //注意这里需要i-1,以去掉最后的-1
aver = average(cj, i);
max1 = max(cj, i);
printf("平均数:%d", aver);
printf("最大值:%d", max1);
return 0;
}
改成while循环就行了
#include<stdio.h>
int max(int a[], int n)
{
int p, i;
p = a[1];
for (i = 1; i <= n; i++)
{
if (p < a[i])
p = a[i];
}
return p;
}
int average(int a[], int n)
{
int sum, av, i;
sum = 0;
for (i = 1; i <= n; i++)
{
sum = sum + a[i];
}
av = sum / n;
return av;
}
int main()
{
int cj[100];
int aver, max1, i=0;
while(1){
char c=getchar();
if (c=='-')
break;
else
cj[i++]=c-'0';
}
aver = average(cj, i);
max1 = max(cj, i);
printf("平均数:%d", aver);
printf("最大值:%d", max1);
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps: 问答会员年卡【8折】购 ,限时加赠IT实体书,即可 享受50次 有问必答服务,了解详情>>>https://t.csdnimg.cn/RW5m