/*
程序功能:
能完成每位学生的某门课程的平时成绩和期末考试成绩的录入,
完成每位学生的总评成绩计算(平时成绩*30%+期末考试成绩*70%)并生成数据文件,
生成分数段统计文件(不及格人数,60-69数,70-79人数,80-89人数,90-100人数,及格
率),
通过学生成绩的数据文件查询学生成绩(查询条件自定)。
通过学生成绩的分段统计文件输出学生成绩分段情况和及格率。
程序要求:
(1)能够完成300人以内任何人数的成绩处理。
(2)程序要有主控菜单
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct stud
{
long num
char name[20]
double score
}
typedef struct stucode
{
struct stud student
struct stucode *next
}L
void menu()
void createlist(struct stucode **r)
void out(struct stucode *r)
void search1(struct stucode *r)
void search2(struct stucode *r)
void del(struct stucode **r)
void insert(struct stucode **r)
void sort(struct stucode **r)
void main()
{
char choose
int flag=1
struct stucode *r=NULL
while(flag)
{
system("cls")
menu()
choose=getchar()
switch(choose)
{
case '1':
createlist(&r)
out(r)
printf("Testing function 1\nPress any key to continue\n")
getchar()
getchar()
break
case '2':
search1(r)
printf("Testing function 1\nPress any key to continue\n")
getchar()
getchar()
break
case '3':
search2(r)
printf("Testing function 1\nPress any key to continue\n")
getchar()
getchar()
break
case '4':
del(&r)
out(r)
printf("Testing function 1\nPress any key to continue\n")
getchar()
getchar()
break
case '5':
insert(&r)
out(r)
printf("Testing function 1\nPress any key to continue\n")
getchar()
getchar()
break
case '6':
sort(&r)
out(r)
printf("Testing function 1\nPress any key to continue\n")
getchar()
getchar()
break
case '7':
out(r)
printf("Testing function 7\nPress any key to continue\n")
getchar()
getchar()
break
case '0':
flag=0
printf("The end.\n")
break
default: printf("\nWrong Selection!(选择错误,请重选!)\n")getchar()getchar()
}
}
}
void createlist(struct stucode **r)
{
struct stucode *p,*t
long n
char a[20]
double s
if(*r) *r=NULL
printf(" \n请输入:\n 学号(请按学号升序排列) 姓名 分数 (若要结束请输入三个为零) \n")
scanf("%ld%s%lf",&n,a,&s)
if(n==0) return
p=(L *)malloc(sizeof(L))
p->student.num=n
strcpy(p->student.name,a)
p->student.score=s
p->next=NULL
*r=p
scanf("%ld%s%lf",&n,a,&s)
while(n)
{
t=p
p=(L *)malloc(sizeof(L))
p->student.num=n
strcpy(p->student.name,a)
p->student.score=s
p->next=NULL
t->next=p
scanf("%ld%s%lf",&n,a,&s)
}
}
void search1(struct stucode *r)
{
long x
if(!r)
{
printf("没有学生信息可查询!\n")
return
}
printf(" 请输入要查询的学生信息的学生学号:\n")
scanf("%ld",&x)
while(r&&r->student.num!=x)
r=r->next
if(r==NULL)
printf("Error! No such student !\n")
else
printf("%ld %s %.2lf\n",r->student.num,r->student.name,r->student.score)
}
void search2(struct stucode *r)
{
char m[20]
if(!r)
{
printf("没有学生信息可查询!\n")
return
}
printf(" 请输入要查询的学生信息的学生姓名:\n")
scanf("%s",m)
while(r&&strcmp(r->student.name,m))
r=r->next
if(r==NULL)
printf("Error! No such student !\n")
else
printf("%ld %s %.2lf\n",r->student.num,r->student.name,r->student.score)
}
void del(struct stucode **r)
{
long k
struct stucode *p=*r,*t
if(!(*r))
{
printf("没有学生信息可删除 !\n")
return
}
printf(" 请输入要删除的学生信息的学生学号:\n")
scanf("%ld",&k)
if(p->student.num==k)
*r=(*r)->next,free(p)
else
{
while(p->next&&p->next->student.num!=k)
p=p->next
if(p->next==NULL)
printf("Error! No such student !\n")
else
{
t=p->next
p->next=p->next->next
free(t)
}
}
}
void insert(struct stucode **r)
{
long n
char a[20]
double s
L *p,*t,*k
printf(" 请输入要插入的学生信息的学生学号 姓名 分数:\n")
scanf("%ld%s%lf",&n,a,&s)
p=(L *)malloc(sizeof(L))
p->student.num=n
p->student.score=s
strcpy(p->student.name,a)
if(!(*r))
{
*r=p
(*r)->next=NULL
return
}
if(p->student.num<(*r)->student.num)
p->next=(*r),(*r)=p
else
{
t=*r
k=t
while(t->next&&t->next->student.num<=p->student.num)
t=t->next
p->next=t->next
t->next=p
*r=k
}
}
void sort(struct stucode **r)
{
struct stucode *t,*p,*q,*z
if(!r)
{
printf("没有学生信息可排序!\n")
return
}
if(!(*r)||!(*r)->next)
return
t=*r
p=t->next
t->next=NULL
while(p)
{
q=p->next
if(p->student.score>t->student.score)
{
p->next=t
t=p
}
else
{
z=t
while(z->next&&z->next->student.score>=p->student.score)
z=z->next
p->next=z->next
z->next=p
}
p=q
}
*r=t
}
void out(struct stucode *r)
{
printf("\n\n")
if(!r)
{
printf("没有学生信息可输出!\n")
return
}
while(r)
{
printf("%ld %s %.2lf\n",r->student.num,r->student.name,r->student.score)
r=r->next
}
printf("\n\n")
}
void menu()
{
printf("\n 学生信息管理系统\n")
printf("\n 菜单\n\n")
printf("\n 1建立链表并显示\n")
printf("\n 2查找某学号的学生信息\n")
printf("\n 3查找某姓名的学生信息\n")
printf("\n 4删除某学号的学生信息\n")
printf("\n 5插入新的学生信息\n")
printf("\n 6按分数降序排列输出\n")
printf("\n 7输出\n")
printf("\n 0退出\n")
printf("\n 请选择您要执行的选项:\n")
}
#include<stdio.h>int max(int x,int y,int z)
{
int t
t=x>y?x:y
t=t>z?t:z
return(t)
}
int min(int x ,int y,int z)
{
int t
t=x<y?x:y
t=t<z?t:z
return(t)
}
int aver(int x ,int y,int z)
{
int t
t=(x+y+z)/3
return(t)
}
void main()
{ int x,y,z,a,b,c
scanf("%d,%d,%d",&x,&y,&z)
a=(*max)(x,y,z)
b=(*min)(x,y,z)
c=(*aver)(x,y,z)
printf("%d,%d,%d\n",a,b,c)
}
建议改成:
#include<stdio.h>
int max(int x,int y,int z)
{
int t
t=x>y?x:y
t=t>z?t:z
return(t)
}
int min(int x ,int y,int z)
{
int t
t=x<y?x:y
t=t<z?t:z
return(t)
}
float aver(int x ,int y,int z)
{
int t
t=(float)((x+y+z)/3.0)
return(t)
}
void main()
{ int x,y,z,a,bfloat c
scanf("%d,%d,%d",&x,&y,&z)
a=(*max)(x,y,z)
b=(*min)(x,y,z)
c=(*aver)(x,y,z)
printf("max=%d\nmin=%d\naver=%g\n",a,b,c)
}
1、实验名称:计算出1000以内10个最大素数之和。
2、实验目的:熟练掌握if、if…else、if…else if语句和witch语句格式及使用方法,掌握if语句中的嵌套关系和匹配原则,利用if语句和switch语句实现分支选择结构。熟练掌握while语句、do…while语句和for语句格式及使用方法,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利用循环语句实现循环结构。掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧。进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。
3、实验内容:计算并输出1000以内最大的10个素数以及它们的和。
4、要求:在程序内部加必要的注释。 由于偶数不是素数,可以不考虑对偶数的处理。 虽然在1000以内的素数超过10个,但是要对1000以内不够10个素数的情况进行处理。 输出形式为:素数1+素数2+素数3+…+素数10=总和值。
5、算法描述流程:Main函数:判断素数:
6、测试数据:分别输入1000、100、10测试。
7、运行结果:出现问题及解决方法:当素数个数小于10时的处理不够完善,考虑不够周全。学习耐心与细心不足,如scanf(“%d”,&n)中的“&”经常忘记。
8、编程思想不够发散,例如如何判断素数,只能想出2种方式(其中1种为参考教科书上内容);在今后学习中应更多的动脑,综合运用所学。
9、基本功不够,如清屏clrscr()等函数用的不好,有时同样的问题多次犯,给实验课老师带来很大的麻烦。这说明我的知识不够广,有很多有用但不做考试要求的书中内容没有学好,认识程度不够深刻。就算以后C语言这门课程结束后,也应多看相关东西,多上机练习,才能真正从本质上提高自己。
10、物理实验报告 ·化学实验报告 ·生物实验报告 ·实验报告格式 ·实验报告模板
11、知识不够广泛,如VC++6.0等程序,自己试了好一阵也不会用;说明我电脑水平还是不够,自学能力不够。已会的东西掌握的还是不够好。
12、实验心得:通过本次C语言上机实验,我对这个介于人类与非人类之间的计算机编程语言有了一定的体验。其间开心过、郁闷过、无奈过、彷徨过……随着实验的胜利成功与实验报告的胜利完成,有点微微的自豪感使人难忘。感谢高克宁老师的高标准、严要求,感谢实验课上小老师们的耐心指点,也感谢我在实验中经历过的点点滴滴……伴随着学习的深入,我发现高深的东西还有很多很多,等待着我自己去挖掘。对C语言,我会更加努力。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)