文章目录
一维数组案例
(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");
}