打印输出1-30之间的所有素数

思路

这个程序的目标是打印出1到30之间的所有素数。为了实现这个目标,我们首先需要一个函数来判断一个数是否为素数。这就是is_prime函数的作用。它接受一个整数作为参数,然后通过一个for循环来检查这个数是否可以被2到它的平方根之间的任何整数整除。如果可以,那么这个数就不是素数,函数返回0;否则,这个数就是素数,函数返回1。

然后在main函数中,我们使用一个for循环来遍历1到30的所有整数。对于每一个整数,我们都调用is_prime函数来检查它是否为素数。如果是,我们就使用printf函数将它打印出来。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>

int is_prime(int num) {
if (num <= 1) return 0;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) return 0;
}
return 1;
}

int main() {
for (int i = 1; i <= 30; i++) {
if (is_prime(i)) {
printf("%d ", i);
}
}
return 0;
}

输入6个整数,仅用指针法实现按由大到小的顺序输出

思路

这个程序的目标是接收用户输入的6个整数,并按照由大到小的顺序输出这些整数。为了实现这个目标,我们首先需要一个函数来对数组进行排序。这就是sort函数的作用。它接受一个整数指针和一个整数作为参数,整数指针指向我们要排序的数组,整数表示数组的长度。sort函数使用了冒泡排序算法,通过两层循环来比较并交换数组中的元素,从而实现排序。

然后在main函数中,我们首先定义了一个长度为6的整数数组。然后,我们使用一个for循环和scanf函数来接收用户输入的6个整数,并将这些整数存储在数组中。接着,我们调用sort函数来对数组进行排序。最后,我们使用一个for循环和printf函数来按照由大到小的顺序输出这6个整数。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h>

void sort(int *arr, int n) {
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
if (*(arr + i) < *(arr + j)) {
int temp = *(arr + i);
*(arr + i) = *(arr + j);
*(arr + j) = temp;
}
}
}
}

int main() {
int arr[6];
printf("请输入6个整数:\n");
for (int i = 0; i < 6; i++) {
scanf("%d", arr + i);
}
sort(arr, 6);
printf("由大到小的顺序输出为:\n");
for (int i = 0; i < 6; i++) {
printf("%d ", *(arr + i));
}
return 0;
}

解释

1

1
#include <stdio.h>

这行代码包含了stdio.h头文件,它是C语言中提供输入/输出功能的库。

1
int is_prime(int num) {

这行代码定义了一个名为is_prime的函数,它接受一个整数num作为参数。这个函数用于检查num是否为素数。

1
if (num <= 1) return 0;

如果num小于或等于1,那么它就不是素数,所以我们返回0。

1
for (int i = 2; i * i <= num; i++) {

这行代码是一个for循环,用于检查num是否可以被2到sqrt(num)之间的任何整数整除。

1
if (num % i == 0) return 0;

如果num可以被i整除,那么num就不是素数,所以我们返回0。

1
2
3
    }
return 1;
}

如果num不能被2到sqrt(num)之间的任何整数整除,那么num就是素数,所以我们返回1。

1
int main() {

这行代码定义了程序的主函数main

1
for (int i = 1; i <= 30; i++) {

这行代码是一个for循环,用于遍历1到30的所有整数。

1
if (is_prime(i)) {

这行代码调用我们之前定义的is_prime函数,检查当前的整数i是否为素数。

1
printf("%d ", i);

如果i是素数,我们就打印出来。

1
2
3
4
        }
}
return 0;
}

这些是闭合前面的if语句和for循环的大括号,以及表示main函数的结束,return 0;表示程序执行成功。

2

1
#include <stdio.h>

这行代码包含了stdio.h头文件,它是C语言中提供输入/输出功能的库。

1
void sort(int *arr, int n) {

这行代码定义了一个名为sort的函数,它接受一个整数指针arr和一个整数n作为参数。arr指向我们要排序的数组,n是数组的长度。

1
2
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {

这两行代码是两个嵌套的for循环,用于遍历数组中的每一对元素。

1
if (*(arr + i) < *(arr + j)) {

这行代码检查当前的两个元素是否满足我们的排序条件(即第一个元素是否小于第二个元素)。

1
2
3
int temp = *(arr + i);
*(arr + i) = *(arr + j);
*(arr + j) = temp;

如果满足排序条件,我们就交换这两个元素的位置。

1
2
3
4
            }
}
}
}

这些是闭合前面的if语句和for循环的大括号。

1
int main() {

这行代码定义了程序的主函数main

1
int arr[6];

这行代码定义了一个长度为6的整数数组arr

1
printf("请输入6个整数:\n");

这行代码打印出提示信息,告诉用户需要输入6个整数。

1
2
3
for (int i = 0; i < 6; i++) {
scanf("%d", arr + i);
}

这两行代码是一个for循环,用于从用户那里读取6个整数并存储在数组arr中。

1
sort(arr, 6);

这行代码调用我们之前定义的sort函数,对数组arr进行排序。

1
printf("由大到小的顺序输出为:\n");

这行代码打印出提示信息,告诉用户接下来将按照由大到小的顺序输出这6个整数。

1
2
3
for (int i = 0; i < 6; i++) {
printf("%d ", *(arr + i));
}

这两行代码是一个for循环,用于按照由大到小的顺序打印出这6个整数。

1
2
    return 0;
}

这行代码表示main函数的结束,return 0;表示程序执行成功。