| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 642 人关注过本帖
标题:刚开始学指针,高手看一下这个程序??????
只看楼主 加入收藏
苍浪剑赋
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2008-3-5
收藏
 问题点数:0 回复次数:4 
刚开始学指针,高手看一下这个程序??????
#include<stdio.h>
void main(){
float a[20],x,*pb,*pe;
int n,k,i;
scanf("%d",&n);
pb=a;
for(i=0;i<n;i++)
scanf("%f",pb++);
k=n/2;
for(i=0,pb=a,pe=a+n-1;i<k;i++,pb++,pe--)
{x=*pb;*pb=*pe;*pe=x;}
for(pb=a;pb<a+n;pb++)
printf("%f",*pb);}
目的是输出的按输入的反向输出

看了半天 看不懂 请教   可否加一下详细的注释

[[it] 本帖最后由 苍浪剑赋 于 2008-3-10 20:52 编辑 [/it]]
搜索更多相关主题的帖子: 指针 
2008-03-10 20:13
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
#include<stdio.h>
void main()
{
        float a[20],x,*pb,*pe;            /*定义a数组,x,指针pb、pe*/
        int n,k,i,j=1;           /*定义整型数n、k、i、j*/
        printf("请输入数组位数:\n");
        scanf("%d",&n);
        pb=a;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~输入数组数据*/
        for(i=0;i<n;i++,j++)
        {
                printf("请输入第%d个指针数据:\n",j);
                scanf("%f",pb++);
        }
        k=n/2;          /*定义K值为数组长度的一半*/
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~开始交换指针的数据*/
        for(i=0,pb=a,pe=a+n-1;i<k;i++,pb++,pe--)
        {
                x=*pb;
                *pb=*pe;
                *pe=x;
        }
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~输出交换后的数据*/
        for(pb=a;pb<a+n;pb++)
               printf("%f",*pb);

        getch();
}



/*
    您输入的源代码有误,在最后一个for循环中,我改过来了。另外
    源代码在操作的时候实在让人不太明白,我也加了几行;
     我也不是太明白,不过这么解释了,希望您能看明白。 
*/
2008-03-10 20:49
mqh21364
Rank: 1
等 级:新手上路
帖 子:642
专家分:0
注 册:2008-2-28
收藏
得分:0 
#include<stdio.h>
void main(){
float a[20],x,*pb,*pe;       //定义2个指针。
int n,k,i;
scanf("%d",&n);             //输入一个整数,代表数组的实际长度,注意小于20。
pb=a;                       //将指针pb指向数组a的首地址。                        
for(i=0;i<n;i++)
scanf("%f",pb++);           //输入数组元素值,然后指针加1,指向数组的下一个元素。
k=n/2;                      //取到需要循环的次数。
for(i=0,pb=a,pe=a+n-1;i<k;i++,pb++,pe--)    //i确定循环次数,pb指向数组头,pa指向数组尾
{x=*pb;*pb=*pe;*pe=x;}      //从头向尾对应交换数组值
for(pb=a;pb<a+n;pb++)       //循环,输出数组值
printf("%f",*pb);}

我也是个新手哦,错了请大家指正,谢谢!!!
2008-03-10 20:49
苍浪剑赋
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2008-3-5
收藏
得分:0 
谢谢大家,我给打错了 是for(pb=a;pb<a+n;pb++)
2008-03-10 20:54
computerlove
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-3-10
收藏
得分:0 
把指针用的简单些,效果一样
#include<stdio.h>
#define N 20
main()
{
  float a[N],*p;
  int i;
  p=a;
  printf("input number:");
  for(i=0;i<N;i++)
  scanf("%f",p++);/*输入数据*/
  printf("unsequence is:");
  for(i=0;i<N;i++)
  printf("%.0f ",*(--p));
  getch();
}
2008-03-10 21:39
快速回复:刚开始学指针,高手看一下这个程序??????
数据加载中...
 
   



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

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