Part2-一维数组相关案例

一维数组案例

(1).使用数组写出fibonacci数列的前10项,并将该数组实现逆序输出和逆序存放
 #include <stdio.h>
 #include <stdlib.h>
 
 int main()
 {   
     int arry[9];
     arry[9] = 1;
     arry[8] = 1;
     int i ;
     int j;
     
     //存放
     for(i=9;i>=0;i--)
     {   
         //printf(" %lld ",arry[i]);
         arry[i-2] = arry[i] + arry[i-1]; 
     }
     for(j=9;j>=0;j--)
     {
         printf(" %d ",arry[i]);
     }
     exit(0);
 }

老师的代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int arry[10] = {1,1};
    int i,j,t;
    for(i=2;i<10;i++)
    {
        arry[i] = arry[i-1] + arry[i-2];
    }
    for(j=0;j<10;j++)
    {
        printf(" %d ",arry[j]);
    }
    printf("\n");

    for(i=9;i>=0;i--)
    {
        printf(" %d ",arry[i]);
    }
    printf("\n");

    i=0;
    j=9;

    while(i<j)
    {
        t=arry[i];
        arry[i]=arry[j];
        arry[j]=t;
        i++;
        j--;
    }
    for(i=0;i<10;i++)
    {
        printf(" %d ",arry[i]);
    }
    printf("\n");
    exit(0);
}
(2).数组解决进制转换问题:

从终端输入要进行转换的数字(num),及要转换成的某种进制(base),按输入要求进行输出。

#include <stdio.h>
#include <stdlib.h>

int main()
{
	int num,i,j,m;
	int type;
    int arry[32];
    printf("Input a number:");
	scanf("%d",&num);
    printf("\nInput a type:");
	scanf("%d",&type); //输入你要转换的类型;
    
	if(type != 2 && type!= 8 && type!= 16)
    {
        printf("error\n");
    }
    else
    {
        for(i=0,j=0;i<=32 ;i++,j++)
        {
            arry[i]=num%type;
            num = num/type;
            if(num == 0)
                break;
        }

        if(type == 8)
        {
            printf("0");
            
        }
        else if(type == 16)
        {
            printf("0x");
        }
		
        i=j;
        for(i;i>=0;i--)
        {
            if(arry[i]>=10)
                printf("%c",arry[i]-10+'A');
            else
            	printf("%d",arry[i]);
        }
            printf("\n");         
    }   
}

老师的:

void num_base()
{
	int num,base;
	int a[128],i = 0;

	printf("Pleae enter for NUM:");
	scanf("%d",&num);
	printf("Pleae enter for BASE:");
	scanf("%d",&base);

	if(base != 2 && base != 8 && base != 16)
	{
		printf("ERROR!\n");
		return ;
	}
	do
	{
		a[i] = num % base;
		i++;
		num = num / base; 
	}while(num != 0);

	for(i--; i >= 0 ;i--)
	{
		if(a[i] >= 10)
			printf("%c ",a[i]-10+'A');
		else
			printf("%d ",a[i]);
	}	
	printf("\n");
}
(3).冒泡排序法
#include <stdio.h>
#include <stdlib.h>

int main()
{
	int n=10;
	int i,j;
    int t;
	int arry[10]={2,7,5,10,8,9,4,1,3,6};
	
	for(i=0;i<n-1;i++)
	{
		for(j=0;j<n-i-1;j++)
		{
			if(arry[j+1]<arry[j])
			{
				t = arry[j];
				arry[j] = arry[j+1];
				arry[j+1] = t;
			}
		}
	}
	for(i=0;i<n;i++)
	{
		printf("%d",arry[i]);
	}
    printf("\n");
	exit(0);
}

(4).选择排序法
#include <stdio.h>
#include <stdlib.h>

int main()
{
	int n=10;
	int i,j;
    int t;
	int arry[10]={2,7,5,10,8,9,4,1,3,6};
	int min;
    
	for(i=0;i<n-1;i++)
    {
        min=i;
        for(j=i+1;j<n;j++)
        {
            if(arry[min]>arry[j])
            {
                min=j;
            }
        }
        t = arry[i];
        arry[i] = arry[min];
        arry[min] =t;
    }
    
	for(i=0;i<n;i++)
	{
		printf("%d,",arry[i]);
	}
    printf("\n");
	exit(0);
}

老师的

void sort_choice()
{
	int a[N] = {5,4,3,7,0,8,2,9,1,6};
    int i,j,t,m;

    for(i = 0 ; i < N ; i++)
        printf("%d ",a[i]);
    printf("\n");

	for(i = 0 ; i < N-1; i++)
	{
		t = i;
		for(j = i+1; j < N ; j++)
		{
			if(a[t] > a[j])
			{
				t = j;
			}
		}
		
		if(t != i)
		{
			m = a[t];
			a[t] = a[i];
			a[i] = m;
		}
/*
		for(t = 0 ; t < N ; t++)
            printf("%d ",a[t]);
        printf("\n");
        
        getchar();
*/
	}

	for(i = 0 ; i < N ; i++)
        printf("%d ",a[i]);
    printf("\n");

}

(5).删除法求1000以内的所有质数
#include <stdio.h>
#include <stdlib.h>

#define Size 1000

int main()
{
    int arry[2000];
	int pri;
    int i,j,m=2,n;
    
    for(i=2;i<=Size;i++)
    {
        arry[i-2] = i;
    }
    
    for(m;m<=Size;m++)
    {
  		for(i=0;i<=Size;i++)
    	{
  			if(arry[i+m-1]%m == 0)
       		{
        		arry[i+m-1] = 0;
       		}
        }
    }
    
    for(i=0;i<Size;i++)
    {
            printf(" %d ",arry[i]);
    }
}

老师的方法:***********

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int arry[1001] = {0};
    int i,j;
    
    for(i=2;i<1001;i++)
    {
        if(arry[i] == 0)
        {
            for(j=i+i;j<=1001;j += i)
            {
                arry[j] = 1;
            }
        }
    }
    for(i=2;i<1001;i++)                
    {
        if(arry[i] != 1)
        {
            printf(" %d ",i);
        }
    }
    exit(0);
    
}
(6).自行构建一个一堆数组。求数组中最大的数以及所在下标.
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int arry[10]={7,2,5,10,8,9,4,1,3,6};
    int i,t=0,max=0;
    
    for(i=1;i<10;i++)
    {
		if(arry[max]<arry[i])
        {
            arry[max] = arry[i];
            max = i;
        }
    }
    printf("arry[%d] = %d",max,arry[max]);
}
(7).构建一个可以存储10个整数的数组

将前9个位置初始化,将目标值100放在数组的第0个位置

扩展:将目标值100放在任意指定的下标上

#include <stdio.h>
#include <stdlib.h>

int main()
{
	int arry[10] = {1,2,3,4,5,6,7,8,9};
	int num=100;
    int n=10;
	int i,j;
	
    printf("Input you want 100 to location:");
    scanf("%d",&j);
    
	for(i=9;i>=j;i--)
	{
		arry[i] = arry[i-1];
	}
    
    arry[j] = num;
	for(i=0;i<10;i++)
	{
		printf(" %d ",arry[i]);
	}
	printf("\n");
}

老师的代码:

void array_pos_insert()
{
	int a[N] = {5,4,3,7,8,2,9,1,6};
    int i,data = 100,pos = 3,j = 8;

	for(i = 0 ; i < N ; i++)
        printf("%d ",a[i]);
    printf("\n");

	while(j >= pos)
	{
		a[j+1] = a[j];
		j--;
	}

	a[pos] = data;

	for(i = 0 ; i < N ; i++)
        printf("%d ",a[i]);
    printf("\n");

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值