输出这样的结果主要原因是:
并没有把number的值赋值到数组元素中;
number属于内部的变量,用完会归还给内存;
导致输出错误的结果;
详细分析如下:(遇到问题别慌,此处教你使用增加printf打印输出语句来测试问题出现的位置及原因)如图:详见代码
1.先把a[N]=number;//把输入的数字赋值给数组中最后一个没有赋初值的元素上
2.使用数组的大小比较(例如冒泡比较)
3.输出比较后的数组
4测试OK
/*坚持解决问题的同时教会别人解决问题的方法:授人以鱼不如授人以渔*/
解决方法:
#include <stdio.h>
#define N 11
//int number;//定义成全局变量,把number移到这里再测试
int main()
{
int i,number,a[N]={1,2,4,6,8,9,12,15,149,156};
printf("Please Enter an Integer In The Array:\n");
scanf("%d",&number);
printf("The Original Arrya:\n");
for(i=0; i<N-1; i++)
{
printf("%5d",a[i]);
}
printf("\n");
for(i=N-1; i>=0; i--)
{
if(number <= a[i])
{
a[i] = a[i-1];
printf("%5d%5d%5d\n",number,a[i],a[10]);//调试用词句并没有执行
}
else //这个else放在for循环内
{
a[i+1] = a[i];
break;
}
printf("%5d%5d\n",a[i],a[i+1]);//调试用词句并没有执行
}
printf("%5d%5d\n",a[0],a[10]);//调试用,到这一步a[0]仍然为1
printf("%5d%5d\n",a[0],number);//调试用,执行完这一步时number为0
if(number < a[0]) //number=0 小于 a[0]=1,所以执行赋值语句,把a[0]=0;
{
a[0] = number;
printf("%5d%5d\n",a[0],number);//调试用,
}
printf("The Result Arrya:\n");
for(i=0; i<N; i++)
{
printf("%5d",a[i]);
}
printf("\n");
return 0;
}
#include #define N 11 int number;//定义成全局变量 int main() { int i,a[N]={1,2,4,6,8,9,12,15,149,156}; int j;//循环变量(中心思想:外层循环控制行,内层循环控制列) int temp;//存储临时数据 printf("Please Enter an Integer In The Array:\n"); scanf("%d",&number); printf("The Original Arrya:\n"); for(i=0; i a[j+1]) { temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } } } for(i=0; i<N; i++) { printf("%5d",a[i]); } printf("\n"); return 0; }