用函数编程实现在一个按升序排序的数组中查找x应插入的位置,将x插入数组中,使数组元素仍按升序排列。 提示:插入(Insertion)是数组的基本操作之一。插入法排序算法的关键在于要找到正确的插入位置,然后依次移动插入位置及其后的所有元素,腾出这个位置放入待插入的元素。插入排序的原理如图所示:在空白处填写适当的表达式或语句,使程序完整并符合题目要求。 #include<stdio.h> #define N 20 /* 插入前数组最大元素个数 */ void Insert(int a[], int n, int x); int main() { int a[N+1]; /* 定义数组长度为插入前的数组元素个数加1 */ int x, i, n; printf("Input array size:\n"); scanf("%d", &n); /* 输入插入前数组元素个数 */ printf("Input array:\n"); for (i=0; i<n; i++) { scanf("%d", &a[i]); * 输入插入前已按升序排序的数组元素 } printf("input x:\n"); &x); 输入待插入的元素x insert(a, n, x); 插入元素x到已排序数组中 printf("after insert %d:\n", for (i="0;" printf("%4d", a[i]); 输出插入x后的数组元素 return 0; 函数功能:将x插入到一个已按升序排序的数组中 void insert(int a[], int x) i="0," pos; while (______________) 查找待插入位置 i++; pos="i;" 记录元素x应插入的数组下标位置pos _______; i--) 从尾部开始移动pos及其后所有的元素 _____________; 向后复制数组元素 a[pos]="x;" 插入元素x到位置pos> A、第30行: i < n && x > a[i] 第35行: i>= pos 第37行: a[i+1] = a[i]
B、第30行: i <= n && x> a[i] 第35行: i>= 0 第37行: a[i] = a[i+1]
C、第30行: i < n || x > a[i] 第35行: i>= 1 第37行: a[i+1] = a[i]
D、第30行: i < n && x >= a[i] 第35行: i> pos 第37行: a[i] = a[i+1]
第2题
第3题
例如,在数组bb[N]={12,23,31,44,51,63,71,79,85,95}中插入93,结果为:
bb[N]{11,21,31,41,51,61,7l,79,8l,93,95}
注意:部分源程序给出如下.
请勿改动主函数main和其他函数中的任何内容,仅在 main函数的横线上填入所编写的若干表达式或语句。
试题程序:
include<std/o. h>
define N 10
main()
{
int i,j;
int n;
int bb IN+l] ={ t2,23, 31, 44, 51, 63, 71,
79,85,95};
clrscr ();
printf("\nInput n \n");
scanf ("%d", &n);
printf ("\nn=%d ",n);
printf("\n*** original list ***In");
for (i=0; i<N; i++)
printf ("%4d ",bb [ii );
for (i=0; i<N; i++)
{
if (n<=bb [i ] )
{
for(j=N;【 】;j--)
【 】;
bb [j] =n;
【 】;
}
if (i=N)
bb[i]=n;
printf("\n***** new list ******In");
for (i=0;i<N+l; i++)
printf ("%4d ",bb [i]);
}
第4题
用字符数组作函数参数编程,利用一个数组实现字符串(允许输入带空格的字符串)的逆序存放。要求如下: (1)在主函数中从键盘输入字符串,字符串的最大长度为80个字符。 调用Inverse()函数将字符串逆序存放,然后在主函数中输出逆序后的字符串。 (2)在子函数Inverse()中实现字符串的逆序存放。函数原型为: void Inverse(char str[]); 在空白处填写适当的表达式或语句,使程序完整并符合题目要求。 #include <stdio.h> #include <string.h> #define N 80 void Inverse(char str[]); int main() { char a[N]; printf("Input a string:\n"); ________; Inverse(a); printf("Inversed results:\n"); ________; return 0; } void Inverse(char str[]) { int len, i, j; char temp; len = __________; for (___________; i <j; i++, j--) { temp="str[i];" str[i]="str[j];" str[j]="temp;" }> A、第9行: gets(a) 第13行: puts(a) 第22行: strlen(str) 第24行: i=0, j=len-1
B、第9行: get(a) 第13行: put(a) 第22行: strlen(str) 第24行: i=1, j=len
C、第9行: gets(a) 第13行: puts(a) 第22行: sizeof(str) 第24行: i=0, j=len
D、第9行: getchar(a) 第13行: putchar(a) 第22行: sizeof(str) 第24行: i=1, j=len-1
第6题
Option Base 1
Private Sub Command1_Click()
Dim a()
a=Array(678,45,324,528,439,387,87,875,273,823)
Fori=【 】
Forj= 【 】
If a(j)【 】a(j+1)Then
a1=a(j)
a(j)=a(j+1)
a(j+1)=al
End lf
Nextj
Next i
For i=1 To 10
Print a(i)
Next i
End Sub
第7题
Option Base 1
Private Sub Command1_Click()
Dim arr1()
Dim Min As Integer,i As Integer
Arr1=Array(12,435,76,-24,78,54,866,43)
Min=______
For i=2 To 8
If arr1(i)<Min Then______
Next i
Text1=Min
End Sub
第8题
Option Base 1
Private Sub Command1_Click()
Dim arr1()
Dim Min As Integer,i As Integer
arr1=Array(12,435,76,-24,78,54,866,43)
Min=______
For i=2 To 8
If arr l(i)<Min Then______
Next i
Text1=Min
End Sub
第10题
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在下划线上填入所需的内容。
include<stdio.h>
define N 20
void fun(int a[],int n)
{
int i,j,t,p;
for(j=0;j<n-1; 1 )
{ p=j;
for(i=j;i<n;i++)
if(a[i] 2 a[p]
p=i;
t=a[p];
a[p]=a[j];
a[ 3 ]=t;
}
}
main()
{int a[N]={11,32,-5,2,14},i,m=5;
for(i=0;i<m;i++)
printf("%d\n",a[i});
fun(a,m);
for(i=0;i<m;i++)
printf("%d"a[i]);
}
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!