:
error
C2018:
unknown
character
'0xa1'derror
C2006:
#include
expected
a
filename,
found
'identifier'd:\cvc.cpp(5)
:
error
C2065:
'cout'
:
undeclared
identifierd:\c\vc.cpp(5)
:
error
C2297:
'<<'
:
illegal,
right
operand
has
type
'char
[52]'d:
error
C2297:
'<<'
:
illegal,
right
operand
has
type
'char
error
C2146:
syntax
error
:
missing
''
before
identifier
'first_name'd分别把他们复制到百度里收索一下,然后看看翻译和别人的问题,然后把自己的程序分析一下,会不会有同样的问题,有的话就解决了…,我平时出错都是这么解决的。
c程序设计方法包括三个基本步骤:第一步二分析问题.
第二步画出程序的基本轮廓.
第三步:实现该程序.(1)编写程序(2)测试和调试程序(3)提供数据打印结果.
这个也不是很全,但是大体功能有了,你改进一下嘛,我运行过的可以!希望对你有所帮助!
#include <stdio.h>
#include <stdlib.h>
#define SIZE 10 /*定义常量SIZE便于以后的修改*/
struct student /*定义一个结构体数组存放学生的信息*/
{
int number/*学号*/
char name[20]/*名字*/
float score[3]/*分数*/
float average/*平均分*/
}stu[SIZE]
void menu()/*调用菜单函数*/
void write()/*读入信息*/
void save()/*保存stud.dat文件函数*/
void open()/*检查是否正确保存*/
void inturn (struct student c[])/*用于对学生的信息按平均分排序的函数*/
void save2()/*将排序后的信息存入studsort.dat文件中*/
void read()/*读取studsort.dat文件文件中第2 4 6 8 10个学生的信息*/
void main()
{
int choice/*用户选择变量*/
printf("*******************************************************************************\n")
printf("* *\n")
printf("* Hwadee&学生成绩文件管理& Hwadee *\n")
printf("* *\n")
printf("*******************************************************************************\n\n\n")
printf("******************************●●欢迎使用●●*********************************")
system("pause")
while (1)
{
menu()/*调用菜单函数形成 *** 作界面*/
printf("请选择:\t")
scanf("%d", &choice)
if ( choice == 0 )
{
system("cls")
printf("\n\n\t\t\t\t谢谢使用!!!\n\n\t\t\t\t\t\t\t\t指导老师: 梁凯\n\n\t\t\t\t\t\t\t\t 学生:万超\n")
break
}
switch(choice) /*多重选择实现功能不同的功能*/
{
case 1:
write()
break
case 2:
system("cls")
save()
break
case 3:
system("pause")
system("cls")
open()
break
case 4:
system("cls")
printf("排序前的学生信息:\n")
open()
inturn(stu)
save2()
break
case 5:
system("cls")
read()
break
default:
printf("\n无此项功能!\n请重新输入\n")
}
}
}
void menu()
{
printf("\n1*****输入学生信息\t\t2*****将信息存入文件stud.dat中\n")
printf("3*****检查文件数据\t\t4*****将学生信息排序并存入文件studsort.dat中\n")
printf("5*****读取文件studsort.dat中的第 2 4 6 8 10个学生的信息\n")
printf("0*****退出系统\n\n\n")
}
/**********************************************************************\
函数名称:
write
功能描述:
完成将学生信息写入
函数参数:
i stu
返回值:
无
模块历史:
\*********************************************************************/
void write()
{
int i/*计数变量*/
stu[i].average = 0/*初始化结构体成员 average*/
printf("请你输入学生的信息\n")
printf("学号\t姓名\t语文\t数学\t英语\t\n")
for (i=0i<SIZEi++)
{
scanf("%d\t",&stu[i].number)
if (stu[i].number == 0)/*不需输入信息时输入0即可*/
break
scanf("%s\t%f\t%f\t%f",&stu[i].name, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2])
stu[i].average = (stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3/*计算平均成绩*/
}
}
/**********************************************************************\
函数名称:
save
功能描述:
将写入的信息读入文件中
函数参数:
FILE *fp i
返回值:
无
模块历史:
\*********************************************************************/
void save()
{
FILE *fp/*定义文件指针用于向文件读入数据*/
int i
if ((fp=fopen("stud.dat","wb")) == NULL)
{
printf("cannot open file\n")
return
}
for (i=0i<SIZEi++)
if (fwrite(&stu[i],sizeof(struct student),1,fp) != 1)
printf("file write error\n")
fclose(fp)
printf("\n信息保存成功!恭喜!!\n\n")
}
/**********************************************************************\
函数名称:
open
功能描述:
用于检查读入文件的数据是否正确
函数参数:
FILE *cp i
返回值:
无
模块历史:
\*********************************************************************/
void open()
{
int i
FILE *cp
cp = fopen ("stud.dat","rb")
printf("保存在stud.dat文件中的信息:\n\n")
printf("学号\t姓名\t数学\t语文\t英语\t平均分\n\n")
for (i=0i<SIZEi++)
{
fread(&stu[i],sizeof(struct student),1,cp)
printf("%d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n\n\n",stu[i].number, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].average )
}
fclose (cp)
}
/**********************************************************************\
函数名称:
inturn
功能描述:
用于对结构体数组中的元素排序
函数参数:
into i,j,k
struct student temp
返回值:
无
模块历史:
\*********************************************************************/
void inturn(struct student m[])
{
int i,j,k/*计数变量*/
struct student temp/*中间变量 类型为结构体*/
for(i=0i<SIZE-1i++) /*运用冒泡排序对结构体数组进行排序*/
for (j=i+1j<SIZEj++)
{
if( m[i].average <m[j].average )
{
temp = m[i]
m[i] = m[j]
m[j] = temp
}
}
printf("\n排序后的学生信息:\n\n")
printf(" 学号\t姓名\t数学\t语文\t英语\t平均分\n")
for (i=0i<SIZEi++)
{
printf("第%d名 %d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n\n\n",i+1, stu[i].number, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].average )
}/*输出排序后的学生信息*/
}
/**********************************************************************\
函数名称:
save2
功能描述:
将排序后的学生信息读入到另外的文件中
函数参数:
FILE *mp
i
返回值:
无
模块历史:
\*********************************************************************/
void save2()
{
FILE *mp
int i
if ((mp=fopen("studsort.dat","wb"))==NULL)
{
printf("cannot open file\n")
return
}
for (i=0i<SIZEi++)
if (fwrite(&stu[i], sizeof(struct student), 1, mp) != 1)
printf("file write error\n")
fclose(mp)/*读取完毕关闭文件*/
}
/**********************************************************************\
函数名称:
read
功能描述:
读出另外文件中的信息
函数参数:
FILE *tp
i
返回值:
无
模块历史:
\*********************************************************************/
void read()
{
int i=1
FILE *tp
tp = fopen ("studsort.dat", "rb" )
printf("studsort.dat文件中偶数号码学生的信息如下:\n\n")
printf("学号\t姓名\t数学\t语文\t英语\t平均分\n\n")
for (i = 1i<SIZEi += 2)
{
fseek(tp,i*sizeof(struct student),0)/*fseek函数可以根据用户所需对文件开头的偏移量来读取文件的数据。
k*sizeof(struct student)是指将位置指针移到当前位置k个字节处*/
fread(&stu[i],sizeof(struct student),1,tp)
/*注意:必须使用fseek函数定位后才能根据自己所需读出数据,但是只用fseek函数不用fread,
只是把数据打印到屏幕上而并没有从文件中读取。这是一个常见性问题*/
printf("%d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n", stu[i].number, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].average )
}
fclose (tp)/*读取完毕关闭文件*/
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)