#include "stdio.h"
#include "stdlib.h"
#include "string.h"
typedef struct course
{
char number[15],name[25]
int kind,time,lessontime,practicetime,credit,term
}type
FILE *fp1
void overview()//浏览函数,负责浏览整个课程信息
void seek() //查询函数,负责查询课程信息
void choose_course()//选课函数,负责让用户选课
void out(type temp)
void input()
int main()
{
int n,i
if((fp1=fopen("course_information.txt","wb"))==NULL)
{printf("创建文件失败!\n")exit(0)}
printf("请输入要存储的课程数目:\n")
scanf("%d",&n)
printf("开始创建文件,请输入课程信息:\n\n")
for(i=0i<ni++)
{
printf("请输入第%d门课程的信息:\n",i+1)
input()
printf("\n")
}
printf("如想浏览整个课程信息,请输入1;如想查询课程信息,请输入2; 如想进行选课,请输入3;如想结束选修课系统,请输入0!\n")
while((scanf("%d",&n))!=EOF)
{
if(n==1)
overview()
if(n==2)
seek()
if(n==3)
choose_course()
if(n==0)
exit(0)
printf("\n\n如想继续操作,只要按规则输入你要进行的操作即可!\n规则:如想浏览整个课程信息,请输入1;如想查询课程信息,请输入2;如想进行选课,请输入3!\n")
}
printf("欢迎您使用此程序进行选课,谢谢!\n")
fclose(fp1)
return 0
}
void input()
{
course c_a
printf("请输入课程编码: ")
scanf("%s",c_a.number)
printf("请输入课程名: ")
scanf("%s",c_a.name)
printf("请输入课程性质:限选课,请输入1;选修课,请输入2;必修课,请输入3! ")
scanf("%d",&c_a.name)
printf("请输入课程总学时: ")
scanf("%d",&c_a.time)
printf("请输入课程授课时间: ")
scanf("%d",&c_a.lessontime)
printf("请输入课程实验或实践时间: ")
scanf("%d",&c_a.practicetime)
printf("请输入课程学分: ")
scanf("%d",&c_a.credit)
printf("请输入课程所在的学期,比如第二学期,就输入2即可。")
scanf("%d",&c_a.term)
fwrite(&c_a,sizeof(struct course),1,fp1)//将一个结构体元素写入文件中
}
void out(type temp)
{
printf("课程代码: %s\n课程名: %s\n",temp.number,temp.name)
printf("课程名: %s\n",temp.name)
if(temp.kind==1)
printf("课程性质: Limited optional course\n")
else if(temp.kind==2)
printf("课程性质: Optional course\n")
else if(temp.kind==3)
printf("课程性质: Required Courses\n")
else
printf("该编码系统不认识,即无对应的课程性质存在!\n")
printf("课程总学时: %d\n课程授课学时: %d\n实验或上机学时: %d\n学分: %d\n课程开课学期: %d\n\n",temp.time,temp.lessontime,temp.practicetime,temp.credit,temp.term)
}
void overview()
{
rewind(fp1)
course temp
printf("整个课程信息如下:\n")
while((fread(&temp,sizeof(type),1,fp1))!=0)
out(temp)
}
void seek()
{
int judge,credit=0,kind=0
char a='N'
course temp
printf("如想按学分查询,请输入1;如想按课程性质,请输入2:\n")
scanf("%d",&judge)
rewind(fp1)//将文件指针位置置为开头
if(judge==1)
{
printf("请输入要查询的学分:\n")
scanf("%d",&credit)
while((fread(&temp,sizeof(type),1,fp1))!=0)
if(credit==temp.credit)
out(temp)
}
else if(judge==2)
{
printf("请输入你要查找课程的性质(限选课,请输入1;选修课,请输入2;必修课,请输入3):")
scanf("%d",&kind)
while((fread(&temp,sizeof(type),1,fp1))!=0)
if(temp.kind==kind)
out(temp)
}
else
printf("不好意思,无此类查询!\n")
}
void choose_course()
{
rewind(fp1)
course temp
int judge=1,n=0,time=0,credit=0
char choose[20][20]
r1: printf("请开始填写课程编号进行选课:\n")
while(judge==1)
{
printf("请输入你所选课程的标号: ")
scanf("%s",choose[n])
n++
printf("如想继续选课,请输入1;如想提交,请输入0!\n")
scanf("%d",&judge)
}
while((fread(&temp,sizeof(type),1,fp1))!=0)
{
for(int i=0i<ni++)
if(strcmp(temp.number,choose[i])==0)
{time=time+temp.timecredit=temp.creditbreak}
}
if(time<270||credit<40)
goto r1
printf("你所选的课为:\n")
while((fread(&temp,sizeof(type),1,fp1))!=0)
{
for(int i=0i<ni++)
if(strcmp(temp.number,choose[i])==0)
{out(temp)break}
}
}
设水渠x米,原计划修y天x/y是每天计划修多少
x/y + 8 = x/(y-4) 1
x/y - 8 = x/(y+8) 2
解得:由1式 8y2 - 32y = 4x
由2式 8y2 + 64y = 8x
x=24y 代入1中
y=16 x=384
解:由题意得,甲的工效为1/20,乙的工效为1/30,甲乙的合作工效为1/20*4/5+1/30*9/10=7/100,可知甲乙合作工效>甲的工效>乙的工效。又因为,要求“两队合作的天数尽可能少”,所以应该让做的快的甲多做,16天内实在来不及的才应该让甲乙合作完成。只有这样才能“两队合作的天数尽可能少”。
设合作时间为x天,则甲独做时间为(16-x)天
1/20*(16-x)+7/100*x=1
x=10
答:甲乙最短合作10天