
C语言 数组题目两道,求大神~~
1.有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。(这道题没有规定数组长度,是不是要在定义里规定好才能做啊,比如说inta[5],我本来想把获得...
1.有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。
(这道题没有规定数组长度,是不是要在定义里规定好才能做啊,比如说int a[5],我本来想把获得数组长度这一步编到程序里,就是从终端输入一个数字n,然后int a[n],但是数组又必须规定长度后才能定义。无知求解~~)
2.输出以下图案:
*****
*****
*****
*****
***** 本人才疏学浅,求大神帮忙解答~~感激涕零~~ 展开
(这道题没有规定数组长度,是不是要在定义里规定好才能做啊,比如说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");
}
}
两个程序的运行截图如下:
展开全部
“就是从终端输入一个数字n,然后int a[n]”’‘’这是不可行的,编译器在检查到数组的时候必须知道数组的长度,不允许使用不完整类型!另外如果你打算用数组做长度必须考虑,如果使用动态内存分配则不存这样的问题,不过得注意内存泄漏!!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我手机党,只能给点思路了。1.首先,你可以先获得n,再定义数组。然后,因为是数组,内存是连续的。最好的方法就是从后向前比较,位置不对,就将数组里的数向后移一位。位置对,则插入。2简单,一个循环就可以解决。for(i=0;i<5;i++)printf("*****\n");
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
基本同意手机党,一楼的那个。
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("*");
}
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("*");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询