| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 524 人关注过本帖
标题:指针问题
只看楼主 加入收藏
liuge1129
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2010-1-31
结帖率:75%
收藏
已结贴  问题点数:5 回复次数:4 
指针问题
题目是输入10个数,其中最小的数与第一个数对换,最大的数与最后一个数对换。
刚学的试着编了个 但是10 9 8 7 6 5 4 3 2 1运行后变成10 9 8 7 6 5 4 3 2 10  改了下还是不行 希望帮帮忙
#include"stdio.h"
void main()
{
  int a[10],*p=a,i,b,c;
  for(i=0;i<10;i++)
    scanf("%d",&a[i]);
  b=a[0];c=a[9];
  for(i=0;i<10;i++)
    {
      if(*(p+i)>*(p+9)) *(p+9)=*(p+i);

      if(*(p+i)>*p) *p=*(p+i);
    }

  for(i=1;i<9;i++)
    {
      if(*(p+i)==*p) *(p+i)=b;

      if(*(p+i)==*(p+9))  *(p+i)=c;


    }

  for(i=0;i<10;i++)
    {
      printf("%4d",*(p+i));
    }
    getch();
}
 
搜索更多相关主题的帖子: 指针 
2010-03-09 20:29
CodeWays
Rank: 2
等 级:论坛游民
帖 子:62
专家分:61
注 册:2010-2-7
收藏
得分:1 

程序代码:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    int *num = (int *) malloc(10 * sizeof(int));
    int *tmp = num;
    int i, tmplow, tmphigh;

 
    for (i = 0; i < 10; i++)
        scanf("%d", &tmp[i]);
    tmplow = tmphigh = tmp[i];
    for (i = 0; i < 10; i++) {
        if (tmp[i] < tmplow)
            tmplow = tmp[i];
        else if (tmp[i] > tmphigh)
            tmphigh = tmp[i];
    }
    tmp[0] = tmplow;
    tmp[9] = tmphigh;
    for (i = 0; i < 10; i++)
        printf("%d ", tmp[i]);
    printf("\n");
    return 0;
}



[ 本帖最后由 CodeWays 于 2010-3-9 21:24 编辑 ]

胖胖的我~
2010-03-09 21:23
陈大师
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:231
专家分:1038
注 册:2009-11-4
收藏
得分:1 
楼上的还有点小错误 改一下~~~~~

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    int *num = (int *) malloc(10 * sizeof(int));
    int *tmp = num;
    int i, tmplow, tmphigh;

    for (i = 0; i < 10; i++)
        scanf("%d", &tmp[i]);
    i--;   //  i++是执行后再加,这里要减去
    tmplow = tmphigh = tmp[i];  
for (i = 0; i < 10; i++) {
        if (tmp[i] < tmplow)
            tmplow = tmp[i];
        else if (tmp[i] > tmphigh)
            tmphigh = tmp[i];
    }
    tmp[0] = tmplow;
    tmp[9] = tmphigh;
    for (i = 0; i < 10; i++)
        printf("%d ", tmp[i]);
    printf("\n");
    return 0;
}
2010-03-12 22:26
陈大师
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:231
专家分:1038
注 册:2009-11-4
收藏
得分:0 
LZ 的也改了一下 试试看先~~~~~
#include"stdio.h"
void main()
{
  int a[10],*p=a,i,b,c;
  for(i=0;i<10;i++)
    scanf("%d",&a[i]);
  b=c=a[9];
  for(i=0;i<10;i++)
    {
      if(*(p+i)>=b)
          b=*(p+i);

      else if(*(p+i)<=c)
          c=*(p+i);
    }
  *p=c;
  *(p+9)=b;

  for(i=0;i<10;i++)
    {
      printf("%4d",*(p+i));
    }
   getchar();
}
2010-03-12 22:35
邮贼
Rank: 2
等 级:论坛游民
帖 子:17
专家分:36
注 册:2010-3-5
收藏
得分:1 
楼上的还是有问题吧!你只是解决了楼主的例子,但对于一般的还没到位的。比如说2、1、3、4、5、6、7、8、10、9、、、你的结果就应该是1、1、3、4、5、6、7、8、10、10
、、这样就和题目不是很合适了。。我也不知道具体怎么解决,希望有人指导:
#include<stdio.h>
#include<stdlib.h>

void change(int *);

int main()
{
    int array[10], i;

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

    change(array);

    for(i=0; i<=9; i++)
    {
        printf("%d\t", array[i]);
    }
    printf("\n");
}

void change(int *str)
{
    int max=*str, min=*str, i, mintemp=0, maxtemp=0, temp, temp2;

    for(i=1; i<=9; i++)
    {
        if(*(str+i)>max)
        {
            max=*(str+i);
            maxtemp=i;
        }
        if(*(str+i)<min)
        {
            min=*(str+i);
            mintemp=i;
        }
    }

    temp=*(str+maxtemp);
    *(str+maxtemp)=*(str+9);
    *(str+9)=*(str+maxtemp);

    temp=*(str+mintemp);
    *(str+mintemp)=*str;
    *str=*(str+mintemp);//主要是这儿,前面已经把*(str+9)改了,所以后面就不对了。怎么解决?谢谢!
}
2010-03-14 14:53
快速回复:指针问题
数据加载中...
 
   



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

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