user-0 提问: 为什么这个程序不能执行

回复:
user: user-0
content: 还是有疑惑，就是数组是从a[0]开始的，一直到a[49]，那我在循环语句中使 i  和  j   初始化为1，那数组中数字的输入是不是就a[1]开始，一直到a[50]，还是说是只到a[49]，如果是只到a[49]，那么那个循环中的i=1;i<=50，不就没作用了吗？ 希望高手能够详细说明一下，感激不尽。谢谢。

user: user-1
content: ++ 引用 11 楼 qq_21327741 的回复:还是有疑惑，就是数组是从a[0]开始的，一直到a[49]，那我在循环语句中使 i  和  j   初始化为1，那数组中数字的输入是不是就a[1]开始，一直到a[50]，还是说是只到a[49]，如果是只到a[49]，那么那个循环中的i=1;i<=50，不就没作用了吗？ 希望高手能够详细说明一下，感激不尽。谢谢。

user: user-2
content: a[0]a[1]a[2]a[3]a[4]a[5],就这6个

user: user-0
content: 引用 2 楼 zhouqinghe24 的回复:#include <stdio.h> int main (void)  { int i,j,temp,a[6]; printf("请输入六个不为零整数的值：\n"); for (i=1;i<=6;i++)    //数组下标从0 到n-1       scanf("%d",&a[i]); for (i=1;i<=5;i++){       // 这里也要从0开始     for (j=1;j<=6-1-i;j)    // 这里 最后的j需要++     if (a[i]>a[i+1])            //这里 用a[i+1]  会越界，用a[i-1]  并把大于号改成小于号     temp=a[i]; a[i]=a[i+1];     a[i+1]=temp;  printf("六个不为零整数的排序为a[i]=%d:\n",a[i]);    //打印最好 重新循环，解除耦合 }   } 请问你用得是什么软件，可否发给我，邮箱895007098@qq.com，谢谢

user: user-3
content: 仅供参考 /*************************************************************************     > File Name: qsort_1.c     > Author: 傻李     > Mail: hellojukay@gmail.com      > Created Time: 2014年11月21日 星期五 19时25分47秒  ************************************************************************/  #include<stdio.h> int comp(void *a,void* b) { 	return *(int *)a - *(int *)b; } int main() { 	int a[6]; 	int i; 	for(i = 0; i < 6; ++i) 		scanf("%d",&a[i]);     //使用快速排序 	qsort(a,6,sizeof(int),comp); 	for(i = 0 ; i < 6; ++i) 		printf("%d\t",a[i]); 	return 0; }

user: user-4
content: 引用 5 楼 qq_21327741 的回复:[quote=引用 2 楼 zhouqinghe24 的回复:] #include <stdio.h> int main (void)  { int i,j,temp,a[6]; printf("请输入六个不为零整数的值：\n"); for (i=1;i<=6;i++)    //数组下标从0 到n-1       scanf("%d",&a[i]); for (i=1;i<=5;i++){       // 这里也要从0开始     for (j=1;j<=6-1-i;j)    // 这里 最后的j需要++     if (a[i]>a[i+1])            //这里 用a[i+1]  会越界，用a[i-1]  并把大于号改成小于号     temp=a[i]; a[i]=a[i+1];     a[i+1]=temp;  printf("六个不为零整数的排序为a[i]=%d:\n",a[i]);    //打印最好 重新循环，解除耦合 }   } 请问你用得是什么软件，可否发给我，邮箱895007098@qq.com，谢谢[/quote]  编辑器吗？ 用的vim   windows下用vs吧

user: user-0
content: 那如果是i=1;j=1;这样开始呢？数组是按照a[1]~a[5]这样来的吗？还是怎么的，可否说明一下令i=1;j=1;的话，数组的量是怎么分配的。，也就是程序是怎么运行的。谢谢

user: user-5
content: 难道都没有人觉得if后面的三条语句应该用{ }括起来嘛？

user: user-4
content: #include <stdio.h> int main (void)  { int i,j,temp,a[6]; printf("请输入六个不为零整数的值：\n"); for (i=1;i<=6;i++)    //数组下标从0 到n-1       scanf("%d",&a[i]); for (i=1;i<=5;i++){       // 这里也要从0开始     for (j=1;j<=6-1-i;j)    // 这里 最后的j需要++     if (a[i]>a[i+1])            //这里 用a[i+1]  会越界，用a[i-1]  并把大于号改成小于号     temp=a[i]; a[i]=a[i+1];     a[i+1]=temp;  printf("六个不为零整数的排序为a[i]=%d:\n",a[i]);    //打印最好 重新循环，解除耦合 }   }

user: user-6
content: 数组下标是从0开始的，对于a[6]，合法的下标是0到5

user: user-7
content: 数组下标是从0开始的。

user: user-8
content: 引用 2 楼 zhouqinghe24 的回复:#include <stdio.h> int main (void)  { int i,j,temp,a[6]; printf("请输入六个不为零整数的值：\n"); for (i=1;i<=6;i++)    //数组下标从0 到n-1       scanf("%d",&a[i]); for (i=1;i<=5;i++){       // 这里也要从0开始     for (j=1;j<=6-1-i;j)    // 这里 最后的j需要++     if (a[i]>a[i+1])            //这里 用a[i+1]  会越界，用a[i-1]  并把大于号改成小于号     temp=a[i]; a[i]=a[i+1];     a[i+1]=temp;  printf("六个不为零整数的排序为a[i]=%d:\n",a[i]);    //打印最好 重新循环，解除耦合 }   }  完全正确，楼主该看看数组相关的知识了，数组下标是从0开始的