1、打印200到300之间所有的素数。 2、20个学生3门课,求每门课的最高分,放入一个一维数组中,输出每门课的最高分。 3、有N个数的数组中找出最小的数与最后一个交换。要求:编写函数实现上述交换功能,在 main()函数里进行函数调用并打印。
时间: 2025-06-27 16:05:56 浏览: 4
<<
**问题解答及代码展示**
### **1. 打印200到300之间的所有素数**
#### 解释:
素数是指除了自身和1之外没有其他因数的自然数。为了判断某个数字是否为素数,我们需要检查它能否被从`2`到其平方根范围内的任何整数整除。
```c
#include <stdio.h>
#include <math.h>
int isPrime(int num) {
if (num <= 1)
return 0;
for (int i = 2; i <= sqrt(num); i++) { // 检查是否有因子
if (num % i == 0)
return 0;
}
return 1;
}
void printPrimesInRange(int start, int end) {
printf("The prime numbers between %d and %d are:\n", start, end);
for (int i = start; i <= end; i++) {
if (isPrime(i))
printf("%d ", i);
}
printf("\n");
}
int main() {
int lowerBound = 200, upperBound = 300;
printPrimesInRange(lowerBound, upperBound);
return 0;
}
```
---
### **2. 计算20个学生3门课程的成绩,并找到每门课的最高分存入一维数组中**
#### 解释:
我们使用二维数组存储学生成绩(行表示学生,列表示科目),然后遍历每一列寻找最大值,并将结果存储在一维数组中。
```c
#include <stdio.h>
#define NUM_STUDENTS 20
#define NUM_COURSES 3
void findHighestScores(const int scores[NUM_STUDENTS][NUM_COURSES], int highest[]) {
for (int j = 0; j < NUM_COURSES; j++) {
highest[j] = scores[0][j]; // 假设第一行为初始最大值
for (int i = 1; i < NUM_STUDENTS; i++) {
if (scores[i][j] > highest[j])
highest[j] = scores[i][j];
}
}
}
int main() {
int grades[NUM_STUDENTS][NUM_COURSES];
// 输入成绩数据(简化版)
for (int i = 0; i < NUM_STUDENTS; i++) {
for (int j = 0; j < NUM_COURSES; j++) {
printf("Enter grade of student %d in course %d: ", i + 1, j + 1);
scanf("%d", &grades[i][j]);
}
}
int maxGrades[NUM_COURSES];
findHighestScores(grades, maxGrades);
printf("Maximum score per course:\n");
for (int j = 0; j < NUM_COURSES; j++)
printf("Course %d Max Score: %d\n", j + 1, maxGrades[j]);
return 0;
}
```
---
### **3. 在一个包含N个元素的数组中,找出最小值并与最后一个元素交换位置**
#### 解释:
首先定义一个函数用于查找并完成交换操作,该函数接收两个参数:数组指针及其长度。在主程序中调用此函数后打印调整后的数组内容。
```c
#include <stdio.h>
// 函数声明部分
void swapMinWithLast(int arr[], int size);
int main() {
int n;
printf("How many elements do you want to enter? ");
scanf("%d", &n);
int array[n];
printf("Please input the values for your array:\n");
for (int i = 0; i < n; ++i){
scanf("%d", &array[i]);
}
swapMinWithLast(array, n);
printf("Array after swapping min with last element:");
for (int i=0;i<n;i++){
printf("%d ", array[i]);
}
printf("\n");
return 0 ;
}
void swapMinWithLast(int arr[], int size){
int minValueIndex = 0 ;
// 寻找最小值所在的位置
for(int i=1 ;i<size;i++){
if(arr[i]<arr[minValueIndex]){
minValueIndex=i;
}
}
// 进行交换操作
int temp=arr[size - 1 ];
arr[size - 1 ]=arr[minValueIndex ];
arr[minValueIndex]=temp ;
}
```
---
阅读全文
相关推荐











