1、简单插入排序算法
根据以上分析,代码与结果如下:
#include "stdio.h"
int main()
{
int count,j,x,a[101];
scanf("%d",&x);
if(x<=0)
return;
else
a[1]=x;
count=1;
scanf("%d",&x);
while(x>0)
{
for(j=count; x>a[j]&&j>0; j--) //将数循环后移1位
a[j+1] = a[j];
a[++j] = x; //把x放在a[j+1]的位置
count++;
scanf("%d",&x);
}
for(j=1;j<=count;j++)
printf("%d ",a[j]);
return 0;
}
2、两个矩阵的乘积
根据上面分析可知,i和j是最终数组的行和列,这个数组的每个元素是由数组a的一行乘以数组b的一列并加起来得到的,所以k是循环3组数相乘并加起来,具体代码与结果如下:
#include "stdio.h"
int main()
{
int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2]={{1,4},{2,5},{3,6}};
int c[2][2]={{0,0},{0,0}};
int i,j,k;
for(i=0;i<2;i++)
{ for(j=0;j<2;j++)
{
for(k=0;k<3;k++)
c[i][j]=c[i][j]+a[i][k]*b[k][j];
}
}
printf("the array a * array b is :\n");
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
printf("%4d",c[i][j]);
printf("\n");
}
return 0;
}
3、将两个有序数组合并为一个有序数组
分析这个问题如下:
- 刚开始时,最终数组c的每一个元素要么来自数组a,要么来自数组b,这时需要比较这两个数组的对应元素来选择,直止数组a或数组b选完了;
- 若数组a或数组b选完了,那么最终数组c的后续元素都来自那个没有选完的数组。
根据以上分析,其代码与结果如下:
#include "stdio.h"
#define M 3
#define N 5
int main()
{
int i=0,j=0,k;
int a[M]={7,13,89},b[N]={9,14,25,36,49},c[M+N];
for(k=0;k<M+N && i<M && j<N;k++) //从数组a和数组b中选元素
{
if(a[i]>b[j])
{
c[k]=b[j];
j++;
}
else
{
c[k]=a[i];
i++;
}
}
if(i==M) //若数组a选完了,则把数组b剩下的元素加上即可
{
for(;j<N;j++)
{
c[k]=b[j];
k++;
}
}
if(j==N) //若数组b选完了,则把数组a剩下的元素加上即可
{
for(;i<M;i++)
{
c[k]=a[i];
k++;
}
}
for(k=0;k<M+N;k++)
printf("%4d",c[k]);
printf("\n");
return 0;
}
标签:count,22,int,C语言,++,选完,数组,程序设计,include
From: https://blog.csdn.net/u013571432/article/details/141232267