//
// Created by 86184 on 2024/8/11.
//
//素数,又称质数,
//是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
//换句话说,素数只有两个正因数:1和它本身。
//1.用筛选法 求100之内的素数
int main() {
int i;
int array[100];
//向数组中填充1—100数据
for (i = 0; i < 100; ++i) {
array[i] = i + 1;
}
//1不是素数 只需要将1划掉
array[0] = 0;
for (i = 1; i < 100; ++i) {
//跳过数组中已经被赋值为零的元素 已经比前面的数字模过的元素
if (array[i] == 0) {
continue;
}
//使用a[i]去模其之后所有数据
for (int j = i + 1; j < 100; ++j) {
//排除后面已经被摸过的元素
if (0 != array[j] && array[j] % array[i] == 0) {
array[j] = 0;
}
}
}
//输出所有的素数
for (int j = 0; j < 100; ++j) {
if (0 != array[j]) {
printf("%d ", array[j]);
}
}
printf("\n");
return 1;
}
//
// Created by 86184 on 2024/8/11.
//
//2.用选择法对十个整形数据排序
//分析:
// 1.10个整数排序 准备十个整型数据
// a.数据给死
// b.可以输入
// 整型数组
// 2.选择法
// 类似于简单选择排序
// 每一趟找到最大元素所在位置
// 与末尾元素进行交换
// 3.升序
int main() {
int maxPos, temp;
int array[10] = {2, 8, 3, 9, 5, 7, 1, 4, 0, 6};
int size = sizeof(array) / sizeof(array[0]);
//将排序之前的数组元素输出
for (int i = 0; i < size; i++) {
printf("%d ", array[i]);
}
printf("\n");
for (int i = 0; i < size; ++i) {
//选择法排序
maxPos = 0;
for (int j = 1; j < size - i; j++) {
if (array[j] > array[maxPos]) {
maxPos = j;
}
}
if (maxPos != size - i - 1) {
//交换元素
temp = array[maxPos];
array[maxPos] = array[size - i - 1];
array[size - i - 1] = temp;
}
}
//将排序好的数组元素输出
for (int i = 0; i < size; i++) {
printf("%d ", array[i]);
}
printf("\n");
return 1;
}
//
// Created by 86184 on 2024/8/11.
//
//3. 求一个3*3的整型矩阵的对角线元素之和
//分析:
// 左上角到右下角:行列小标相同
// 右上角到左下角:行下标依次递增 列下标依次递减
int main() {
int i, j;
int sum = 0;
//接收矩阵中的数据
int array[3][3];
for (i = 0; i < 3; ++i) {
for (j = 0; j < 3; j++) {
scanf("%d", &array[i][j]);
}
}
//左上角到右下角对角线元素之和
for (i = 0; i < 3; ++i) {
for (j = 0; j < 3; j++) {
if (i == j) {
sum += array[i][j];
}
}
}
//右上角到左下角对角线元素之和
for (i = 0; i < 3; ++i) {
for (j = 2; j >= 0; j--) {
if ((i + j) == 2) {
sum += array[i][j];
}
}
}
printf("对角线元素之和为:%d", sum);
return 1;
}
//
// Created by 86184 on 2024/8/11.
//
//4.有一个已经排好序的数组,要求输入一个数后,按原来的排序规律将它插入数组中
//分析:
//1.找待插入元素在数组中的位置
// 一边比较,一边搬移元素
//2.插入元素
int main() {
int key = 0, end = 8;
int array[10] = {0, 1, 2, 3, 4, 6, 7, 8, 9};
printf("请输入插入的元素:");
fflush(stdout);
scanf("%d", &key);
printf("原数组:\n");
for (int i = 0; i < 9; ++i) {
printf("%d ", array[i]);
}
printf("\n");
//找待插位置
while (end >= 0 && key < array[end]) {
array[end + 1] = array[end];
end--;
}
//插入元素
array[end + 1] = key;
printf("结果数组:\n");
for (int i = 0; i < 10; ++i) {
printf("%d ", array[i]);
}
return 1;
}