注册 登录
编程论坛 C++教室

求大家帮帮忙看看我这个程序出在哪里了?刚学Turbo C ++ 3.0不久,比较乱,谢谢!

南庭 发布于 2011-05-11 22:31, 873 次点击
我的题是求50个数中最大的数,50个数有键盘输入,我的程序如下:
#include <stdio.h>
void main()
{
int a[50];
int i,j,max;
for(i=0;i<=49;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=0;j<=49;j++)
for(i=0;i<=49-j;i++)
if(a[i]>a[i+1])
max=a[i];
else
max=a[i+1];
printf("%d",max);
}
13 回复
#2
ishagua2011-05-11 23:01
帮你修改了一下,不用嵌套循环就可以解决了,就是两两比较,然后取最大赋给max ,然后用max和下一个比较,若max 小,则把后者赋给max ,如果max 大则保留max 的值(即不做任何操作)

#include <stdio.h>
void main()
{
int a[10];
int i,j,max;
for(i=0;i<=9;i++)
scanf("%d",&a[i]);
printf("\n");
max=a[0];
for(j=1;j<=9;j++)
if(a[j]>max)
max=a[j];
printf("max=%d",max);
printf("\n");
}

运行结果:(把数组改大一点就行了)

只有本站会员才能查看附件,请 登录


[ 本帖最后由 ishagua 于 2011-5-11 23:07 编辑 ]
#3
Pirelo2011-05-11 23:05
两个错误:
1.a[i+1]导致下标越界,50和49的区别很小,却很致命,for循环中要仔细
2.算法不对
void main()
{
int a[50];
int i,j,max;
for(i=0;i<50;i++)
{
    scanf("%d",&a[i]);
    printf("\n");
}
max=a[0];
for(j=0;j<50;j++)
{
    if(a[j]>max)
    max=a[j];
}
printf("%d",max);
}

[ 本帖最后由 Pirelo 于 2011-5-11 23:17 编辑 ]
#4
ishagua2011-05-11 23:11
回复 3楼 Pirelo
你这个算法也不对吧,如果50个都是负数呢?最大的就应该是50个负数里最大的那个而不是0。如果是正整数的话max= 0 ,是可以的。

max=a[0],无论是正数负数都可以

[ 本帖最后由 ishagua 于 2011-5-11 23:13 编辑 ]
#5
Pirelo2011-05-11 23:17
以下是引用ishagua在2011-5-11 23:11:43的发言:

你这个算法也不对吧,如果50个都是负数呢?最大的就应该是50个负数里最大的那个而不是0。如果是正整数的话max= 0 ,是可以的。
 
max=a[0],无论是正数负数都可以
正解!
#6
南庭2011-05-12 21:29
回复 2楼 ishagua
谢谢了,看得出你很仔细,也一定学得很好,我学C语言学的不好,以后还望多多指教!
#7
南庭2011-05-12 21:31
回复 楼主 南庭
非常感谢,看得出你对C语言很感兴趣,很是有心,还望以后多指教!
#8
南庭2011-05-13 10:10
人工置顶
#9
Demon_JIE2011-05-13 12:06
现在还要用Turbo????
#10
南庭2011-05-13 19:59
回复 3楼 Pirelo
谢谢,非常感谢!
#11
南庭2011-05-13 20:03
回复 9楼 Demon_JIE
我们学校暂时就学这个,比不得你们学校,呵呵···
#12
a3827938962011-05-13 23:54
程序代码:
# include <stdio.h>

void main(void)

{
int a[10];

int i, j, max;

for (i = 0;i <= 9;i++)
scanf ("%d",&a[i]);

printf ("\n");

max = a[0];

for(j = 1;j <= 9;j++)
if ( a[j] > max)
max = a[j];

printf ("max=%d",max);

printf ("\n");

    return ;
}

我给楼主的建议就是
代码写的太乱了··
最好多敲空格!!!看其来会舒服点··好比你的代码想上面这样:
还有就是主函数最会最好加个return
主函数main有无参数也要讲清楚应该这样main(void)就明白多了!!
#13
南庭2011-05-14 09:42
回复 12楼 a382793896
谢谢,确实清楚多了,除此外,我想问一哈,这个程序可不可以把max的地方改成min,a[j]<min,来求解最小值,再次感谢!
#14
ishagua2011-05-18 02:21
回复 13楼 南庭
当然可以
1