该周主要以刷题单和看网课为主 1.质数的筛选 #include <stdio.h> #include <math.h>
// 判断一个数是否为质数的函数 int isPrime(int num) { if (num < 2) retun 0; if (num == 2) retun 1; if (num % 2 == 0) retun 0; int k = sqrt(num); for (int i = 3; i <= k; i += 2) if (num % i == 0) retun 0; } retun 1; }
int main() { int n; // 读取输入的数字个数 scanf("%d", &n); for (int i = 0; i < n; i++) { int num; // 读取每个数字 scanf("%d", &num); if (isPrime(num)) { // 如果是质数,输出该数字 printf("%d ", num); } } retun 0; } 2.多个数比较大小的两种方法: (1).(找最大和最小值) #include <stdio.h> int main() { int n, i;
printf("请输入要比较的数字个数:");
scanf("%d", &n);
int numbers[n];
printf("请输入%d个整数:\n", n);
for(i = 0; i < n; i++)
{ scanf("%d", &numbers[i]); }
// 找最大值和最小值
int max = numbers[0];
int min = numbers[0];
for(i = 1; i < n; i++)
{ if(numbers[i] > max) { max = numbers[i]; } if(numbers[i] < min) { min = numbers[i]; } }
printf("最大值:%d\n", max);
printf("最小值:%d\n", min);
return 0;
}
(2) #include <stdio.h>
// 使用指针找最大值 int* findMax(int arr[], int n) { int *max_ptr = &arr[0]; for(int i = 1; i < n; i++) { if(arr[i] > *max_ptr) { max_ptr = &arr[i]; } } return max_ptr; }
// 使用指针找最小值 int* findMin(int arr[], int n) { int *min_ptr = &arr[0]; for(int i = 1; i < n; i++) { if(arr[i] < *min_ptr) { min_ptr = &arr[i]; } } return min_ptr; }
int main() { int n;
printf("请输入数字个数:");
scanf("%d", &n);
int arr[n];
printf("请输入%d个整数:\n", n);
for(int i = 0; i < n; i++)
{ scanf("%d", &arr[i]); }
int *max_ptr = findMax(arr, n);
int *min_ptr = findMin(arr, n);
printf("最大值:%d (地址:%p)\n", *max_ptr, max_ptr);
printf("最小值:%d (地址:%p)\n", *min_ptr, min_ptr);
printf("最大值位置:第%d个元素\n", (int)(max_ptr - &arr[0]) + 1);
printf("最小值位置:第%d个元素\n", (int)(min_ptr - &arr[0]) + 1);
return 0;
} 3.将一组数倒序
#include <stdio.h> int main() { int arr[100]; int i = 0; // 读取输入,直到输入为 0 或者达到数组上限 for (i = 0; i < 100; i++) { // 传入变量的地址 scanf("%d", &arr[i]); if (arr[i] == 0) break; }
// 计算实际输入元素的数量
int sz = i;
// 逆序输出数组元素
for (i = sz - 1; i >= 0; i--)
{
printf("%d\n", arr[i]);
}
retun 0;
}