用筛选法求100之内的素数:
void SiftPrime(int n)
{
int *arr = (int *)malloc(n*sizeof(n));//动态申请n个内存
int i; int j;
assert(arr != NULL);
for (i = 0; i < n; i++)//初始化数组
{
arr[i] = i;
}
arr[1] = arr[0] = 0;//0和1不是素数
for (i = 2; i <=sqrt(1.0*n); i++)
{
for (j = i + 1; j < n; j++)
{
if ((arr[j] != 0 )&& (j%i == 0))//j是i的倍数
{
arr[j] = 0;//!!!!赋值不是置为
}
}
}
printf("%d之内的素数有:\n", n);
j = 0;
for (i = 2; i < n; i++)
{
if (arr[i] != 0)
{
printf("%d ", arr[i]);
j++;
if ((j % 5 == 0))
{
printf("\n");
}
}
}
printf("\n");
free(arr);
}
用选择法对10个整数排序:
void SelectSort(int *arr, int len)
{
int minIndex;//用于标记最小值的下标
int tmp;//标记数据交换的临时量
int i;
int j;
for (i = 0; i < len - 1; i++)//选择的趟数
{
minIndex = i;//必须赋值
for (j = i; j < len; j++)
{
if (arr[minIndex]>arr[j])
{
minIndex = j;
}
}
if (arr[minIndex] != i)
{
tmp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = tmp;
}
}
}
//输出以下杨辉三角形
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
……
void PascalTriangle()
{
#define ROW 10//打印的行数
int arr[ROW][ROW];
int i;
int j;
for (i = 0; i < ROW; i++)
{
for (j = 0; j <= i; j++)
{
if ((0 == j || i == j))
{
arr[i][j] = 1;
}
else
{
arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
}
}
}
for (i = 0; i < ROW; i++)//打印杨辉三角
{
for (j = 0; j <=i ; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
#undef ROW
}