呵呵,就完了,晚上就给你答案哈,你多等等~~~

恩,完工了,你看看吧:

//注:本程序因涉及到引用即“&”,所以得保存为。cpp的后缀名再用c 编译器进行编译

#include

#include

#include

#include

#include //用来得到当前时间

typedef struct student

{

char stuNumber[20];

char classNumber[20];

double score[10];

struct student *next;

}stuNode,*stuList;

void cre_node(stuList &L)//createNode,创建节点

{

int i;

L=(stuList)malloc(sizeof(stuNode));

L->next=NULL;

for(i=0;iscore[i]=0;

}

void add_node(stuList &L,char stuNumber[],char classNumber[],stuList &p)//增加节点

{

stuList q,prior;

prior=L;

p=L->next;

while(p && strcmp(classNumber,p->classNumber))

{

prior=p;

p=p->next;

}

while(p && !strcmp(classNumber,p->classNumber))

{

prior=p;

p=p->next;

}

cre_node(q);

strcpy(q->stuNumber,stuNumber);

strcpy(q->classNumber,classNumber);

q->next=prior->next;

prior->next=q;

p=q;

}

int check_list(stuList L,char stuNumber[])

{

stuList p=L->next;

while(p && strcmp(stuNumber,p->stuNumber))

p=p->next;

if(p)

{

puts("学号不能重复,请重新输入:");

return 0;

}

return 1;

}

void cre_cla_info(stuList &L)//create class infomation

{

int i=0,j=0;

char classNumber[20],stuNumber[20];

stuList p;

puts("开始创建班级信息(输入0结束):");

while(1)

{

printf("

请输入第%d个班级班号:

",i 1);

fflush(stdin);

gets(classNumber);

if( !strcmp(classNumber,"0"))

break;

printf("开始创建%s班的学生信息(输入0结束):

",classNumber);

j=0;

while(1)

{

printf("请输入第%d个学生学号:

",j 1);

fflush(stdin);

while(1)

{

gets(stuNumber);

if(check_list(L,stuNumber))

break;

}

if( !strcmp(stuNumber,"0"))

break;

add_node(L,stuNumber,classNumber,p);

j ;

}

i ;

}

p=L->next;

system("cls");

puts("班级信息为:");

while(p)

{

strcpy(classNumber,p->classNumber);

printf("%s班:

",classNumber);

while(p && !strcmp(p->classNumber,classNumber))

{

puts(p->stuNumber);

p=p->next;

}

}

puts("

按任意一个键继续:");

getch();

}

int get_stu_info(stuList &L,char stuNumber[],stuList &p)//get student infomation

{

char ch,classNumber[20];

p=L->next;

while(p && strcmp(stuNumber,p->stuNumber))

p=p->next;

if( !p)

{

puts("无该学生记录,你要增加该学生记录吗?(是则输入Y或y,不是输入则输入其他字符):");

scanf(" %c",&ch);

if(ch=='Y' || ch=='y')

{

puts("输入该学生所在班级班号:");

fflush(stdin);

gets(classNumber);

add_node(L,stuNumber,classNumber,p);

return 2;

}

else

return 0;

}

return 1;

}

void print_cla_info(stuList &L,char classNumber[])

{

double average;

int i=0,flag=0;

char ch,stuNumber[20];

stuList p=L->next;

while(p)

{

if( !strcmp(p->classNumber,classNumber))

{

flag=1;

printf("学生%s作业完成情况为:

",p->stuNumber);

average=0;

for(i=0;iscore[i];

printf("第%d次:%g

",i 1,p->score[i]);

}

average/=10;

printf("

该学生期末成绩为: %g

",average);

}

p=p->next;

}

if( !flag)

{

puts("无该班级信息,要创建一个吗?是输入Y或y,不是则输入其他字符:");

scanf(" %c",&ch);

if(ch=='Y' || ch=='y')

{

puts("输入该班学生学号,输入0结束:");

i=1;

while(1)

{

printf("请输入第%d个学生学号:

",i );

while(1)

{

fflush(stdin);

gets(stuNumber);

if(check_list(L,stuNumber))

break;

}

if( !strcmp(stuNumber,"0"))

break;

add_node(L,stuNumber,classNumber,p);

}

}

}

puts("

按任意一个键继续:");

getch();

}

void print(void)

{

puts("请选择一个操作进行(输入一个数字):

");

puts("(1)录入某位学生某次作业的分数:

");

puts("(2)给定学号,显示某位学生的作业完成情况:

");

puts("(3)给定某个班级的班号,显示该班学生所有学生的作业完成情况:

");

puts("(4)给定某位学生的学号,修改该学生的作业完成情况:

");

puts("(5)给定某位学生的学号,删除该学生的作业完成情况:

");

puts("(6)提供一些统计各类信息的功能:

");

puts("输入其他数字退出:

");

}

void count(stuList L)

{

time_t cur_time;//time_t在time。

h头文件中被定义为long型

double average,m;

int n,i,flag1,flag2,sum1,sum2;

stuList p;

char classNumber[20];

cur_time=time(NULL);//得到当前系统时间

FILE *fp;

fp=fopen("d:\统计。

txt","a ");

fputs("

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

",fp);

fputs("时间格式:星期,月,日,小时:分:秒,年

存档时间:",fp);

fputs(ctime(&cur_time),fp);

while(1)

{

system("cls");

puts("统计查询:");

puts("如若显示内容超过窗口所容,你可以到d:\统计。

txt文本中查看:

");

puts("请选择一个操作进行(输入一个数字):

");

puts("(1)显示全部班级学生作业完成情况,并显示总人数:

");

puts("(2)显示所有满足某次作业分数不大于m的学生,并显示学生人数(m值由你输入,且范围为0~100):

");

puts("(3)显示所有满足某次作业分数不小于m的学生,并显示学生人数(m说明同上)::

");

puts("(4)显示满足第i次作业分数不大于m的学生,并显示人数(i范围1~10,m范围0~100):

");

puts("(5)显示满足第i次作业分数不小于m的学生,并显示人数(i范围1~10,m范围0~100):

");

puts("输入其他数字返回:

");

scanf("%d",&n);

if(n5)

break;

p=L->next;

if(n==1)

{

system("cls");

while(p)

{

sum1=0;

strcpy(classNumber,p->classNumber);

printf("

%s班所有学生作业完成情况为:

",classNumber);

fprintf(fp,"

%s班所有学生作业完成情况为:

",classNumber);

while( p && !strcmp(classNumber,p->classNumber))

{

average=0;

printf("

学生%s:

",p->stuNumber);

fprintf(fp,"学生%s:

",p->stuNumber);

for(i=0;iscore[i];

printf("第%d次作业分数:%g

",i 1,p->score[i]);

fprintf(fp,"第%d次作业分数:%g

",i 1,p->score[i]);

}

average/=10;

printf("该学生期末成绩为: %g

",average);

fprintf(fp,"该学生期末成绩为: %g

",average);

p=p->next;

sum1 ;

}

printf("

~%s班总人数为: %d~

",classNumber,sum1);

fprintf(fp,"

~%s班总人数为: %d~

",classNumber,sum1);

puts("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");

fputs("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",fp);

}

puts("

按任意一个键继续:");

getch();

}

else if(n==2 || n==3)

{

system("cls");

puts("请输入m值(0~100):");

fputs("

请输入m值(0~100):",fp);

while(1)

{

scanf("%lf",&m);

fprintf(fp,"%g

",m);

if(m100)

{

puts("输入有误,请重新输入:");

fputs("输入有误,请重新输入:",fp);

continue;

}

break;

}

if(n==2)

{

printf("所有满足某次作业分数不大于%g的学生为:

",m);

fprintf(fp,"所有满足某次作业分数不大于%g的学生为:

",m);

}

else

{

printf("所有满足某次作业分数不小于%g的学生为:

",m);

fprintf(fp,"所有满足某次作业分数不小于%g的学生为:

",m);

}

sum2=0;

while(p)

{

strcpy(classNumber,p->classNumber);

printf("

%s班:

",classNumber);

fprintf(fp,"

%s班:

",classNumber);

flag1=0;

sum1=0;

while( p && !strcmp(classNumber,p->classNumber))

{

flag2=0;

for(i=0;iscore[i] stuNumber);

fprintf(fp,"学生%s:

",p->stuNumber);

}

printf("第%d次作业分数: %g

",i 1,p->score[i]);

fprintf(fp,"第%d次作业分数: %g

",i 1,p->score[i]);

}

else if(n==3 && p->score[i] >= m)

{

flag1 ;

flag2 ;

if(flag2==1)

{

sum1 ;

printf("

学生%s:

",p->stuNumber);

fprintf(fp,"学生%s:

",p->stuNumber);

}

printf("第%d次作业分数: %g

",i 1,p->score[i]);

fprintf(fp,"第%d次作业分数: %g

",i 1,p->score[i]);

}

p=p->next;

}

if( !flag1)

{

printf("NULL:

");

fprintf(fp,"%NULL:

");

}

printf("

%s班满足条件人数为:%d

",classNumber,sum1);

fprintf(fp,"

%s班满足条件人数为:%d

",classNumber,sum1);

puts("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");

fputs("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",fp);

sum2 =sum1;

}

printf("

一共满足条件人数为:%d

",sum2);

fprintf(fp,"

一共班满足条件人数为:%d

",sum2);

puts("

按任意一个键继续:");

getch();

}

else if(n==4 || n==5)

{

system("cls");

puts("输入i和m的值,用空格键分开(i:1~10,m:0~100):");

fputs("输入i和m的值,用空格键分开(i:1~10,m:0~100):",fp);

while(1)

{

scanf("%d%lf",&i,&m);

if(i10 || m100)

{

puts("输入错误,请重新输入:");

fputs("输入错误,请重新输入:",fp);

continue;

}

break;

}

if(n==4)

{

printf("所有满足第%d次作业分数不大于%g的学生为:

",i,m);

fprintf(fp,"所有满足第%d次作业分数不大于%g的学生为:

",i,m);

}

else

{

printf("所有满足第%d次作业分数不小于%g的学生为:

",i,m);

fprintf(fp,"所有满足第%d次作业分数不小于%g的学生为:

",i,m);

}

sum2=0;

while(p)

{

strcpy(classNumber,p->classNumber);

printf("

%s班:

",classNumber);

fprintf(fp,"

%s班:

",classNumber);

flag1=0;

sum1=0;

while( p && !strcmp(classNumber,p->classNumber))

{

if(n==4 && p->score[i-1] stuNumber,p->score[i-1]);

fprintf(fp,"学生%s,作业分数: %g

",p->stuNumber,p->score[i-1]);

}

else if(n==5 && p->score[i-1] >= m)

{

flag1 ;

sum1 ;

printf("学生%s,作业分数: %g

",p->stuNumber,p->score[i-1]);

fprintf(fp,"学生%s,作业分数: %g

",p->stuNumber,p->score[i-1]);

}

p=p->next;

}

if( !flag1)

{

printf("NULL:

",classNumber);

fprintf(fp,"NULL:

",classNumber);

}

printf("

%s班满足条件人数为:%d

",classNumber,sum1);

fprintf(fp,"

%s班满足条件人数为:%d

",classNumber,sum1);

puts("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");

fputs("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",fp);

sum2 =sum1;

}

printf("

一共满足条件人数为:%d

",sum2);

fprintf(fp,"

一共班满足条件人数为:%d

",sum2);

puts("

按任意一个键继续:");

getch();

}

}

fclose(fp);

}

void destroy_list(stuList &L)

{

stuList p;

while(p=L->next)

{

L->next=p->next;

free(p);

}

free(L);

}

int main()

{

int m,n,i;

double average;

char stuNumber[20],classNumber[20];

stuList L,p;

cre_node(L);

cre_cla_info(L);

while(1)

{

system("cls");

print();

scanf("%d",&n);

if(n6)

break;

if(n==1)

{

system("cls");

puts("输入该学生学号:");

fflush(stdin);

gets(stuNumber);

if( !get_stu_info(L,stuNumber,p))

continue;

printf("该学生%s所在班级为:%s

",p->stuNumber,p->classNumber);

puts("只录入该学生某一次的作业请输入1,要一起录入该学生10次作业请输入其他数字:");

scanf("%d",&m);

if(m==1)

{

puts("录入该学生第几次的作业?");

while(1)

{

scanf("%d",&i);

if(i10)

{

puts("范围只能是1~10,请重新输入:");

continue;

}

break;

}

printf("该学生第%d次作业分数为:%g,你要修改为?:",i,p->score[i-1]);

scanf("%lf",&p->score[i-1]);

puts("本次操作结果:");

printf("%s班%s学生第%d次作业分数为%g:

",p->classNumber,p->stuNumber,i,p->score[i-1]);

puts("

按任意一个键继续:");

getch();

}

else

for(i=0;iscore[i]);

}

}

else if(n==2)

{

system("cls");

puts("输入该学生学号:");

fflush(stdin);

gets(stuNumber);

i=get_stu_info(L,stuNumber,p);

if( !i)

continue;

average=0;

if(i==1)

{

printf("该学生所在班级班号为:%s,10次作业完成情况为:

",p->classNumber);

for(i=0;iscore[i];

printf("第%d次作业分数: %g

",i 1,p->score[i]);

}

average/=10;

printf("

该学生期末成绩为: %g

",average);

}

puts("

按任意一个键继续:");

getch();

}

else if(n==3)

{

system("cls");

puts("输入班级的班号:");

fflush(stdin);

gets(classNumber);

print_cla_info(L,classNumber);

}

else if(n==4)

{

system("cls");

puts("输入该学生学号:");

fflush(stdin);

gets(stuNumber);

if( !get_stu_info(L,stuNumber,p))

continue;

printf("该学生所在班级班号为:%s,当前作业完成情况为:

",p->classNumber);

for(i=0;iscore[i]);

while(1)

{

puts("要修改第几次作业?(输入数字1~10,输入其他数字结束):");

scanf("%d",&m);

if(m10)

break;

printf("修改该学生分数%g为:",p->score[m-1]);

scanf("%lf",&p->score[m-1]);

}

}

else if(n==5)

{

system("cls");

puts("输入该学生学号:");

fflush(stdin);

gets(stuNumber);

if( !get_stu_info(L,stuNumber,p))

continue;

printf("该学生所在班级班号为:%s,当前作业完成情况为:

",p->classNumber);

for(i=0;iscore[i]);

while(1)

{

puts("要删除第几次作业?(输入数字1~10,输入其他数字结束):");

scanf("%d",&m);

if(m10)

break;

p->score[m-1]=0;

}

}

else

{

system("cls");

count(L);

}

}

destroy_list(L);

puts("谢谢使用!按任意键退出:");

getch();

return 0;

}

哪里不懂可追问:。

全部

关于c语言程序的重点问题,c语言程序设计题跪求高人的复杂版~慢步不要紧主要是要对~题目:作? 爱问知识人...相关推荐

  1. c语言实验分支程序设计二,C语言程序实验报告分支结构的程序设计(0页).doc

    C语言程序实验报告分支结构的程序设计(0页) 数学与软件科学学院 实验报告 学期:11至12___ 第_1 学期 2011年10 月 17 日 课程名称:程序设计基础教程-C语言 专业:2010级5_ ...

  2. 培训c语言程序,编程人员培训手册C语言程序设计基础

    <编程人员培训手册C语言程序设计基础>由会员分享,可在线阅读,更多相关<编程人员培训手册C语言程序设计基础(18页珍藏版)>请在人人文库网上搜索. 1.第2章:C语言程序设计基 ...

  3. 培训c语言程序,编程人员培训手册C语言程序设计基础.PPT

    编程人员培训手册C语言程序设计基础.PPT 第2章C语言程序设计基础,学习的意义,从本章开始我们正式进入C语言程序设计的学习,也许大家会问为什么我们要学习C语言呢 理由1因为C语言流行. 理由2因为C ...

  4. c语言程序的书写格式,C语言程序书写格式辅导

    C语言程序书写格式辅导 C语言具有语句简洁的特点,C语言程序的可读性比较差.因此,为了增强C语言的可读性,正确的书写格式就显得十分重要.同样一个程序采用不同的书写方法.尽管都可以得到相同的结果,有的书 ...

  5. c语言程序设计基础项目教程,C语言程序设计基础项目教程

    摘要: <C语言程序设计基础项目教程/高职高专计算机教学改革新体系规划教材>通过项目实例,重点讲解C语言结构化程序设计的基本思想,方法和解决实际问题的技巧,培养学习者设计,分析应用程序的能 ...

  6. c语言程序表达语句,《C语言程序设计》讲稿.doc

    <C语言程序设计>讲稿 <C语言程序设计>讲稿 目 录 第一讲 C语言概述1 第二讲 C语言程序介绍2 第三讲 算法8 第四讲 数据类型(1)20 第五讲 数据类型(2)21 ...

  7. c语言程序实习心得体会,c语言实习心得体会

    学习c语言不能停留在学习它的语法规则,而是利用学到的知识编写c语言程序,解决实际问题.下面是学习啦带来的c语言实习的心得体会,仅供参考. 一周的C语言实训,虽然时间略显仓促,但却让我学到了很多实际运用 ...

  8. c语言程序设计项目教学教程,C语言程序设计:项目教学教程

    本书系统地介绍了C语言编程知识,全书共10章,内容包括:C语言概述.数据设计.顺序结构程序设计.选择结构程序设计.循环结构程序设计.数组.模块化程序设计.指针.用户自定义数据类型和文件.本书注重基础, ...

  9. c语言程序报告样例,C语言个人实习报告定稿(样例3)

    <C语言个人实习报告.doc>由会员分享,可免费在线阅读全文,更多与<C语言个人实习报告[定稿]>相关文档资源请在帮帮文库(www.woc88.com)数亿文档库存里搜索. 1 ...

最新文章

  1. 重磅新政!土拍规则大调整!土地市场将迎“大降温”
  2. Day25 linux shell中的特殊符号与命令
  3. Android设置默认文件管理器,使用默认资源管理器在Android中查看文件夹内容
  4. python tkinter输入框_python TKinter获取文本框内容的方法
  5. 使用VS2013编译Lua5.3.2
  6. 每小时的数据mysql_荐 mysql查询每小时数据和上小时数据的差值
  7. 使用机器学习预测电子竞技游戏《守望先锋》的胜负
  8. 微信终于给我抛橄榄枝了,关于面试我又有话说
  9. 最新发布|深度学习必学“圣经”花书出视频课了!附带论文代码精读讲解!
  10. Android模仿通讯录
  11. python中temp的用法_请问Python里temp是什么意思?
  12. Unity 3D课程总结
  13. Laplance算子(二阶导数)
  14. 连续变量的全概率和贝叶斯公式_条件概率、全概率公式与贝叶斯公式
  15. 最新可用的电脑开机密码查看工具
  16. ESXi/ESX 链路聚合
  17. C语言初阶-C语言中static的用法
  18. 【Scratch考级99图】图26-等级考试scratch绘制复杂图形旋转三角形 少儿编程 scratch画图案例教程
  19. 3D 渲染的 5 种方式
  20. html手机点赞图标素材,微信点赞心形图标,微信点赞分享心形图标素材

热门文章

  1. 欧美插画系列-张聪-专题视频课程
  2. 老java手机有什么什么用,80后熟悉的这些手机功能,用过3种以上说明你已经老了...
  3. 必须掌握的hashcode()方法
  4. Excel函数之— SUMPRODUCT用法(二),太强大了
  5. catia画螺杆_CATIA中带螺纹的螺栓画法 | 坐倚北风
  6. 低功耗4g无线视频服务器,低功耗4G+AI+IOT视频安防行业的首选
  7. RK3568平台开发系列讲解(USB篇)libusb流程简介
  8. RK3568平台开发系列讲解(安卓适配篇)获取 root 权限
  9. mac访达连接服务器后无法显示,mac在群晖nas上使用时间机器TimeMachine
  10. IBM Websphere MQ 使用详解