| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 640 人关注过本帖
标题:哪位可以看以下这个程序if语句中指针用法错在哪里!求助!
只看楼主 加入收藏
依忆依
Rank: 1
等 级:新手上路
帖 子:10
专家分:3
注 册:2013-11-13
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:10 
哪位可以看以下这个程序if语句中指针用法错在哪里!求助!
#include<stdio.h>
int main ()
{
    int a[10],i=0,*d,*b,j;
    for(i=0;i<10;i++)
        scanf("%d",&a[i]);
    for(j=1;j<10;j++)
    {
        if(a[i]<a[j])
        {
               d=&a[j];
               a[i]=*d;
        }
    }
        printf("最大%d\n",a[i]);
            for(i=0;i<10;i++)
            printf("%d\n",a[i]);
    return 0;
}


2013-11-13 14:34
xufan
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:232
专家分:804
注 册:2008-10-20
收藏
得分:2 
程序代码:
for(i=0;i<10;i++)
         scanf("%d",&a[i]);
     for(j=1;j<10;j++)
     {
         if(a[i]<a[j])

第一个FOR结束之后,I的值应该是10,那么a[10]就有问题了。

~~~~~~我的明天我知道~~~。
2013-11-13 14:57
pink_duo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:209
专家分:1054
注 册:2013-11-5
收藏
得分:2 
#include<stdio.h>
int main ()
{
    int a[10],i=0,*d,*b,j;
    for(i=0;i<10;i++)
        scanf("%d",&a[i]);
    for(j=1;j<10;j++)
    {
        if(a[i]<a[j])  //此时i一直固定为10,数组越界,并且没有起到比较作用
        {
               d=&a[j];
               a[i]=*d;
        }
    }
        printf("最大%d\n",a[i]);
            for(i=0;i<10;i++)
            printf("%d\n",a[i]);
    return 0;
}


埋头做牛,抬头做人,低头做狗
2013-11-13 14:57
pink_duo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:209
专家分:1054
注 册:2013-11-5
收藏
得分:6 
程序代码:
//修改如下
#include<stdio.h>
int main ()
{
    int a[10],i=0,*d,*b,j;
    for(i=0;i<10;i++)
        scanf("%d",&a[i]);
    for(i=0;i<9;i++)
    {
        if(a[i+1]<a[i])
        {
               d=&a[i];
               a[i+1]=*d;
        }
    }
        printf("最大%d\n",a[i]);
            for(i=0;i<10;i++)
            printf("%d\n",a[i]);
    return 0;
}

埋头做牛,抬头做人,低头做狗
2013-11-13 14:59
依忆依
Rank: 1
等 级:新手上路
帖 子:10
专家分:3
注 册:2013-11-13
收藏
得分:0 
回复 2楼 xufan
for结束是0到9是输入的十个数啊,a[10]是定义十个数组啊!
2013-11-13 15:02
pink_duo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:209
专家分:1054
注 册:2013-11-5
收藏
得分:0 
以下是引用依忆依在2013-11-13 15:02:41的发言:

for结束是0到9是输入的十个数啊,a[10]是定义十个数组啊!
int a[10]声明需要存储十个整数数组元素的空间,数组的第一个元素是a[0],最后一个是a[9]

埋头做牛,抬头做人,低头做狗
2013-11-13 15:05
依忆依
Rank: 1
等 级:新手上路
帖 子:10
专家分:3
注 册:2013-11-13
收藏
得分:0 
回复 6楼 pink_duo
最后那个for循环怎样才能输出,按原来输入的顺序输出呢?
2013-11-13 15:14
pink_duo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:209
专家分:1054
注 册:2013-11-5
收藏
得分:0 
以下是引用依忆依在2013-11-13 15:14:46的发言:

最后那个for循环怎样才能输出,按原来输入的顺序输出呢?
最后的for循环就是顺序输出的啊

埋头做牛,抬头做人,低头做狗
2013-11-13 15:22
依忆依
Rank: 1
等 级:新手上路
帖 子:10
专家分:3
注 册:2013-11-13
收藏
得分:0 
输出数和原来的输入的数不对照,总之谢谢你了!
2013-11-13 15:25
pink_duo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:209
专家分:1054
注 册:2013-11-5
收藏
得分:0 
以下是引用依忆依在2013-11-13 15:25:02的发言:

输出数和原来的输入的数不对照,总之谢谢你了!
哦,理解有误。需要对照的话,就不能改变数组a[]里的元素值

埋头做牛,抬头做人,低头做狗
2013-11-13 15:33
快速回复:哪位可以看以下这个程序if语句中指针用法错在哪里!求助!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029301 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved