freegrb 发表于 2015-7-25 20:05:35

请大家帮忙看看这个程序,编译通过,但是运行就报错,求解!

#include<stdio.h>
main()
{
    int a={1,2,3,4,11,12,13,14,21,22,23,24,31,32,33,34,41,42,43,44};
    int*p,i,j;
    int k;
    p=&a;
    k=0;
for(i=0;i<20;i++)
{
    if((*(p+i)-*(p+i-1))/(*(p+i-1)-*(p+i-2))>3)
    {

      k=k+i;

      printf("%d   %d      %d      %d   %d   %d\n",a,&a,p+i,*(p+i),i,k);
   for(j=k-i;j<i;j++)
         {
   *(p+j)= *(p+j)+100;
    printf("%d%d%d\n", *(p+j), (p+j),j);
         }
    }
}
}

freegrb 发表于 2015-7-25 20:17:25

想了一天都没有找到原因,头疼,对了,PS一下 我是用code::blocks写的,似乎win7不能用vc6.0哈!

牡丹花下死做鬼 发表于 2015-7-25 20:48:35

语法有错误逻辑也有错误

freegrb 发表于 2015-7-25 21:34:50

能具体点吗?谢谢哈

freegrb 发表于 2015-7-25 21:37:42

这个程序的本意是希望能够将数组中的数据按照一定的规则分成几部分,再对每部分进行计算哈

freegrb 发表于 2015-7-25 21:42:39

希望得到这个效果:
输入数组就如程序中所述,然后根据((*(p+i)-*(p+i-1))/(*(p+i-1)-*(p+i-2))>3)的判断条件,把数组分成几个部分,再分别操作每部分。

freegrb 发表于 2015-7-25 21:49:57

我试过把与k相关的去掉,在第二个for循环的i=k-i改成i=0,结果运行正常,但计算结果不是我期望的,因为循环是从0开始,所以每次都会叠加计算,期望的是能够把每一段单独提出来操作,而不要重复之前的操作,百思不得其解!求高人指点!
页: [1]
查看完整版本: 请大家帮忙看看这个程序,编译通过,但是运行就报错,求解!