一维数组的常见程序框架

一、利用一维数组进行素数判断

输出100以内的素数

int main(void)
{
	int i,j;
	int a[100];
	for(i=2;i<100;i++)
	    a[i]=i;  /*向数组赋值,使下标和数据一致*/
	    i=2;
	while(i<100)
	{
		for(j=a[i]*2;j<100;j+=a[i])
	    a[j]=0;  /*计算a[i]的倍数*/
	i++;
	while(a[i]==0)
	    i++;  /*跳过已置0的数*/
	}
	for(i=2;i<100;i++)
	if(a[i]!=0)   /*输出非0的数据为素数*/
	printf("%d\t",a[i]);
}

输出结果:

二、输入十进制整数转为二进制后输出

思路:十进制整数对2取余,再倒序输出

#include <stdio.h>
int main(void)
{
	int i=0,m;
	int a[20];
	scanf("%d",&m);
	if(m==0)
	printf("0000"); /*检测输入数据为0*/
	while(m) /*m为非0时进入循环*/
	{
		a[i++]=m%2; /*对2进行取余*/
		m=m/2;
	}
	while(i)
	printf("%d",a[--i]);/*倒序输出*/
}

 三、利用随机数赋值输出10个随机数组,并输出一维数组中最大值

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
	int i,max;
	int a[20];
    srand(time(0));
    for(i=0;i<10;i++)
    {
    	a[i]=rand()%100;
    	printf("%4d",a[i]);/*输出10个随机数*/
	}
	max=a[0];/*储存数组下标为0的数据*/
	for(i=1;i<10;i++)
	{
		if(max<a[i])
		   max=a[i];  /*每个数据分别比较,并储存大的值*/
	}
	printf("\nmax=%d",max);
}

输出结果

四、一维数组的排序      升序降序原理相同,只需对符号稍作修改即可

思路:有n个数据参与排序,一共进行n-1次比较,每次均为数据本身与下一个值进行比较,找到最大值或最小值,后面数据照此办理。

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
	int i,j,t;
	int a[20];
    srand(time(0));
    for(i=0;i<10;i++)
    {
    	a[i]=rand()%100;
    	printf("%4d",a[i]);
	}
	for(i=0;i<10-1;i++)/*10个数,进行9次比较*/
	{
		for(j=i+1;j<10;j++)
		if(a[i]>a[j])/*相邻两数据比较*/
		{
			t=a[i];
			a[i]=a[j];
			a[j]=t;/*交换数据*/
		}
	}
	printf("\n");
	for(i=0;i<10;i++)
	printf("%4d",a[i]);
}

 输出样例

五、一维数组的查找定位

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
	int i,m;
	int a[20];
    srand(time(0));
    for(i=0;i<10;i++)
    {
    	a[i]=rand()%100;
    	printf("%4d",a[i]);
	}
	printf("\n"); 
	scanf("%d",&m);
	for(i=0;i<10;i++)
	{
		if(a[i]==m)
		{
			printf("值=%d,下标=%d",a[i],i);
			break;
		}
	}
	if(i==10)
	printf("未找到!");
	
}

 输出样例

 六、一维数组的数据元素删除

思路:错位覆盖

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
	int i,j=0,m;/*对j进行清零*/
	int a[20];
    srand(time(0));
    for(i=0;i<10;i++)
    {
    	a[i]=rand()%100;
    	printf("%4d",a[i]);
	}
	printf("\n"); 
	scanf("%d",&m);
	for(i=0;i<10;i++)
		if(a[i]!=m)
	    a[j++]=a[i];  /*错位覆盖*/
	for(i=0;i<j;i++)
	printf("%4d",a[i]);
	
}

输出样式:

六、数据倒置

思路:使用i定位0下标,j定位最后一个元素下标,两两进行交换,i前进,j后退,i=j是结束。

 

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
	int i,j=0,m;
	int a[20];
    srand(time(0));
    for(i=0;i<10;i++)
    {
    	a[i]=rand()%100;
    	printf("%4d",a[i]);
	}
	printf("\n"); 
	i=0,j=10-1;
	while(i<j)/*限制结束条件*/
	{
		m=a[i];
		a[i]=a[j];
		a[j]=m;
		i++;/*i前进*/
		j--;/*j倒退*/
	}
	for(i=0;i<10;i++)
	printf("%4d",a[i]);
	
}

输出样式

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值