2 建立一链表,每个结点包含:学号、姓名、3门考试成绩
1) 按学号排序;
2) 输入一个学生学号,输出其成绩。
3)
输入一个学生的信息将它插入链表中(假定链表按学号有序)。
4) 统计该链表中学生总成绩和平均成绩。
----------------解决方案--------------------------------------------------------
/* 游戏者投两枚骰子,每个骰子有六面,这些面包含1,2,3,4,5,6个点。 投两枚骰子之后,计算点数之和。如果第一次投时的和为7或11,则游戏者获胜。 如果第一次投时的和为2,3或12,则游戏者输,庄家赢。如果第一次投时的和为4,5,6,8,9,10, 则这个和成为游戏者下次投骰子获胜的点数。要想赢,就要继续投骰子,直到投到点数。 如果投七次之后还没有赚到点数,则游戏者输。 */ #include <stdio.h> #include <time.h> #include <stdlib.h>
int throw_sai(void); void output(int);
int main() { int value; value=throw_sai(); output(value); return 0; }
int throw_sai(void) { int i; int j; int arry[2]; int sum; sum=0; srand(time(NULL)); for(j=0;j<2;j++) arry[j]=rand()%6+1; sum=arry[0]+arry[1]; if(sum==7||sum==11) return 1; else if(sum==2||sum==3||sum==12) return 0; for(i=0;i<6;i++) { for(j=0;j<2;j++) arry[j]=rand()%6+1; if((arry[0]+arry[1])==sum) return 1; } if(i==6) return 0; }
void output(int value) { if(value==1) printf("The player won the game!\n"); else printf("The computer won the game!\n"); }
----------------解决方案--------------------------------------------------------
第一题给你写写看,等我
----------------解决方案--------------------------------------------------------
#include <stdlib.h> #include <stdio.h> #include <time.h> #include <conio.h>
//产生随机数(整数),位于区间[a,b]或者[b,a] int randInt(int a,int b) { if(a<b) return a+rand()%(b-a+1); else if(a>b) return b+rand()%(a-b+1); else // a==b return a; }
void main() { int c=0;//各点之和 int count=1;//记录投骰子次数 int a,b; int temp; while(count<=7) { system("cls"); printf("\t\t按任意键开始......\n"); getch(); srand(time(0)); //保证每次运行产生的随机数都不一样 a=randInt(1,6); b=randInt(1,6); c=a+b; printf("\n第%d次:骰1:%2d 骰2:%2d 和:%-5d",count,a,b,a+b); if((c==7||c==11)&&count==1) { printf("游戏者 赢 !\n"); count=1; } if((c==2||c==3||c==12)&&count==1) { printf("庄家赢 !\n"); count=1; } if((c==4||c==5||c==6||c==8||c==9||c==10)&&count==1) { count++; temp=c; a=randInt(1,6); b=randInt(1,6); printf("\n\n第%d次:骰1:%2d 骰2:%2d 和:%-5d",count,a,b,a+b); if((a+b)==temp) { printf("游戏者 赢 !\n"); count=1; } else while((a+b)!=temp) { count++; if(count==8) { printf("游戏者 输 !\n"); count=1; break; } printf("继续--->\n"); a=randInt(1,6); b=randInt(1,6); printf("\n第%d次:骰1:%2d 骰2:%2d 和:%-5d",count,a,b,a+b); if((a+b)==temp) { printf("游戏者 赢 !\n"); count=1; break; } } } getch(); } }
----------------解决方案--------------------------------------------------------
/* 建立一链表,每个结点包含:学号、姓名、3门考试成绩 1) 按学号排序; 2) 输入一个学生学号,输出其成绩。 3)输入一个学生的信息将它插入链表中(假定链表按学号有序)。 4) 统计该链表中学生总成绩和平均成绩。 */ #include <stdio.h> #include <stdlib.h> #include <string.h>
struct Linknode { char stdnum[10]; char stdname[7]; float stdgrade[3]; struct Linknode *next; };
int num; struct Linknode * head=NULL,*tail=NULL; //head=NULL;这里为什么不不能赋值 //tail=NULL;
void help(); void createlink(void); void input(struct Linknode *,int); void sort(struct Linknode *); void search(struct Linknode *); void insert(struct Linknode *); void outputgrade(struct Linknode*);
void help() { printf("\t\t\tStudents Informatin Menu\n"); printf("Press key [1] to create a linklist.\n"); printf("Press key [2] to sort the linklist.\n"); printf("Press key [3] to search a student's three grades.\n"); printf("Press key [4] to insert a student's information.\n"); printf("Press key [5] to output the all students' total grades and average grade.\n"); printf("Press any other number's key to exit.\n"); }
void createlink(void) { int i; struct Linknode * linkp,*temp; printf("please enter the linknode's number you want to creat.\n"); scanf("%d",&num); fflush(stdin); for(i=0;i<num;i++) { linkp=(struct Linknode *)malloc(sizeof(struct Linknode)); if(!linkp) { printf("out of memory.\n"); exit(1); } if(head==NULL) { head=linkp; tail=linkp; temp=head; } else { tail=linkp; temp->next=linkp; temp=linkp; } input(linkp,i+1); } tail->next=NULL; }
void input(struct Linknode *linkp,int count) { printf("please enter th%d studut's number.\n",count); gets(linkp->stdnum); fflush(stdin); printf("please enter th%d student's name.\n",count); gets(linkp->stdname); fflush(stdin); printf("please enter th%d student's three grades.\n",count); scanf("%f %f %f",linkp->stdgrade,linkp->stdgrade+1,linkp->stdgrade+2); fflush(stdin); }
void sort(struct Linknode * linkp) { int i; int j; int k; struct Linknode temp; linkp=head; for(i=0;i<num;i++) { k=i; for(j=i+1;j<num;j++) if(strcmp((linkp+j)->stdnum,(linkp+k)->stdnum)<0) k=j; if(k!=i) { temp=*(linkp+k); *(linkp+k)=*(linkp+i); *(linkp+i)=temp; } } }
void search(struct Linknode *linkp) { char num[10]; linkp=head; printf("please enter the student's num you want to search.\n"); gets(num); while(linkp!=NULL) { if(strcmp(linkp->stdnum,num)==0) { printf("the student's three grades are as following.\n"); printf("%f\n%f\n%f\n",linkp->stdgrade[0],linkp->stdgrade[1],linkp->stdgrade[2]); return; } linkp=linkp->next; } if(linkp==NULL) printf("the student's num don't exist.\n"); }
void insert(struct Linknode *linkp) { struct Linknode *temp,*tep; linkp=head; tep=head; temp=(struct Linknode *)malloc(sizeof(struct Linknode)); if(!temp) { printf("out of memory.\n"); return; }
printf("please enter the inserting's stdnum.\n"); gets(temp->stdnum); fflush(stdin); printf("please enter the inserting's stdname.\n"); gets(temp->stdname); fflush(stdin); printf("please enter the inserting's three grades.\n"); scanf("%f %f %f",temp->stdgrade,temp->stdgrade+1,temp->stdgrade+2); fflush(stdin); while(linkp!=NULL) { if(strcmp(linkp->stdnum,temp->stdnum)>0) { tep->next=temp; temp->next=linkp; break; } tep=linkp; linkp=linkp->next; } if(linkp==NULL) { tail->next=temp; tail=temp; tail->next=NULL; } }
void outputgrade(struct Linknode *linkp) { float sum; float average; linkp=head; while(linkp!=NULL) { sum=average=0.0; sum=linkp->stdgrade[0]+linkp->stdgrade[1]+linkp->stdgrade[2]; average=sum/3; printf("the student's num total_grade average_grade are as following :\n"); printf("%s %f %f\n",linkp->stdnum,sum,average); linkp=linkp->next; } }
int main() { int select; struct Linknode *linkp; do { help(); printf("\n\nplease press a key to choose your operation.\n"); scanf("%d",&select); fflush(stdin); switch(select) { case 1: createlink(); break; case 2: sort(linkp); break; case 3: search(linkp); break; case 4: insert(linkp); break; case 5: outputgrade(linkp); break; default: exit(1); break; } }while(1); return 0; }
//花了点时间帮你写了下 //看看把
----------------解决方案--------------------------------------------------------
我这里有个差不多的啊,可不可以求大哥你帮我看看啊 多谢,纯属救命哦多谢多谢!!
----------------解决方案--------------------------------------------------------
、建立一链表,每个结点包含:学号、姓名、3门考试成绩
(1)分别返回三科成绩最高分函数;
(2)分别按三科成绩排序
(3)统计该链表中学生总成绩和平均成绩
兄弟们救命啊!
可以帮我看看这个东西怎么写吗!!
----------------解决方案--------------------------------------------------------