编程有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学号,姓名,三门课成绩),计算出总成绩,将原有的数据和计算出的总分数存放在磁盘文件stu.txt中。\n提示:首先以写方式打开文件stu.
时间: 2023-05-31 13:18:47 浏览: 146
C语言程序设计-输入2个学生3门课的成绩,计算学生成绩平均分,课程平均分和最高分.
5星 · 资源好评率100%
### 回答1:
题目描述:有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学号,姓名,三门课成绩),计算出总成绩,将原有的数据和计算出的总分数存放在磁盘文件stu.txt中。提示:首先以写方式打开文件stu。
解题思路:首先,需要从键盘输入5个学生的信息,包括学号、姓名和三门课成绩。然后,计算每个学生的总成绩,并将原有的数据和计算出的总分数存放在磁盘文件stu.txt中。最后,关闭文件。
代码实现:
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp;
int i, j, sum;
char id[10], name[20];
int score[3];
fp = fopen("stu.txt", "w");
if (fp == NULL)
{
printf("Cannot open file.\n");
exit(1);
}
for (i = 0; i < 5; i++)
{
printf("请输入第%d个学生的学号、姓名和三门课成绩:\n", i+1);
scanf("%s%s%d%d%d", id, name, &score[0], &score[1], &score[2]);
sum = score[0] + score[1] + score[2];
fprintf(fp, "%s %s %d %d %d %d\n", id, name, score[0], score[1], score[2], sum);
}
fclose(fp);
return 0;
}
### 回答2:
在解决本题之前,我们先来了解一下文件的打开方式:
在C语言中,通常有3种文件打开方式:
1. 只读方式("r"): 以只读方式打开文件,如果文件不存在则打开失败。
2. 只写方式("w"): 以只写方式打开文件,如果文件不存在则创建新的文件,若文件已经存在,则清空文件内容。
3. 读写方式("a+"): 以读写方式打开文件,如果文件不存在则新建文件,写入的内容会追加到原文件后面。
注:文件指针可以通过fseek和rewind等函数来移动。
现在,我们来解决本题。
首先,我们需要定义学生的数据类型:
typedef struct
{
int num; //学号
char name[20]; //姓名
int score[3]; //分数
int sum; //总分
}STU;
然后,我们需要从键盘输入5个学生的信息,存放在一个stu数组中:
STU stu[5];
for (int i = 0; i < 5; i++)
{
printf("请输入第%d个学生的学号,姓名和分数:\n", i+1);
scanf("%d%s%d%d%d", &stu[i].num, stu[i].name, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);
stu[i].sum = stu[i].score[0] + stu[i].score[1] + stu[i].score[2]; //计算总分
}
接下来,我们需要以写方式打开文件stu.txt:
FILE *fp = fopen("stu.txt", "w");
如果打开失败,则返回NULL,因此需要进行判断:
if (fp == NULL)
{
printf("打开文件失败!\n");
return 0;
}
如果成功打开了文件,我们需要将学生的信息以及总分写入文件;因此,我们可以使用fprintf函数来实现:
for (int i = 0; i < 5; i++)
{
fprintf(fp, "%d %s %d %d %d %d\n", stu[i].num, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].sum);
}
注意:每个学生的信息之间需要用空格隔开;每个学生的最后需要加上换行符。
最后,我们需要记得关闭文件:
fclose(fp);
至此,本题就解决了。完整代码如下:
### 回答3:
编程是一个充满挑战和创造的领域,而在学习编程的过程中,你会遇到各种问题、练习和实践。此题目是一个涉及文件读写操作的小任务,要求我们输入5个学生的3门课的成绩,并将其总分存储在文件“stu.txt”中。
首先,我们需要根据需求创造1个空白的文件“stu.txt”,然后使用写的方式打开它。一般情况下,程序具有创建一个新文件和打开已经存在的文件两种情况。
创建文件的代码如下:
```python
with open('stu.txt', 'w') as f:
pass # 占位语句
```
如果文件已经存在,我们只需要打开即可:
```python
with open('stu.txt', 'w') as f:
# 写入数据
```
接下来需要输入5个学生的3门课成绩。我们可以用一个for循环来实现,每次循环中都必须输入1个学生三项成绩,然后将这些数据写入文件。
```python
with open('stu.txt', 'w') as f:
for i in range(5): # 循环5次
# 依次输入每个学生的学号、姓名、成绩,并计算总分
stu_id = input("请输入学号:")
name = input("请输入姓名:")
score1 = int(input("请输入第1门课程成绩:"))
score2 = int(input("请输入第2门课程成绩:"))
score3 = int(input("请输入第3门课程成绩:"))
total = score1 + score2 + score3
# 将学生数据和总分写入文件
data = f"{stu_id}\t{name}\t{score1}\t{score2}\t{score3}\t{total}\n"
f.write(data)
```
在这段代码中,我们利用for循环从1-5输入每个学生的学号、姓名和成绩,然后计算总数,最后将这些信息和总分存储到变量“data”中,并通过写模式将它们写入文件“stu.txt”中。
总地来说,这是一个涉及文件读写操作的小练习,要求我们实现输入五个学生的信息,计算出它们的总分数并将它们一起存入文件“stu.txt”中,从而巩固我们的文件读写技能。
阅读全文