一、利用一维数组进行素数判断
输出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]);
}
输出样式