用c语言编写从文件读入一个班学生三门课(语文、数学、外语)的成绩,用指针实现如下功能:
#include
double a[11][5]={0};
int i,j;
void scanfa(double b[11][5])
{
printf("请依次输入每位同学的语文、数学、英语的成绩:
");
for(i=0;i<10;i++)
for(j=0;j<3;j++)
scanf("%lf",&b[i][j]);
}
void SumAvgStu(double b[11][5])//计算输出每个同学的总分和三门课程的平均分
{
for(i=0;i<10;i++)
for(j=0;j<3;j++)
b[i][3]+=b[i][j];
for(i=0;i<10;i++)
b[i][4]=b[i][3]/3;
for(i=0;i<10;i++)
printf("%.2lf %.2lf
",b[i][3],b[i][4]);
}
void AvgSub(double b[10][5])//计算输出每门课程的平均分
{
for(j=0;j<3;j++)
for(i=0;i<10;i++)
b[10][j]+=b[i][j];
for(i=10,j=0;j<3;j++)
printf("%.2lf ",b[i][j]/10);
printf("
");
}
int main()
{
scanfa(a);
SumAvgStu(a);
AvgSub(a);
return 0;
}
#include
double a[11][5]={0};
int i,j;
void scanfa(double b[11][5])
{
printf("请依次输入每位同学的语文、数学、英语的成绩:
");
for(i=0;i<10;i++)
for(j=0;j<3;j++)
scanf("%lf",&b[i][j]);
}
void SumAvgStu(double b[11][5])//计算输出每个同学的总分和三门课程的平均分
{
for(i=0;i<10;i++)
for(j=0;j<3;j++)
b[i][3]+=b[i][j];
for(i=0;i<10;i++)
b[i][4]=b[i][3]/3;
for(i=0;i<10;i++)
printf("%.2lf %.2lf
",b[i][3],b[i][4]);
}
void AvgSub(double b[10][5])//计算输出每门课程的平均分
{
for(j=0;j<3;j++)
for(i=0;i<10;i++)
b[10][j]+=b[i][j];
for(i=10,j=0;j<3;j++)
printf("%.2lf ",b[i][j]/10);
printf("
");
}
int main()
{
scanfa(a);
SumAvgStu(a);
AvgSub(a);
return 0;
}
#include <stdio.h>
#include <io.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 200
struct student
{
char no[10]; // 学号
char name[50]; // 姓名
float score[3]; // 分数
float math;
float eng;
float phy;
};
struct data
{
int count; // 当前学生数组中学生的个数
struct student stu[MAX]; // 学生数组
}dd;
// 显示主菜单
void menu()
{
system("cls");//清屏
printf("
");
printf(" *******************************
");
printf("
");
printf(" 学生成绩管理系统
");
printf("
");
printf(" [1] 查看所有学生信息
");
printf(" [2] 输入学生记录
");
printf(" [3] 删除学生记录
");
printf(" [4] 修改学生记录
");
printf(" [5] 查询学生成绩(学号)
");
printf(" [6] 查询成学生绩(姓名)
");
printf(" [7] 查看成绩排序(学号)
");
printf(" [0] 退出
");
printf("
");
}
// 等待用户按回车后回到主菜单
void to_menu()
{
char c1,c2;
printf("
按回车键返回主菜单...");
scanf("%c%c",&c1,&c2);//第一个字符吸收上次的确认回车键
menu();
}
//统计信息
void ren()
{
int A=0,B=0,C=0,D=0,E=0,s;
int i;
for(i=0;i<dd.count;i++)
{
s=(int)(dd.stu[i].math/10);
switch(s)
{
case 10:
case 9:
A++;
break;
case 8:
B++;
break;
case 7:
C++;
break;
case 6:
D++;
break;
default :
E++;
break;
}
}
printf("总人数:%d
",dd.count);
printf("获得“优秀”的人数:%d
",A);
printf("获得“良”的人数:%d
",B);
printf("获得“中”的人数:%d
",C);
printf("获得“及格”的人数:%d
",D);
printf("不及格的人数:%d
",E);
}
// 查看所有学生信息
void view_data()
{
int i;
printf("学号姓名数学英语物理");
printf("
-------------------------------------------------------------------
");
for(i=0;i<dd.count;i++)
printf("%s%s%-7.1f%-7.1f%-7.1f
",dd.stu[i].no,dd.stu[i].name,dd.stu[i].math,dd.stu[i].eng,dd.stu[i].phy);
printf("
-------------------------------------------------------------------
");
ren();
}
// 将数据从结构体数组保存到文件中
void save_data()
{
FILE *fp;//文件指针
int i,k;
k = dd.count; //其实k没有什么实际的意义,直接在fwrite里使用&dd.count就可以了。
fp=fopen("D:\\data.txt","w");//文件存储位置:当前文件夹
fwrite(&k,sizeof(int),1,fp);
for(i=0;i<dd.count;i++)
fwrite(&dd.stu[i],sizeof(struct student),1,fp);
fclose(fp);
}
// 输入学生记录
void add_data()
{
int b;
int k = dd.count;
while(k<MAX)
{
printf("请输入学生学号:"); scanf("%s",dd.stu[k].no);
printf("请输入学生姓名:"); scanf("%s",dd.stu[k].name);
printf("请输入数学成绩:"); scanf("%f",&dd.stu[k].math);
printf("请输入英语成绩:"); scanf("%f",&dd.stu[k].eng);
printf("请输入物理成绩:"); scanf("%f",&dd.stu[k].phy);
dd.count++; //需要提前置0,在主函数中。
k = dd.count;
printf("
继续添加学生信息[1-yes 0-no]:");
scanf("%d",&b);
if(b==0) break;
}
save_data();
}
// 将数据从文件读到结构体数组中
void read_data()
{
FILE *fp;
int i,k;
k=0;
if((fp=fopen("D:\\data.txt","r"))==NULL) // 如果文件不存在
{
dd.count = 0;
}
else
{
fread(&k,sizeof(int),1,fp);
dd.count = k;
for(i=0;i<k;i++)
{
fread(&dd.stu[i],sizeof(struct student),1,fp);
}
fclose(fp);
}
}
// 删除学生记录
void delete_data()
{
int i,k;
char no[10];
printf("
请输入要删除学生的学号:");
scanf("%s",no);
k = -1;
for(i=0;i<dd.count;i++)
{
if(strcmp(dd.stu[i].no,no)==0)
{
k = i;
break;
}
}
if(k==-1)
{
printf("
没有找到该学生(学号-%s)!",no);
}
else
{
//你没有写删除的操作啊
for(i=k; i<dd.count-1; i++) //将后面的数据前移一位
dd.stu[i] = dd.stu[i+1];
memset(&dd.stu[dd.count-1],0,sizeof(struct student)); //将dd.stu[dd.count-1]数据置0
dd.count--;
save_data();
printf("
删除学生(学号-%s)记录成功!",no);
}
}
// 修改学生记录
void edit_data()
{
int i,k;
char no[10],name[50];
printf("
请输入要修改学生的学号:");
scanf("%s",no);
k=-1;
for(i=0;i<dd.count;i++)
{
if(strcmp(dd.stu[i].no,no)==0)
{
k=i;
break;
}
}
if(k==-1)
{
printf("
没有找到该学生(学号-%s)!",no);
}
else
{
printf("
请输入学生数据:");
printf("
姓名");
printf("
--------------------------------------------------------------------
");
scanf("%s",name);
strcpy(dd.stu[k].name,name);
save_data();
printf("
修改学生记录(学号-%s)成功!",no);
}
}
// 查询学生成绩(学号)
void query_data_no()
{
int i,k;
char no[10];
printf("
请输入要查询学生的学号:");
scanf("%s",no);
k=-1;
for(i=0;i<dd.count;i++)
{
if(strcmp(dd.stu[i].no,no)==0)
{
printf("
学号姓名数学英语物理");
printf("
-----------------------------------------------------------------
");
k=i;
printf("%s%s%-7.1f%-7.1f%-7.1f
",dd.stu[i].no,dd.stu[i].name,dd.stu[i].math,dd.stu[i].eng,dd.stu[i].phy);
break; // 学号应该是唯一的,找到了一个就代表以后的没有了。
}
}
if(k==-1)
{
printf("
没有找到该学生(学号-%s)!",no);
}
}
// 查询学生成绩(姓名)
void query_data_name()
{
int i,k;
char name[10];
printf("
请输入要查询学生的姓名:");
scanf("%s",name);
k=-1;
for(i=0;i<dd.count;i++)
{
if(strcmp(dd.stu[i].name,name)==0)
{
printf("
学号姓名数学英语物理");
printf("
-----------------------------------------------------------------
");
k=i;
printf("%s%s%-7.1f%-7.1f%-7.1f
",dd.stu[i].no,dd.stu[i].name,dd.stu[i].math,dd.stu[i].eng,dd.stu[i].phy);
break;
}
}
if(k==-1)
{
printf("
没有找到该学生(姓名-%s)!",name);
}
}
// 排序(学号)
void sort_data_no(struct data Buff)
{
int i;
int j;
int k;
int h;
struct student temp;
FILE *fp;
if((fp=fopen("D:\\data.txt","w+"))==NULL)
{
printf("cannot open file!
");
exit(0);
}
printf("请输入要查询的科目:1-数学,2-英语,3-物理:");
scanf("%d",&k);
switch(k)
{
case 1:
for(i=0; i<Buff.count-1; i++)
for(j=i+1; j<Buff.count; j++)
if(Buff.stu[i].math > Buff.stu[j].math)
{
temp=Buff.stu[i];
Buff.stu[i]=Buff.stu[j];
Buff.stu[j]=temp;
}
printf("名次学号 姓名数学
");
for(i=0; i<Buff.count; i++)
printf("%d%s%s%-7.1f
",i+1,Buff.stu[i].no,Buff.stu[i].name,Buff.stu[i].math);
break;
case 2:
for(i=0; i<Buff.count-1; i++)
for(j=i+1; j<Buff.count; j++)
if(Buff.stu[i].eng > Buff.stu[j].eng)
{
temp=Buff.stu[i];
Buff.stu[i]=Buff.stu[j];
Buff.stu[j]=temp;
}
printf("名次学号 姓名英语
");
for(i=0; i<Buff.count; i++)
printf("%d%s%s%-7.1f
",i+1,Buff.stu[i].no,Buff.stu[i].name,Buff.stu[i].eng);
break;
case 3:
for(i=0; i<Buff.count-1; i++)
for(j=i+1; j<Buff.count; j++)
if(Buff.stu[i].phy > Buff.stu[j].phy)
{
temp=Buff.stu[i];
Buff.stu[i]=Buff.stu[j];
Buff.stu[j]=temp;
}
printf("名次学号 姓名物理
");
for(i=0; i<Buff.count; i++)
printf("%d%s%s%-7.1f
",i+1,Buff.stu[i].no,Buff.stu[i].name,Buff.stu[i].phy);
break;
default :
printf("输入错误!");
exit(0);
}
printf("请按任意键继续....");
getch();
fclose(fp);
}
// 主函数
void main()
{
int fun;
dd.count = 0;
read_data();
menu();
while(1)
{
printf("请输入功能号[0-7]:");//这里不需要什么&fun,
scanf("%d",&fun);
switch(fun)
{
case 1: view_data();break; // 查看所有学生信息
case 2: add_data(); break; // 输入学生记录
case 3: delete_data();break; // 删除学生记录
case 4: edit_data();break; // 修改学生记录
case 5: query_data_no();break; // 查询学生成绩(学号)
case 6: query_data_name();break; // 查询成学生绩(姓名)
case 7: sort_data_no(dd); break; // 查看成绩排序(学号) //直接将结构体dd发送过去就可以了
case 0: break; // 退出
}
if(fun==0) break;
to_menu();
}
return;
}
发到你邮箱了。
用c语言编写从文件读入一个班学生三门课(语文、数学、外语)的成绩,用...
include <stdio.h>#include <io.h>#include <conio.h>#include <stdlib.h>#include <string.h>#define MAX 200struct student{char no[10]; \/\/ 学号char name[50]; \/\/ 姓名float score[3]; \/\/ 分数float math;float eng;float phy;};struct data{int count; \/\/ 当前学生数组中...
c语言怎么从文件其中一行中读取一一读取每个单词?
include<stdio.h> include<string.h> int main(){ char b[40][14]={'\\0'},a[111]={'\\0'};int k=0,j=0;gets(a);for(int i=0;i<strlen(a);i++){ if(a[i]!=' ');\/\/不为空格就向二维数组中存储;b[k][j++]=a[i];if(a[i]==' '){ k++;\/\/k++行数加1,换行...
C语言程序设计 从文件中读取学生成绩按要求处理后按文件输出
\/\/abcd为四级变量fq=fopen("stu2.txt","w");\/\/创建一个写文件stu2.txt\/\/打开读文件stu1.txt并判断读写文件是否打开成功if(!fq || (fp=fopen("stu1.txt","r"))==NULL){printf("Open the file failure, exit...\\n");\/\/不成功则提示并退出return 0;}\/\/检测一下文件中存储了多少个...
C语言如何把文本从文件读入到数组中?
include<stdio.h> include<string.h> define M 100\/\/最大行数 int main(){ FILE *fp=NULL;int nums[M],age[M],i=0,n1,n2,len=0;char name[M][10],str[10];fp=fopen("c:\\\\test.data","r");while(fscanf(fp,"%d%s%d",&n1,str,&n2)!=-1){ nums[i]=n1;strcpy(name[i]...
怎样用C语言从txt文件中读入数据?
1 以fopen打开文件,使用"r"方式。2 通过fscanf,按照文件中的数据格式,读入数据。3 关闭文件并使用数据。如文件in.txt中存在三个以空格分隔的数据,依次为整型,字符串,以及浮点型,则读取数据的代码可以写作:int main(){ FILE *fp; int a; char s[100]; float f; fp = f...
c语言 怎么读文件中的汉字
字符读写函数fgetc和fputc 字符读写函数是以字符(字节)为单位的读写函数。 每次可从文件读出或向文件写入一个字符。1) 读字符函数fgetc fgetc函数的功能是从指定的文件中读一个字符,函数调用的形式为:字符变量=fgetc(文件指针);例如:ch=fgetc(fp);其意义是从打开的文件fp中读取一个字符并送入ch...
C语言问题 怎样从一个文件中逐个读入字符(每次读入一个)
charstr[1024];inti=0;while((str[i]=getchar())!='\\n')i++;getchar();
C语言怎么从TXT文件中读入数据?
fscanf(fp,"%d",&a[j][i]); \/*读一个数据*\/ \/* 关闭文件 *\/ fclose(fp);\/*显示运行结果*\/ for(j=0;j<4;j++) \/*假定有j行*\/ {for(i=0;i<4;i++)printf("%4d",a[j][i]);printf("\\n");} return 0;} 以上演示了文本文件的读写操作,供你参考.在读写文件时,文件...
编写c语言程序,从文件中读取数据顺序存储到单链表l中,文件中数据之间用...
在c语言中,创建单链表需要使用到malloc函数动态申请内存;文件的读写需要首先使用fopen函数打开文件,然后使用fscanf,fgetc, fgets,fprintf,fputc,fputs等函数读写函数,最后读写完毕要使用fclose函数关闭函数。下面的源程序展示了关于单链表如何从文件中读取数据和往文件里存入数据。include<stdio.h> inclu...
用C语言编写“读取一个给定的文本文件,并将文件的内容显示在屏幕上...
则输出can not open else{ \/\/读取字符:fscanf(fp,"%c",&ch),ch=fgetc(fp); fscanf(fp,"%c",&ch); \/\/读取字符 while(!feof(fp)){ \/\/feof()这个函数是用来判断指针是否已经到达文件尾部 putchar(ch); \/\/输出 fscanf(fp,"%c",&ch);...
翠彩硫酸: #include<stdio.h> #define N 3 struct student { char name[20]; int num,age,sex; } stu[N]; void main() { FILE *fp; int i; struct student a[N]; char s[2][3]={"女","男"};printf("请顺序输入:学号 姓名 年龄 性别(用空格分隔,性别用0代表女生...
元宝山区13350004427: 用C语言编写一个程序,将输入的学生信息从文件中读出,并按学号进行排序后输出显示. - ?
翠彩硫酸: #include #define STUCOUNT 5 typedef struct STU_INFO { char stuNo[7]; char stuName[11]; } STU_INFO; int main(int argc, char *argv[]) { FILE *in; STU_INFO info[STUCOUNT-1]; //STUCOUNT个学生 char *filePath = "C:/stu.dat"; if ((in = fopen(...
元宝山区13350004427: 用C语言编写一个通过键盘或文件输入学生信息,并将学生信息输出到文件和屏幕的程序 - ?
翠彩硫酸: #include "stdafx.h" #include "stdio.h" int i;struct student {char name[20]; //姓名float score[4]; //四门功课的成绩float average; //四门功课的平均成绩int order; //根据平均成绩的排序名次 };void inputFromKeyboard(struct student stu[]...
元宝山区13350004427: 用C语言如何从一个文本文件中读入姓名信息 - ?
翠彩硫酸: 第一,包含的头文件:#include <stdio.h>第二,打开文本文件:FILE *file = fopen("c:\\1.txt","r"); 其中, 第二个参数表示打开方式, "a" 表示追加方式打开, "r" 表示以读方式打开, "w" 表示以写方式打开,第三,读入文本文件...
元宝山区13350004427: C语言 c++ 编写程序,将你的学号,姓名,班级分3行写入一个文件. - ?
翠彩硫酸: FILE* fp = fopen(path, mode); fprintf( fp, "%d\n%s\n%s\n",iNum, szName, szClass ); fclose(fp);不考虑各种异常处理,核心代码就这三行.变量该声明的声明,该定义的定义,塞到main里,完活.如果C++也要这么写,用ios是开玩笑. 话说别人上课时你在撩妹还是LOL?
元宝山区13350004427: c语言编写: 建立一个文件,向其中写入一组学生姓名和成绩,然后从文件中读出成绩大于80分的学生信 - ?
翠彩硫酸: 先建立文件,再写入学生记录.用rewind()函数定位于文件开头,用fread()函数从文件中读出一个人的记录,然后判定成绩是否大于80 若是则输入. 在读记录之前,要用fseek()函数定位正确的位置上
元宝山区13350004427: 用C语言编写 文件读写 - ?
翠彩硫酸: 第一种:#include <stdio.h>#include <string.h>#include <stdlib.h> struct student //结构体 { char name[20]; //姓名 int english; //英语 int math; //数学int program; //程序设计 }s[50]; void daoru(struct student s[], int* n) //文件导入函数 { FILE *p; ...
元宝山区13350004427: 一个文件的读取怎么用c语言写,就是写文件和读文件,还有如何把学生按成绩排序,谢谢了,拜托了 - ?
翠彩硫酸: #include "stdio.h"#include "alloc.h"#include "string.h"#define STU struct student STU /*每条记录数据类型*/ { int num; char name[20]; int math; int english; int computer; int total; }; void sort(STU *st,int n) /*排序函数*/ { int i,j; STU t; for(i=0;i<n-1...
元宝山区13350004427: C语言 学生成绩系统 怎么实现文件的读入和输出呢?? 请大神指教!!!!!初学者......?
翠彩硫酸: #define SIZE 20 struct student { char name[10]; int num; int age; char addr[15]; }stud[SIZE]; void save() { FILE *fp; int i; if((fp=fopen("stud.txt","wt"))==NULL) { printf("cannot open file\n"); return; } for(i=0;i<SIZE;i++) fprintf(fp,"%s %d %d %s\...