#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//(第5次)1.有5个学生,每个学生的数据信息包括学号、姓名、3门课的成绩,从键盘输入5个学生的信息,要求输出3门课程的总的平均成绩,以及最高分的学生的信息。
//(第6次)1.有5个学生,每个学生有3门课程的成绩,从键盘输入学生数据(包括学号、姓名、3门课程成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件"stud"中
struct stu{
char id[11];
char name[10];
int sub_1;
int sub_2;
int sub_3;
} student[3];
int main1()
{
int i,sum[4],all=0,big;
float average;
//输入部分开始
for(i=1;i<=3;i++)
{
printf("请输入第%d个同学的姓名:",i);
gets(student[i].name);
printf("请输入第%d个同学的id:",i);
gets(student[i].id);
printf("请输入第%d个同学的第1门课成绩:",i);
scanf("%d",&student[i].sub_1);
printf("请输入第%d个同学的第2门课成绩:",i);
scanf("%d",&student[i].sub_2);
printf("请输入第%d个同学的第3门课成绩:",i);
scanf("%d",&student[i].sub_3);
getchar();
}
FILE *fp;
fp=fopen("stud","w+");
//存入文件 (第6次增加部分)
for(i=1;i<=3;i++)
{
fprintf(fp,"%s\n",student[i].name);
fprintf(fp,"%s\n",student[i].id);
fprintf(fp,"%d\n",student[i].sub_1);
fprintf(fp,"%d\n",student[i].sub_2);
fprintf(fp,"%d\n",student[i].sub_3);
}
//第6次增加部分结束
//输出总平均成绩
for(i=1;i<=3;i++)
{
sum[i]=student[i].sub_1+student[i].sub_2+student[i].sub_3;
all+=sum[i];
if((sum[i]>sum[i-1])&&i>=2)
{
big=i;
}
else
{
big=i-1;
}
}
average=all/9;
printf("三门课程总的平均成绩为%f",average);
printf("\n%s同学成绩最高,学号为%s,总成绩为%d",student[big].name,student[big].id,sum[big]);
fprintf(fp,"三门课总的平均分为%f",average);//此句为第6次增加部分
fclose(fp);
return 0;
}
//2. 在当前目录中存在文件名为"data1.in"的文本文件,要求使用fopen 函数命令打开该文件,读出里面的所有字符,遇到大写字母的,将其变为小写字母,其它字符不变,最后将所有字符按顺序在屏幕上输出。
int main2()
{
//先生成data1.in,并输入随机字符
FILE *fp;
fp=fopen("data1.in","w");
fprintf(fp,"Ssskjfds*¥@#SJ*JKSFSzsSJD");
if(fclose(fp)!=0)
printf("ERROR IN CLOSING FILE!");
//重新打开文件
char s[30];
int i;
fp=fopen("data1.in","r");
fgets(s,30,fp);//读入文件内的字符
for(i=0;i<30;i++)
//大小写转换并在屏幕上打印
{
if(s[i]>64&&s[i]<91)
s[i]=s[i]+32;
putchar(s[i]);
}
return 0;
}
//3.从键盘输入一个字符串,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件"test"中保存。输入的字符串以"!"结束。
void main()
{
char str[50];
int i=0;
FILE *fp;
fp=fopen("test","a+");
gets(str);
for(i=0;str[i]!='!';i++)
{
putc(str[i],stdout);
}
for(i=0;str[i]!='!';i++)
//大小写转换并输出到文件
{
if(str[i]>64&&str[i]<91)
{
str[i]=str[i]+32;
}
}
fputs(str,fp);
}
//4.有一磁盘文件“employee”,内存放职工的数据。每个职工的数据包括职工姓名、职工号、姓名、年龄、住址、工资、文化程度。今要求将职工名、工资的信息单独抽出来另建一个简明的职工工资文件。
void main()
{
FILE *fp;
fp=fopen("information.txt","r");
int i;
char str[18][20];//文件共有18行,存了3个人的信息,每个人信息有6条
for(i=0;i<18;i++)
//读取数据,并存放在二维数组中
{
fgets(str[i],20,fp);
}
//新建一个newinfo文件
fp=fopen("newinfo.txt","w");
for(i=0;i<18;i++)
//给新创建的文本文件输出值
{
if(i==0||i==4||i%6==0||(i+2)%6==0)
fputs(str[i],fp);
}
}
/*--------文件示例---------information.txt----------*/
/*
张三
001
25岁
陕西省西安市
10000
博士
李四
002
22岁
陕西省咸阳市
3500
大专
王麻子
003
30岁
陕西省宝鸡市
50000
本科
*/
/*---------生成文件示例------newinfo.txt--------------*/
/*
张三
10000
李四
3500
王麻子
50000
*/