#include <stdio.h>
main()
{
int arr[10],t,e,i;
float ave;
for (i=0;i<10;i++)
{scanf("输入十个数字:",&arr[i]);
if (arr[i]<=arr[i+1])
{t=arr[i+1]
e=arr[i]
else
t=arr[i]
e=arr[i+1];
}
ave=arr[10]/10;
}
print("最大值为%d\n
最小值为%d\n
平均值为%f\n",t,e,ave);
}
这是你的程序:
#include <stdio.h>
main()
{
int arr[10],t,e,i;
float ave;
for (i=0;i<10;i++)
{scanf("输入十个数字:",&arr[i]); //%d是给变量赋值 应该是时scanf("%d",&arr[i]);
if (arr[i]<=arr[i+1]) //相邻两数相比没啥意义,你要用当前数跟之前存在的最大
//的跟最小的数相比,并赋值
{t=arr[i+1] //少;
e=arr[i] //少;
else //else意义不明,在{}里面没有if语句么,你是不是想跟外面那
// 个if对应,那应该是if{}else{}
t=arr[i] //少;
e=arr[i+1];
} //你的逻辑部分没有循环起来,仅仅比了一下i与i+1,并且i也
//不知道是多少
ave=arr[10]/10; //数组是从0开始算的,10个数就是arr[0]~arr[9],不存在arr[10],
//就算是你这也仅仅只想除最后一个数,跟求均无关啊。
}
print("最大值为%d\n
最小值为%d\n
平均值为%f\n",t,e,ave);
}
我稍微在你的基础上改了下
#include <stdio.h>
main()
{
int arr[10],t,e,i;
float ave,sum=0; //sum表示和,初值0
printf("输入十个数字:");
for (i=0;i<10;i++) //使用循环,给数组arr[]赋10个值
{
scanf("%d",&arr[i]);
}
for(i=0;i<10;i++) //使用循环,求和
{
sum=sum+arr[i];
}
ave=sum/10; //ave就是平均数
t=arr[0]; //假设第一个数就是最大数t也是最小数e
e=arr[0];
for(i=0;i<10;i++) //循环比较10次,遇到大于t的数,将该数给t,遇到小于e的数,将该
//数给e
{
if (arr[i]>=t)
t=arr[i];
else if (arr[i]<=t)
e=arr[i];
} //我写的比较累赘,很多次的for循环都可以写在一起,减少语句的,
//仅仅为了实现功能,细节你可以在优化
printf("最大值为%d\n最小值为%d\n平均值为%f\n",t,e,ave);
}
注意书写细节,跟逻辑循环,你要想假如你是电脑,你读你写的程序,你能读懂么?要按照电脑的逻辑来。比如你的 e=arr[i] else语句,少个;电脑还以为你要给e赋值是arr[i] else,肯定有问题。
效果如图
希望能帮到你
#include <stdio.h>
void main()
{
int arr[10],t,e,i;
float ave=0;
for (i=0;i<10;i++)
{ scanf("%d",&arr[i]);//1.scanf里面是不显示汉字的,这是printf的活儿2.%d你忘写了
if (arr[i]<=arr[i+1])//你的for结构根本就没法筛选出最大值最小值。我帮你验证了一下,见下图片
{ t=arr[i+1];
e=arr[i];
}
else
{
t=arr[i];
e=arr[i+1];
}
ave+=arr[i]/10;
}
printf("%d%d%f",t,e,ave);
}
把筛选最大值最小只的代码换一下就行了
#include <stdio.h>
void main()
{
int arr[10];
float ave=0;
printf("输入十个数字:");
for(int i=0;i<10;i++)
scanf("%d",&arr[i]);
for(int j=0;j<10;++j)//冒泡排序法,按升序排列
{
for(i=0;i<10-j-1;++i)
{
if(arr[i]>=arr[i+1])
{ int temp;
temp=arr[i+1];
arr[i+1]=arr[i];
arr[i]=temp;
}
}
}
for(i=0;i<10;++i)
{
ave+=arr[i]/10;
}
printf("最大值为%d最小值为%d 平均值为%f",arr[9],arr[0],ave);
}
main()
{
int arr[10],t=0,e=0,i;
float ave;
printf("输入十个数字:");
for (i=0;i<10;i++)
{
scanf("%d",&arr[i]);
if(arr[i]>t)
t=arr[i];
if(arr[i]<e)
e=arr[i];
}
ave=(t+e)/2.0;
printf("最大值为%d\n最小值为%d\n平均值为%f\n",t,e,ave);
}
楼主还是要抓牢基础,你的代码无论语法还是算法都有问题。
2. t、e 跟数组元素比大小,而非数组相邻元素比大小
3.评价数据是数组元素求和后除以个数
4.arr[10] 是错的,最大下标到9