回 帖 发 新 帖 刷新版面

主题:将10个数中相邻三个数的和中的最小值输出来。

#include<stdio.h>
int smin(int *x)
{
 int sum=0,*p,minsum=0;
for(p=x;p<(x+10);p++)
 sum=*p+*(p+1)+*(p+2);
 if(minsum>sum) minsum=sum;
 return(minsum);
}
void main()

int a[10],i,min=0;
int *p;
p=a;                
printf("please input 10 numbers:");
for(i=0;i<10;i++)
 scanf("%d",p++);
min=smin(p);
printf("the min sum of three numbers is %d\n",min);
}
结果总是不正确。

回复列表 (共4个回复)

沙发

for(p=x;p<(x+10);p++)
 sum=*p+*(p+1)+*(p+2);
越界了。

板凳

for(i=0;i<10;i++)
 scanf("%d",p++);
-------------------
为什么都喜欢这么用、、用完了忘了加p = a;

3 楼

楼上都正确
并且minsum=0,会总是输出为0
int smin(int *x)
{
    int sum=0,*p;
    int minsum =*x+*(x+1)+*(x+2);
    for(p=x;p<(x+8);p++)
    {
        sum=*p+*(p+1)+*(p+2);
        if(minsum>sum) minsum=sum;
    }
    return(minsum);
}

int _tmain(int argc, _TCHAR* argv[])
{
    int a[10],i,min=0;
    int *p;
    p=a;                
    printf("please input 10 numbers:");
    for(i=0;i<10;i++)
        scanf("%d",p++);
    p=a;
     min=smin(p);
     printf("the min sum of three numbers is %d\n",min);

}

4 楼

程序有些bug,比如子程序中循环体已经纠正了。而且minsum初始值的选取也有问题。应该选用一个较大的数,至少要比能输入的数都要大。

我来回复

您尚未登录,请登录后再回复。点此登录或注册