程序设计(数组)

目录

程序一:有一个已排好序的数组,要求输入一个数后,按原来的排序规律将它插入数组中。

程序二:删除指定下标的元素值。

程序三:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列。

程序四:冒泡排序

程序五:选择排序

程序六:由N个有序整数组成的数列已放在一维数组中,程序的功能是:利用折半查找算法查找整 数m在数组中的位置。

程序七:求出二维数组的每行最大值并存放在x所指的数组中。

程序八:求出二维数组的每列最大值并存放在x所指的数组中。

程序九:将一个二维数组行和列的元素互换。

程序十:   输出二维数组的鞍点。鞍点乃该元素在该行上最大,在该列上最小。


程序一: 有一个已排好序的数组,要求输入一个数后,按原来的排序规律将它插入数组中。

main()
{
	int a[8]={1,3,5,7,9,11,13};
	int i,j,end=8-2,k;
	scanf("%d",&k);
	while(end>=0&&a[end]>k)//边比较边移动
	{
		a[end+1]=a[end];
		end--;
	}
	a[end+1]=k;

	for(i=0;i<8;i++)
	 printf(" %d",a[i]);
}

程序二:删除指定下标的元素值。

#include<stdio.h>
#include<stdlib.h>
main()
{
	int a[8]={1,3,5,7,9,11,13,15};
	int i,j=0,k;
	printf("删除前:");
	for(i=0;i<8;i++)
	  printf(" %d",a[i]);
	printf("\n");
	printf("请输入需要删除的下标元素:");
	scanf("%d",&k);
	if(k>=0&&k<8)
	{
	  for(i=0;i<8;i++)
	  if(i!=k) a[j++]=a[i];
	}
	else
	{
	   printf("输入下标不合法\n");
	   exit(0);	
	}
	printf("删除后:");
	for(i=0;i<8-1;i++)printf(" %d",a[i]);
	printf("\n"); 
}
  

程序三:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列。

main()
{
	int a[10]={1,1,2,2,3,3,4,5,6,8};
	int i,j=0;
	printf("删除前:");
	for(i=0;i<10;i++)
	 printf(" %d",a[i]);
	 printf("\n");
	for(i=0;i<10;i++)
	{
		if(a[i+1]!=a[i])
		  a[j++]=a[i];
	}
	printf("删除后:");
	for(i=0;i<j;i++)
	 printf(" %d",a[i]);
}

程序四:冒泡排序

main()
{
	int a[10]={1,9,5,7,4,11,3,5,17,19};
	int i,j,t;
	for(i=0;i<10-1;i++)
	{
		for(j=0;j<10-1-i;j++)
		 if(a[j]>a[j+1])
		  {
		  	t=a[j];
		  	a[j]=a[j+1];
		  	a[j+1]=t;
		  }
	}
	for(i=0;i<10;i++)
	  printf(" %d",a[i]);
	 
}

程序五:选择排序

main()
{
	int a[10]={1,9,5,7,4,11,3,5,17,19};
	int i,j,t,m;
	for(i=0;i<10-1;i++)
	{
		m=i;
		for(j=i+1;j<10;j++)
		 if(a[m]<a[j]) m=j;
	    if(i!=m)
		{
			t=a[i];
			a[i]=a[m];
			a[m]=t;
	    }	 
	}
	for(i=0;i<10;i++)
	  printf(" %d",a[i]); 
}

程序六:由N个有序整数组成的数列已放在一维数组中,程序的功能是:利用折半查找算法查找整数m在数组中的位置。

#define N 6
main()
{
	int a[N]={1,3,5,7,9,11};
	int i,low=0,high=N-1,mid,k;
	printf("请输入需要查找的值");
	scanf("%d",&k);
	while(low<=high)
	{
		mid=(low+high)/2;
		if(a[mid]==k)
		  {
		    printf("找到了下标是:%d",mid);
			break;
		  }
		else if(a[mid]>k)
		    high=mid-1;
		else low=mid+1;
	}
	if(low>high)printf("查找失败");
}

程序七: 求出二维数组的每行最大值并存放在x所指的数组中。

#define N 3
main()
{
   int a[N][N],x[N];
   int i,j,max=0,t=1;
   for(i=0;i<N;i++)
     for(j=0;j<N;j++)
      scanf(" %d",&a[i][j]);//输入N行N列元素 
   printf("\n");
   for(i=0;i<N;i++)
   { for(j=0;j<N;j++)
       printf(" %d",a[i][j]);
     printf("\n");
   }
   for(i=0;i<N;i++)
    {
    	max=0;
    	for(j=1;j<N;j++)
    	  if(a[i][max]<a[i][j])max=j;
    	x[t++]=a[i][max];
	}
    for(i=1;i<t;i++) 
    printf("第%d行最大值是:%d\n",i,x[i]);
  
   
}
  

程序八: 求出二维数组的每列最大值并存放在x所指的数组中。

main()
{
   int a[3][3]={{12,3,5},{4,5,6},{78,60,1}},x[N];
   int i,j,max=0,t=1;
   for(i=0;i<3;i++)
   { for(j=0;j<3;j++)
      printf("%4d",a[i][j]);
      printf("\n");
   }
   for(i=0;i<3;i++)
    {
    	max=0;
    	for(j=1;j<3;j++)
    	  if(a[max][i]<a[j][i])max=j;
    	x[t++]=a[max][i];
	}
    for(i=1;i<t;i++) 
    printf("第%d列最大值是:%d\n",i,x[i]);  
}

程序九:将一个二维数组行和列的元素互换。

main()
{
   int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
   int i,j,max=0,t=1;
   printf("交换前:\n");
   for(i=0;i<3;i++)
    { for(j=0;j<3;j++)
       printf("%4d",a[i][j]);
      printf("\n");
    }
   printf("交换后:\n");
   for(i=0;i<3;i++)
    {
      for(j=0;j<3;j++)
       printf("%4d",a[j][i]);
      printf("\n");
	}
}

程序十: 输出二维数组的鞍点。鞍点乃该元素在该行上最大,在该列上最小。

#define N 3
main()
{
   int a[N][N]={{9,6,66},{10,23,55},{5,7,8}},pos,flag=0;
   int i,j,max;
   for(i=0;i<N;i++)
   { 
      max=a[i][0];
      for(j=0;j<N;j++)
      {
        if(a[i][j]>max)
          max=a[i][j];
        pos=j; 
	  }
	  for(j=0;j<N;j++)
	  	if(a[j][pos]<max)break;
	  if(j==N)
	  {
	    printf("找到了该鞍点为第%d第%d列%d",i,pos,a[i][pos]);
	    flag=1;
		break; 
	  } 
   }
   if(flag==0)printf("没有鞍点\n");
}

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值