首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

小弟我编的一个小程序,但是得不到预期的结果,想请问一下大家,多谢.

2013-04-26 
我编的一个小程序,但是得不到预期的结果,想请教一下大家,谢谢....#include stdio.hint getSum(int len,

我编的一个小程序,但是得不到预期的结果,想请教一下大家,谢谢....
#include <stdio.h>

int getSum(int len, int n);
void main()
{
    int max;

int m;

    int j;
    
int len = 9;

    int result[9];


for(int n=0; n<len; n++)
{
    result[n] = getSum(len,n);
}

for(int i=0; i<len; i++)
{
    printf("%d",result[i]);

printf("    ");
}
    max=result[0];
        
    for(j=0;j<=9;j++)

if(max<result[j])
{
max=result[j];

m=j; 
}
printf("下标:%d\n最大值:%d          ", m, max);   
     
}

int getSum(int len, int n)
{
int a[]={1,2,3,4,5,6,7,8,9};
    int b[]={1,2,3,4,5,6,7,8,9};

    int sum = 0;
for(int i=0; i<(len-n); i++)
{
    sum += a[i]*b[i+n];
}
return sum;
}这个程序的下标总是出-858993460我不知道哪出错了,请指教一下..
还有这个代码能改的更简洁一点吗?
[解决办法]
你输出m的值,但是你只是声明了int m;并没有赋值。
max=result[0];
for(j=0;j<=9;j++)
if(max<result[j])
{
max=result[j];
m=j; 
}
这段循环,其实并没有执行到if里面。所以m一直是未初始化的。所以就会输出意想不到的值。
[解决办法]
int m = 0;

m没有初始化。

这句多个等号,数组越界
for(j=0;j<=9;j++)


[解决办法]
 max=result[0];
 for(j=0;j<=9;j++)

错误在上面这个地方!修改如下:
max = result[0];
m = 0;
for (j=0; j<9; j++)
解释:记录下标的m应该赋初值0,循环结束条件j不能等于9,因为数组长度为9,下标最大只能到8。
[解决办法]
主要是数组访问越界和m没有初始化:


#include <stdio.h>

#define LEN(9)

int getsum(int len, int n)
{
int sum = 0;
int i;

for(i = 0; i < (len - n); i++)
sum += (i + 1) * (i + 1 + n);

return sum;
}

int main(int argc, char* argv[])
{
int max;
int m;
int i;
int result[LEN];

for(i = 0; i < LEN; i++)
{
result[i] = getsum(LEN, i);
printf("%d ", result[i]);
}
printf("\n");

max = result[0];
m = 0;
for(i = 0; i < LEN; i++)
if(max < result[i])
{
max = result[i];
m = i;
}

printf("下标:%d\n最大值:%d\n", m, max);   
return 0;     
}


热点排行