#include
#include
typedef struct Node{
char major[50];//专业
int grade;//年级
char name[50];//姓名
char sex[10];//性别
char item;//项目
int score;//成绩
//char Field[5][10] = {"跳高", "跳远", "铅球", "实心球", "立定跳远"};
//char Track[8][20] = {"60米", "100米", "400米", "800米", "1500米", "4*100米接力", "4*400米接力", "异程接力"};
char college[11][20] = {"工学院", "理学院", "文学院", "法学院", "商学院", "医学院", "长江新闻与传播学院", "长江艺术与设计学院", "开放学院", "马克思主义学院", "国际学院"};
int sum;//总和
struct Node*next;//指针域
}node;
node List;//链表
void menu();
void show();//发布
void addInfo();//录入
void insertInfo(node*L,node e);//插入 功能
int main() {
int choice=0;
menu() ;
scanf("%d",&choice);
switch(choice){
case 1:
//发布运动会信息
show() ;
break;
case 2:
//录入运动会信息
addInfo();
break;
}
return 0;
}
void menu() {
printf("\t\t\t===================运动会项目管理系统==================\n");
printf("\t\t\t* *\n");
printf("\t\t\t* 1>. 运动会项目信息公告 *\n");
printf("\t\t\t* 2>. 录入运动会项目信息 *\n");
printf("\t\t\t=========================================================\n");
printf("请输入对应功能键") ;
}
void show(){
printf("\t\t\t公告\n");
printf("全校师生:\n\t我校将在田径场举办运动会,期望大家踊跃报名参加。\n");
printf(" 现有项目:\n");
printf("\t************************************************\n") ;
char *Field[] = {"跳高", "跳远", "铅球", "实心球", "立定跳远"};
int i;
for(i=0;i<5;i++){
printf("\t*\t田赛: %s\t\t\t\t*\n",Field[i]);
}
printf("\t************************************************\n") ;
char *Track[] = {"60米", "100米", "400米", "800米", "1500米", "4*100米", "4*400米", "异程接力"};
int j;
for(j=0;j<8;j++){
printf("\t*\t径赛: %s\t\t\t\t*\n",Track[j]);
}
printf("\t************************************************\n") ;
}
void addInfo(){
printf("录入运动会信息\n");
node st;
printf("请输入参赛学生相关信息\n") ;
printf("学院:");
scanf("%s",st.college) ;
printf("年级:");
scanf("%d",st.grade) ;
printf("专业:");
scanf("%s",st.major) ;
printf("姓名:");
scanf("%s",st.name);
printf("性别:");
scanf("%s",st.sex) ;
printf("项目:") ;
scanf("%s",st.item);
printf("成绩:");
scanf("%d",st.score);
insertInfo(&List,st);
}
//头插法
void insertInfo(node *L,node e) {
node *h=L;
node *s=(node *)malloc(sizeof(node));
*s=e;
s->next=h->next;
h->next=s;
}
可以帮忙看一下,为什么我的代码跑起来,到了专业时,输入不了文字,就停止了,不继续跑了,想了一个晚上,没有想明白,期望能有人帮忙解疑,Thanks♪(・ω・)ノ
printf("年级:");
scanf("%d",st.grade) ;
应该是
scanf("%d",&st.grade) ;
修改完善如下,供参考:
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
char major[50];//专业
int grade; //年级
char name[50]; //姓名
char sex[10]; //性别
char item[20];//项目 //char item; 修改
int score; //成绩
//char Field[5][10] = {"跳高", "跳远", "铅球", "实心球", "立定跳远"};
//char Track[8][20] = {"60米", "100米", "400米", "800米", "1500米", "4*100米接力", "4*400米接力", "异程接力"};
char college[32]; // 修改
//char college[11][20] = { "工学院", "理学院", "文学院", "法学院", "商学院", "医学院","长江新闻与传播学院",
// "长江艺术与设计学院", "开放学院", "马克思主义学院", "国际学院" };
int sum;//总和
struct Node* next;//指针域
}node;
node* List = NULL;//修改
void menu();
void show();//发布
void addInfo();//录入
void insertInfo(node** L, node e);// 修改
void printInfo(node* L); // 修改
int main() {
int choice = 0;
while (1) {
menu();
scanf("%d", &choice);
switch (choice) {
case 1:
//发布运动会信息
show();
break;
case 2:
//录入运动会信息
addInfo();
break;
case 3:
//显示所有信息
printInfo(List);
break;
default: break;
}
if (!choice) break; //输入 0 ,退出系统
}
return 0;
}
void menu() {
printf("\t\t\t===================运动会项目管理系统==================\n");
printf("\t\t\t* *\n");
printf("\t\t\t* 1>. 运动会项目信息公告 *\n");
printf("\t\t\t* 2>. 录入运动会项目信息 *\n");
printf("\t\t\t* 3>. 显示所有运动会信息 *\n");
printf("\t\t\t=========================================================\n");
printf("请输入对应功能键");
}
void show() {
printf("\t\t\t公告\n");
printf("全校师生:\n\t我校将在田径场举办运动会,期望大家踊跃报名参加。\n");
printf(" 现有项目:\n");
printf("\t************************************************\n");
char* Field[] = { "跳高", "跳远", "铅球", "实心球", "立定跳远" };
int i;
for (i = 0; i < 5; i++) {
printf("\t*\t田赛: %s\t\t\t\t*\n", Field[i]);
}
printf("\t************************************************\n");
char* Track[] = { "60米", "100米", "400米", "800米", "1500米", "4*100米", "4*400米", "异程接力" };
int j;
for (j = 0; j < 8; j++) {
printf("\t*\t径赛: %s\t\t\t\t*\n", Track[j]);
}
printf("\t************************************************\n");
}
void addInfo() {
printf("录入运动会信息\n");
node st;
printf("请输入参赛学生相关信息\n");
printf("学院:");
scanf("%s", st.college);
printf("年级:");
scanf("%d", &st.grade); //scanf("%d", st.grade);
printf("专业:");
scanf("%s", st.major);
printf("姓名:");
scanf("%s", st.name);
printf("性别:");
scanf("%s", st.sex);
printf("项目:");
scanf("%s", st.item);
printf("成绩:");
scanf("%d", &st.score); //scanf("%d", st.score);
insertInfo(&List, st);
}
//头插法
void insertInfo(node** L, node e) {
//node* h = (*L);
node* s = (node*)malloc(sizeof(node));
s->next = NULL;
*s = e;
s->next = (*L); //s->next = h->next;
(*L) = s; //h->next = s;
}
void printInfo(node* L)
{
node* p = L;
while (p) {
printf("%s %d %s %s %s %s %d\n", p->college, p->grade, p->major, p->name, p->sex, p->item, p->score);
p = p->next;
}
}
不知道你这个问题是否已经解决, 如果还没有解决的话:注:本文以一个例子来演示广义表的基本操作,含有一个头文件《GList.h》和一个测试源文件《main.cpp》