C语言高手进

C语言高手进,第1张

//这是我在大学时做的,你看看:

/*

程序功能:

能完成每位学生的某门课程的平时成绩和期末考试成绩的录入,

完成每位学生的总评成绩计算(平时成绩*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语言,我会更加努力。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11110325.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存