问题描述
- C语言调用abc(b,8);后数组元素为何没有改变
-
#include "stdio.h"
void abc(int a[],int n)
{
int i,t;
for(i=0;i<n;i++)
{
t=a[i];
a[i]=a[n-1-i];
a[n-1-i]=t;
}
}
main()
{
int b[10]={1,2,3,4,5,6,7,8,9,10};
int i,s=0;
abc(b,8);
// for(i=0;i<10;i++)
// printf("%d",b[i]);
for(i=6;i<10;i++)
_ s+=b[i];
printf("%dn",s);_
}
/*
1.程序运行结果:
32
*/==提问:调用abc(b,8);后数组元素为何没有改变成b[10]={8,7,6,5,4,3,2,1,9,10};呢?结果应该为22吧?
解决方案
你上面两个数调换位置后又调换回来了多循环了
解决方案二:
for(i=0;i<=n/2;i++)
解决方案三:
循环次数多了。void abc函数中for(i=0;i<n;i++)循环:i=1~n/2是交换数组数据,但n/2~n又将数据交换回来了;改成for(i=0;i<n/2;i++)就好了。
解决方案四:
for(i=0;i<=n/2;i++) 你写的方法只需循环n/2,你多循环了
时间: 2024-10-31 20:22:49