专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > C语言

输入数组,逆序输出,用指针做函数的参数解决办法

发布时间:2011-06-28 16:19:20 文章来源:www.iduyao.cn 采编人员:星星草
输入数组,逆序输出,用指针做函数的参数
各位大侠们看看我代码有什么错误,输入1 2 3 4,结果总是 1 2 2 4,不知道怎么回事
#include<stdio.h>
int main()
{
void reverse(int *p,int n);
int a[10] ,i,n;

printf("Enter n :");
scanf("%d",&n);

printf("Enter n digits:");
for(i = 0;i < n;i ++)
scanf("%d",&a[i]);

reverse(a,n);
printf("After reverse:");
for(i = 0;i < n; i ++)
printf("%3d",a[i]);

printf("\n");
return 0;

}
void reverse(int *p,int n)


int *pj,t,m,*pi;
m = (n - 1) / 2;
pi = p;
pj = p + n - 1;


  for(; pi < p +m;pi ++,pj --)
t = *pi;
*pi = *pj;
*pj = t;


}


------解决方案--------------------
C/C++ code
#include<stdio.h>

int main()
{
    void reverse(int *p,int n);
    int a[10] ,i,n;
    
    printf("Enter n :");
    scanf("%d",&n);
    
    printf("Enter n digits:");
    for(i = 0;i < n;i ++)
        scanf("%d",&a[i]);
    
    reverse(a,n);
    printf("After reverse:");
    for(i = 0;i < n; i ++)
        printf("%3d",a[i]);
    
    printf("\n");
    return 0;
    
}
void reverse(int *p,int n)
{ 
    
    int *pj,t,m,*pi;
    
    if(n % 2 == 0)         // 加了个if
        m = n / 2;
    else
        m = n / 2 - 1;
    pi = p;
    pj = p + n - 1;
        
    for(; pi < p +m;pi ++,pj --)  // 你源代码没加大括号
    {
        t = *pi;
        *pi = *pj;
        *pj = t;
    }

}

------解决方案--------------------
探讨

C/C++ code
#include<stdio.h>

int main()
{
void reverse(int *p,int n);
int a[10] ,i,n;

printf("Enter n :");
scanf("%d",&amp;n);

printf("Enter n digits:");
for(i = 0……

------解决方案--------------------

#include<stdio.h>
int main()
{
void reverse(int *p,int n);
int a[10] ,i,n;

printf("Enter n :");
scanf("%d",&n);

printf("Enter n digits:"); //printf("Enter %d digits:",n); 这样意图比较明确
for(i = 0;i < n;i ++)
scanf("%d",&a[i]);

reverse(a,n);
printf("After reverse:");
for(i = 0;i < n; i ++)
printf("%3d",a[i]);

printf("\n");
return 0;

}
void reverse(int *p,int n)
{

int *pj,t,m,*pi;
m = (n - 1) / 2;
pi = p;
pj = p + n - 1;


for(; pi < p +m;pi ++,pj --) //for(; pi <=p +m;pi ++,pj --) 小于等于
{ //这里加上大括号
t = *pi;
*pi = *pj;
*pj = t;
}


}
 
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: