C语言,帮我看看哪错了?是要取最大值最小值然后求和。

2025-05-09 02:48:34
推荐回答(5个)
回答1:

这个程序修改以后我在vc6通过调试运行了,因为你把数组边界搞错了,别忘了如果你j<10为循环条件的话,那么会访问a[10]这个元素,是非法的,还有,你的功能如果是求最小数和最大数的和的话,就没有必要把所有元素相加了,直接加a[9]a[8]就可以了
#include
void main()
{
int i,j,t,y,k,sum=0;
int a[10];
printf("ê?è???ê?μ?·?:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=0;j<9;j++)//for(j=0;j<10;j++)
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(j=0;j<8;j++)//for(j=0;j<9;j++)

if(a[j] {
y=a[j];
a[j]=a[j+1];
a[j+1]=y;
}
for(j=0;j<10;j++)
sum+=a[j];
k=sum-a[9]-a[8];
printf("%d ",k);
}
那改成这样就可以了

回答2:

错在
for(p=0;p<100;p++)
{
aa[p]=i;
}
这样循环之后,数组里面的数都为最后一个i

修改后如下

#include
#include
#include
#define MAX 100
int fun(int lim, int aa[MAX])
{
int i,p,n,sum; sum=0;
for(i=2,p=0;i {
for(n=2;n if(i%n==0)
break;
if(n>=i)
aa[p++]=i;
}
return p;
}

void main()
{
FILE *wf;
int limit,i,sum;
int aa[MAX];
system("CLS");
printf("please shu ru");
scanf("%d",&limit);
sum=fun(limit,aa);
for(i=0;i {
if(i%10==0&&i!=0) /*每行输出10个数*/
printf("\n ");
printf("%5d ",aa[i]);
}
/******************************/
wf=fopen("out.dat","w");
sum=fun(15,aa);
for(i=0;i {
if(i%10==0&&i!=0) /*每行输出10个数*/
fprintf(wf,"\n");
fprintf(wf,"%5d ",aa[i]);
}
fclose(wf);
/*****************************/
}
我可以帮助你,你先设置我最佳答案后,我百度Hii教你。

回答3:

楼上的朋友,你们有没运行过程序啊,像你们那样改也不对,一样得不到正确的结果
正确的是:pmax=&a,pmin=&a; 这句不要了.
所以修改后程序如下:
#include
void main()
{
int a[3],*pmax,*pmin,i;
printf("Please input three number:");
for(i=0;i<3;i++)
{
scanf("%d",&a[i]);
}
*pmax=a[0];
*pmin=a[0];
for(i=0;i<3;i++)
{

if(*pmax*pmax=a[i];

if(*pmin>a[i])
*pmin=a[i];
}
printf("The max number:%d",*pmax);
printf("\n The min number:%d",*pmin);
getch();
}

怎么可能呢,我可是运行后才回答的哦。
希望对你有帮助

回答4:

逻辑错误吧,写得很复杂

回答5:

t=a[j];
a[j]=a[j+1];
a[j+1]=t;