user-0 提问: 学C语言碰到个问题，求教！

回复:
user: user-1
content: #include<stdio.h> main() {    int a[5]={1,2,3,4,5};    int i,t;    for(i=0;i<=5/2/*这个地方你要用总的个数除以2，不然当i=3时，你原先已经互换位置后又会互换回来，所以结果是没变的*/;i++)    {       t=a[i];       a[i]=a[4-i];       a[4-i]=t;     }     for(i=0;i<=4;i++)        printf(" %d",a[i]); }或者你直接 #include<stdio.h> main() {    int a[5]={1,2,3,4,5};    int i;     for(i=4;i>=0;i--)        printf(" %d",a[i]); }希望对你有用

user: user-2
content: 你这个问题我也是一样的，你要把循环条件除以2，不然后面的又是回到原来的值

user: user-3
content: #include<stdio.h> main() {    int a[5]={1,2,3,4,5};    int i,t;    for(i=0;i<=4;i++)    {       t=a[i];       a[i]=a[4-i];       a[4-i]=t;     }     for(i=0;i<=4;i++)        printf(" %d",a[j]); }  当i=2的时候已经完成了交换的目的，i=3的时候有一次把第2个和第四个数据交换了一次，同理，后面的也全交换了。所以你交换了两次，自然是顺序输出的啊

user: user-4
content: 完全没必要这么做，直接重新定义一个一维数组，把这个一维数组按照倒序赋值给另外一个数组很简单

user: user-5
content: 刚学编程入门的话应该学会自己设置断点。这样的题目让别人告诉你那里出错了对你的提高是没有好处的。

user: user-6
content: 关于自己是否适合编程的很简单的测试： 在报纸或杂志上随便找一段约1000字的文章，在Word中输入一遍。输完后再参考下面答案：  A里面有10处以上文字或标点错误 B里面没有文字或标点错误并敢为此跟人打赌 C里面没有文字或标点错误并且字体和排版完全与原稿一致 D打印在半透明的纸上和原稿重叠在一起检查一模一样，且自我感觉很有成就感  A不适合编程（理由：打字准确度偏低、粗心大意） B初级程序员（理由：打字准确度很高、认真细致、自信、理解全角半角概念） C高级程序员（理由：在B的基础上理解字体和排版也是电脑打印的重要因素、但相比D还不够偏执、精益求精、结果可验证） D软件项目经理（理由：能针对项目给出令人信服的细致到极点的需求说明和典型测试用例。用户几乎挑不出毛病。专业！）  如果想从A变成B的话，到我的资源http://download.csdn.net/detail/zhao4zhong1/4084259里面下载“适合程序员的键盘练习”

user: user-7
content: 引用 1 楼 chenyegui 的回复:#include<stdio.h> main() {    int a[5]={1,2,3,4,5};    int i,t;    for(i=0;i<=4;i++)    {       t=a[i];       a[i]=a[4-i];       a[4-i]=t;     }     for(i=0;i<=4;i++)        printf(" %d",a[j]);//靓仔！仔细点j? }  你的这个 j 哪里来的啊？

user: user-6
content: 代码功能归根结底不是别人帮自己看或讲解或注释出来的；而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒：再牛×的老师也无法代替学生自己领悟和上厕所！ 单步调试和设断点调试是程序员必须掌握的技能之一。

user: user-8
content: 我看第二遍才看出来！

user: user-9
content: 引用 3 楼 u013748984 的回复:我自己找出错误了，应该把那个循环变量i<=4改成i<=2,如果是4的话，就会出现2次交换，数据又会换成原来的数组a #include<stdio.h> main() {    int a[5]={1,2,3,4,5};    int i,t;    for(i=0;i<=2;i++)    {       t=a[i];       a[i]=a[4-i];       a[4-i]=t;     }     for(i=0;i<=4;i++)        printf(" %d",a[i]); } 刚看到，原来lz已经想到了，我多此一举了

user: user-10
content: 细心可以避免很多不必要的问题！人家4楼回复都这么有耐心，你自己怎么就不能画画尼？

user: user-11
content: #include<stdio.h>  main()  {     int a[5]={1,2,3,4,5};     int i,t;     for(i=0;i<=2;i++)     {        t=a[i];        a[i]=a[4-i];        a[4-i]=t;      }      for(i=0;i<=4;i++)         printf(" %d",a[i]);  }

user: user-9
content: 至于为什么，你再好好想想，看能明白吗

user: user-9
content: # include <stdio.h>  int main(void) {    int a[5] = {1, 2, 3, 4, 5};    int i, t;     for(i=0; i<=2; i++) //  把 i<=4 改为 i<=2    {       t = a[i];       a[i] = a[4-i];       a[4-i] = t;     }      for(i=0; i<=4; i++)        printf(" %d\n",a[i]);  	return 0; }

user: user-0
content: 我自己找出错误了，应该把那个循环变量i<=4改成i<=2,如果是4的话，就会出现2次交换，数据又会换成原来的数组a #include<stdio.h> main() {    int a[5]={1,2,3,4,5};    int i,t;    for(i=0;i<=2;i++)    {       t=a[i];       a[i]=a[4-i];       a[4-i]=t;     }     for(i=0;i<=4;i++)        printf(" %d",a[i]); }

user: user-0
content: 猫哥，那个j我不小心写错的，但是就算把那个换成i也还是不行啊

user: user-12
content: #include<stdio.h> main() {    int a[5]={1,2,3,4,5};    int i,t;    for(i=0;i<=4;i++)    {       t=a[i];       a[i]=a[4-i];       a[4-i]=t;     }     for(i=0;i<=4;i++)        printf(" %d",a[j]);//靓仔！仔细点j? }

user: user-12
content: 引用 5 楼 user-13 的回复:[quote=引用 4 楼 chenyegui 的回复:] i=0:a[0]=5,a[4]=1 i=1:a[1]=4,a[3]=2 i=2:a[2]=3,a[2]=3 i=3:a[3]=4,a[1]=2 i=4:a[4]=5,a[0]=1  这就是FOR循环实习的功能啊。。你想说什么？ 倒置数值？ 如果是那就strlen(a)/2  从中间分开嘛[/quote]

user: user-13
content: 引用 4 楼 chenyegui 的回复:i=0:a[0]=5,a[4]=1 i=1:a[1]=4,a[3]=2 i=2:a[2]=3,a[2]=3 i=3:a[3]=4,a[1]=2 i=4:a[4]=5,a[0]=1  这就是FOR循环实习的功能啊。。你想说什么？ 倒置数值？ 如果是那就strlen(a)/2  从中间分开嘛

user: user-12
content: i=0:a[0]=5,a[4]=1 i=1:a[1]=4,a[3]=2 i=2:a[2]=3,a[2]=3 i=3:a[3]=4,a[1]=2 i=4:a[4]=5,a[0]=1  这就是FOR循环实习的功能啊。。你想说什么？ 倒置数值？ 如果是那就strlen(a)/2