c语言课程设计2
来源:互联网 发布:java 静态变量 泛型 编辑:程序博客网 时间:2024/04/30 16:38
/*====================================================================* 项目:第14组 校运动会项目管理* 程序:c语言课程设计.c* 最后修改时间:2016.11.15* 作者:那又怎样======================================================================*/# include<stdio.h># include<malloc.h>//动态分配内存要包含此文件# include<string.h>int iNum=0;typedef struct _node{ char name[40];//学院名称 char project[40];//比赛项目 int ranking;//名次 struct _node *next;}node;//=============================函数声明===============================node *Create();//创建链表int iProOfAcademy(node *Head,char strName[40]);void FindNode(node *head);void DeleteNode(node **Head,char _project[40]);void TraverList(node *Head);int main(){ //============================定义变量=============================== int iSelect; //===============1================== int M,N; int m1; int quotient,remain;//quotient商[数学] int i=0,j,k; int iQuoArr[20]; int iRemArr[20]; //================2================== int iMoun,iMax; int num=0,iWin=0;//共玩了num局,人赢了iWin局 int iMan;//人搬山的座数 int iCom;//计算机搬的座数 int iRem;//剩余山的座数 int iCompete; //================3================== node *Head=NULL; char name1[40]; printf("请按相应的数字选择要进行的项目:\n"); printf("1:计算分数的精确值\n2:搬山游戏\n3:校运动会项目管理\n"); scanf("%d",&iSelect); switch(iSelect) { case 1://计算分数的精确值 printf("请输入被除数M和除数N(0<M<N<100):\n"); scanf("%d%d",&M,&N); printf("%d除以%d=%.20lf\n",M,N,(M+0.0)/(N+0.0)); m1=M; while(1) { quotient=(int)(M+0.0)/(N+0.0);//商 remain=M%N;//余数 iQuoArr[i]=quotient; iRemArr[i]=remain; if(remain==0) { printf("%d/%d是有限不循环小数\n",m1,N); return 0; } else { for(j=1;j<i;j++) if(iRemArr[j]==remain) { printf("%d除以%d是无限循环小数,第一循环节是:",m1,N); for(k=j;k<i;k++) printf("%d",iQuoArr[k]); printf("\n循环节的起止位置序号分别为:%d,%d\n",j,i-1); return 0; } } i++; M=10*remain; } return 0; case 2://搬山游戏 printf("欢迎来到搬山游戏,游戏规则是:\n你输入山的总数iMoun和每次允许搬山的最大数iMax,然后你先开始\n"); printf("输入你要搬山的座数,我也会搬若干座山,搬最后一座山的输,懂了没?那就开始吧\n"); for(num=1;;num++) { printf("请输入iMoun和iMax:"); scanf("%d%d",&iMoun,&iMax); if(iMoun<=0||iMax<= 0) printf("请输入正确的数据!!\n"); iRem=iMoun; while(1) { printf("请输入你要搬山的座数:"); scanf("%d",&iMan); while(iMan<=0||iMan>=iRem) { printf("请重新输入:\n"); scanf("%d",&iMan); } iRem=iRem-iMan; printf("还剩余%d座山\n",iRem); if(iRem==1) { printf("你赢了,恭喜!\n"); break; } else if((iRem-1)<=iMax) { iCom=iRem-1; iRem=iRem-iCom; printf("我搬%d座山,剩余1座山",iCom); printf("很遗憾,你输了"); break; } else { iCom=((iRem-1)%(iMax+1)); if(iCom==0) iCom=1; iRem=iRem-iCom; printf("我搬%d座山,剩余%d座山\n",iCom,iRem); } } printf("是否继续比赛?\n 1(yes),0(no)\n"); scanf("%d",&iCompete); if(iCompete==1) { iWin=0; continue; } else { printf("共进行了%d局,你%d胜%d负\n",num,iWin,num-iWin); return 0; } } return 0; case 3://校运动会项目管理 printf("请输入要建立节点的个数:"); scanf("%d",&iNum); printf("现在你可以依次输入%d组数据\n",iNum); printf("学院名称\t比赛项目\t名次\n"); Head=Create(); //统计某学院的所有比赛项目数 printf("\n请输入要统计的学院的名称:"); scanf("%s",name1); printf("%s的所有比赛项目数为%d\n",name1,iProOfAcademy(Head,name1)); printf("名次为第一名的节点为:\n学院名称\t比赛项目\t名次\n"); FindNode(Head); printf("请输入要删除的比赛项目:"); scanf("%s",name1); DeleteNode(&Head,name1); printf("删除后:\n"); printf("学院名称\t比赛项目\t名次\n"); TraverList(Head); return 0; } system("pause"); return 0;}//=========================函数定义=========================//创建链表node *Create(){ node *p1,*p2; node *_Head=NULL; char _name[40]; char _project[40]; int _ranking; int i=1;//节点个数 p1=p2=(node *)malloc(sizeof(node)); scanf("%s%s%d",_name,_project,&_ranking); strcpy(p1->name,_name); strcpy(p1->project,_project); p1->ranking=_ranking; p1->next=NULL; _Head=p1;//头指针就出来了 for(;i<iNum;i++) { p2=p1;//保存上一次的尾节点 p1=(node *)malloc(sizeof(node)); scanf("%s%s%d",_name,_project,&_ranking); strcpy(p1->name,_name); strcpy(p1->project,_project); p1->ranking=_ranking; p1->next=NULL; p2->next=p1; } return _Head;}//统计某学院的所有比赛项目数int iProOfAcademy(node *Head,char strName[40]){ node *p; int i=0; p=Head; for(;p!=NULL;p=p->next) { if(strcmp(strName,p->name)==0) ++i; } return i;}//查找所有名次为第一名的节点void FindNode(node *head){ node *p=head; for(;p!=NULL;p=p->next) { if(p->ranking==1) printf("%s\t\t%s\t\t1\n",p->name,p->project); }}//删除指定项目的所有节点void DeleteNode(node **Head,char _project[40]){ node *p=*Head; node *p1,*p2; int m=0; p1=p2=NULL; //如果第一个节点是要删除的节点的话 if(strcmp((*Head)->project,_project)==0) { p=(*Head); (*Head)=(*Head)->next; free(p); p=NULL; } for(m=0;m<iNum;m++) { for(p=(*Head);p->next!=NULL;p=p->next) { p1=p->next; p2=p; if(strcmp(p1->project,_project)==0) { p2->next=p1->next; free(p1); p1=NULL; break; } } }}//遍历链表void TraverList(node *Head){ node *p=Head; for(;p!=NULL;p=p->next) { printf("%s\t\t%s\t\t%d\n",p->name,p->project,p->ranking); }}
0 0
- c语言课程设计2
- 图书管理系统C语言课程设计2
- C语言课程设计任务书
- C语言课程设计
- C语言课程设计
- C语言课程设计
- c语言课程设计
- C语言课程设计---通讯录
- c语言课程设计
- c语言课程设计
- c语言课程设计笔记
- C语言课程设计
- C语言课程设计
- c语言课程设计
- c语言课程设计
- 求助!!!C语言课程设计
- c语言课程设计1
- C语言课程设计----电子词典
- 薪酬模块生成工资条
- 并发网络架构
- Java读取Excel内容
- matlab 2015b compile java package 编译 jre1.8 jre1.7版本不一致的问题
- 使用Spring + Jedis集成Redis
- c语言课程设计2
- contains的错误用法产生的模糊匹配bug
- android aidl通信 RemoteCallbackList客户端注册回调
- ffmpeg+opencv播放器开发
- css中字体单位px,pt,em ,rem,百分比之间的区别和用法
- ios类方法和实例方法的区别和使用场景
- grails代码学习教程
- PRINCE2认证之项目四大管理步骤
- Trie