新手有关问题:已知一个排列有序的数组,输入一个数并插入数组中。仍保持数组的排列有序
新手问题:已知一个排列有序的数组,输入一个数并插入数组中。仍保持数组的排列有序!
如题,请各位朋友帮忙看下下面的程序错在哪。
在TC200运行,输入数字:7,运行结果27476789。。
用了很多变量。。可否减少变量的数量?
------解决方案--------------------
------解决方案--------------------
楼主思路好乱啊
如题,请各位朋友帮忙看下下面的程序错在哪。
在TC200运行,输入数字:7,运行结果27476789。。
- C/C++ code
#include<stdio.h> main() { int a[10]={2,4,6,,8,10,12} /*定义一个递增的数组*/ int i,j=0,k,l,z; printf("please input a integer:\n"); scanf("%d",&i); while(a[j]!='\0') /*数组中的元素个数*/ j++; for(k=0;k<j;k++) /*关键是这个循环,是循环出错了吗?*/ { if(i>a[k]) { for(l+j-1;l>k;l--) a[l+1]=a[j]; } } a[l+1]=i; /*插入*/ for(z=0;z<=j;z++) printf("%d",a[z]); }
用了很多变量。。可否减少变量的数量?
------解决方案--------------------
- C/C++ code
#include <stdio.h>
int main()
{
int a[10]={2,4,6,8,10,12}; /*定义一个递增的数组*/
int i,j=0,k,l,z;
printf("please input a integer:\n");
scanf("%d",&i);
while(a[j] != 0) /*数组中的元素个数, 这里有问题,如果含有0就有问题了*/
j++;
for(k=0;k <j;k++) /*关键是这个循环,是循环出错了吗?*/
{
if(i < a[k])
{
for(l=j-1;l >= k; l--)
a[l+1] = a[l];
break;
}
}
a[k] = i; /*插入*/
for(z=0;z <=j;z++)
printf("%d ",a[z]);
return 0;
}
------解决方案--------------------
楼主思路好乱啊
- C/C++ code
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int a[10]={2,4,6,8,10,12}; int i,j,k; printf("please input a integer:\n"); scanf("%d",&i); for (k = 0; k < 6; k++) if (i < a[k]) break;/*找到插入位置*/ for (j = 6; j >= k; j--)/*元素后移*/ a[j+1] = a[j]; a[k] = i; /*插入*/ for (k = 0; k < 6+1; k++) printf("%d ",a[k]); system("PAUSE"); return 0; }