C语言 数组题目两道,求大神~~

1.有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。
(这道题没有规定数组长度,是不是要在定义里规定好才能做啊,比如说int a[5],我本来想把获得数组长度这一步编到程序里,就是从终端输入一个数字n,然后int a[n],但是数组又必须规定长度后才能定义。无知求解~~)
2.输出以下图案:
*****
*****
*****
*****
***** 本人才疏学浅,求大神帮忙解答~~感激涕零~~

第一题可以再定义一个数组,比那个已知拍好序的数组都定义一个元素就行了,具体例子如下:

#include<stdio.h>

int main()

{

int a[5] = {1,2,4,5,6};

int i;

printf("排序前的数组:");

//打印数组

for(i = 0;i < 5;i++)

printf("%d ",a[i]);

printf("\n");

int n = 3;

int b[6];

//复制数组

for(i = 0;i < n;i++)

b[i] = a[i];

b[n - 1] = 3;

for(i = n;i < 6;i++)

b[i] = a[i - 1];

printf("排序后的数组:");

for(i = 0;i < 6;i++)

printf("%d ",b[i]);

printf("\n");

}


第二个程序纯粹就是打印:

#include<stdio.h>

int main()

{

int i,j;

for(i = 0;i < 5; i++)

{

for(j = 0;j <= i; j++)

printf(" ");

printf("*****\n");

}

}

两个程序的运行截图如下:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-08-31
“就是从终端输入一个数字n,然后int a[n]”’‘’这是不可行的,编译器在检查到数组的时候必须知道数组的长度,不允许使用不完整类型!另外如果你打算用数组做长度必须考虑,如果使用动态内存分配则不存这样的问题,不过得注意内存泄漏!!!
第2个回答  2012-08-31
我手机党,只能给点思路了。1.首先,你可以先获得n,再定义数组。然后,因为是数组,内存是连续的。最好的方法就是从后向前比较,位置不对,就将数组里的数向后移一位。位置对,则插入。2简单,一个循环就可以解决。for(i=0;i<5;i++)printf("*****\n");
第3个回答  2012-08-31
基本同意手机党,一楼的那个。
1、可以这样动态分配存储数组的空间:
int *pArr = NULL;
C:pArr = (int*)malloc(n * sizeof(int)); n为元素的个数
在程序结束前记得 free(pArr);
C++:pArr = new int[n];
在程序结束前记得 delete[] pArr;
2、
int i = 0;
int j;
for(i = 0;i < 5; i ++)
{
for(j = 0;j < i; j ++)
printf(" ");
for(j = 0;j < 5;j ++)
printf("*");
}
相似回答