7-3 中位数几何分数 10 全屏浏览题目 切换布局 作者 龚雄兴 单位 湖北文理学院 N个整数的中位数是指这N个整数排序后中间的那个数(即小于它和大于它的数的数量相等),如果个数为奇数,排序后中间的那个数即为中位数,并约定:如果N为偶数,则取排序后正中间的两个数的平均值(取整数)。编写程序,输出给定整数数组的前1个,前2个,……前N个的中位数(以空格分隔)。 输入格式: 第一行是整数的个数N(正整数)、第二行是空格间隔的N个整数。 输出格式: 花括号中的N个整数,以逗号分隔,依次是前一个,前两个,……前N个数的中位数(整数)。 输入样例: 6 -20 30 -10 10 40 -40 输出样例: {-20,5,-10,0,10,0}
时间: 2024-03-20 10:39:29 浏览: 36
以下是 Python 代码实现:
```python
n = int(input())
nums = list(map(int, input().split()))
# 对输入的整数数组进行排序
nums.sort()
# 计算前 i 个数的中位数
for i in range(1, n + 1):
mid = 0
if i % 2 == 1:
mid = nums[i // 2]
else:
mid = (nums[i // 2 - 1] + nums[i // 2]) // 2
if i == 1:
print("{%d}" % mid, end="")
else:
print(",{%d}" % mid, end="")
```
思路如下:
1. 首先读入整数的个数 `n` 和整数数组 `nums`;
2. 对 `nums` 进行排序;
3. 遍历 1 到 `n`,计算前 i 个数的中位数,如果 i 是奇数,则取排序后第 i / 2 + 1 个数作为中位数,如果 i 是偶数,则取排序后第 i / 2 个数和第 i / 2 + 1 个数的平均值作为中位数;
4. 按照题目要求输出中位数,注意输出格式。
时间复杂度为 O(nlogn),因为需要对整数数组进行排序。
相关问题
6-2 有结构文件的读写1 分数 10 全屏浏览题目 切换布局 作者 龚雄兴 单位 湖北文理学院 学生类型:ST的类型定义如下: typedef struct student{ char name[10],id[10]; int gender; int age; double scored; } ST
好的,我已经明白了你的问题。关于有结构文件的读写,可以通过以下步骤实现:
1. 定义ST类型,并在程序中使用它。
2. 打开文件,读取或写入结构体数据。
3. 关闭文件。
下面是一个简单的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct student {
char name[10], id[10];
int gender, age;
double scored;
} ST;
int main() {
FILE *fp;
ST st, read_st;
// 写入数据到文件
fp = fopen("students.txt", "wb");
if (fp == NULL) {
printf("打开文件失败!\n");
exit(1);
}
st.gender = 1;
st.age = 20;
st.scored = 98.5;
strcpy(st.name, "小明");
strcpy(st.id, "1001");
fwrite(&st, sizeof(ST), 1, fp);
fclose(fp);
// 从文件读取数据
fp = fopen("students.txt", "rb");
if (fp == NULL) {
printf("打开文件失败!\n");
exit(1);
}
fread(&read_st, sizeof(ST), 1, fp);
printf("姓名:%s\n", read_st.name);
printf("学号:%s\n", read_st.id);
printf("性别:%d\n", read_st.gender);
printf("年龄:%d\n", read_st.age);
printf("成绩:%f\n", read_st.scored);
fclose(fp);
return 0;
}
```
在上面的代码中,我们定义了一个名为ST的结构体类型,并在程序中定义了一个ST类型的变量st和read_st。然后,我们通过打开文件、读取或写入结构体数据、关闭文件的方式进行了文件操作。
在写入数据时,我们使用了fwrite()函数将结构体数据写入文件。在读取数据时,我们使用了fread()函数从文件中读取结构体数据。
需要注意的是,结构体中的成员变量需要一个一个地写入或读取,而不能使用字符串和格式化输出等函数。此外,还需要注意文件打开模式,以确保文件能够正确地读写。
6-2 有结构文件的读写1 分数 10 全屏浏览题目 切换布局 作者 龚雄兴 单位 湖北文理学院 学生类型:ST的类型定义如下: typedef struct student{ char name[10],id[10]; int gender; int age; double scored; } ST; 编写函数,从指定的文件上读入若干字符串,每行字符串是一个学生的信息(姓名,学号,性别,年龄,分数)的字符串表示,数据间以空格分隔,将学生们的信息存储于一个结构体中,并利用output()函数输出到指定文件中。 函数接口定义: void fun(FILE *fin,FILE *fout); 其中 fin 和 fout 都是用户传入的参数。 前者是已正常打开的可读文件,而后者是已正常打开的可写文件。
以下是代码实现:
```c
void fun(FILE *fin, FILE *fout) {
ST stu;
char line[50];
while (fgets(line, 50, fin) != NULL) {
sscanf(line, "%s %s %d %d %lf", stu.name, stu.id, &stu.gender, &stu.age, &stu.scored);
fprintf(fout, "Name: %s, ID: %s, Gender: %d, Age: %d, Score: %.2lf\n", stu.name, stu.id, stu.gender, stu.age, stu.scored);
}
}
```
首先定义了一个 ST 结构体来存储每个学生的信息。然后利用 fgets 函数逐行读取文件,再使用 sscanf 函数将每行字符串解析为相应的学生信息,存储到结构体中。最后使用 fprintf 函数将学生信息输出到指定文件中。注意输出时要按照指定格式输出,如添加“Name:”、“ID:”等提示信息。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![apk](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)