帮忙做两道C语言编程题

《一》用C语言编写软件完成以下任务:记录学生参加“健康跑”活动的次数。学生的记录信息要保存在myfile.dat文件中(记录结构至少应该包括以下三项:学号,姓名,累计次数... 《一》
用C语言编写软件完成以下任务:
记录学生参加“健康跑”活动的次数。
学生的记录信息要保存在myfile.dat文件中
(记录结构至少应该包括以下三项:学号,姓名,累计次数)。
4名学生编号与姓名如下:
1:A
2:B
3:C
4:D

《二》
该系统有以下功能:
1:学生名单输入
2:跑步签到(每签到一次,累计次数加1)
3:查询(可按学号,次数进行查询)
4:退出程序
展开
 我来答
匿名用户
2009-02-26
展开全部
#include "stdio.h"

typedef struct Student
{
char name[32];
int num;
int n;
Student *next;
};

Student *head=NULL;
Student *creat()
{
Student *p1,*p2;
p1=(Student *)malloc(sizeof(Student));
head=p1;
p2=p1;
printf("请输入你要添加的学生姓名,以0结束:\n");
scanf("%s", p1->name);
if (p1->name[0]!='0')

{
printf("请输入此学生的学号:\n");
scanf("%d", &p1->num);
p1->n=0;
}
else
{
free(p1);p2=NULL;p2->next=NULL;head=NULL;
return head;
}
while (p1->name[0]!='0')
{
p2=p1;
p1=p1->next;
p1=(Student *)malloc(sizeof(Student));
printf("请输入你要添加的学生姓名,以0结束:\n");
scanf("%s", p1->name);
if (p1->name[0]!='0')

{
printf("请输入此学生的学号:\n");
scanf("%d", p1->num);
p1->n=0;
}
p2->next=p1;

}
free(p1);
p2->next=NULL;
return head;

}
void Count(Student *head,int num)
{
int c;
if (head==NULL)
{
printf("对不起没有创建\n");
}
if (head->num==num)
{
printf("找到他的信息:\n");
printf("姓名:%s\n", head->name);
printf("学号:%d", head->num);
printf("曾你参加跑步%d次跑步\n", head->n);
printf("是否签到:1->是\t2->否\n");
scanf("%c", &c);
if (c==1)
{
head->n=head->n+1;
printf("添加成功!\n");
printf("参加了%d跑步\n"", head->n);
}
if (c==2)
{
return;
}

}
while (head->num!=num&&head->next!=NULL)
{
head=head->next;
if (head->num==num)
{
printf("找到他的信息:\n");
printf("姓名:%s\n", head->name);
printf("学号:%d", head->num);
printf("曾你参加跑步%d次跑步\n", head->n);
printf("是否签到:1->是\t2->否\n");
scanf("%c", &c);
if (c==1)
{
head->n=head->n+1;
printf("添加成功!\n");
printf("参加了%d跑步\n"", head->n);
}
if (c==2)
{
return;
}
}

}
}
void Run(Student*head ,int num)
{
if (head==NULL)
{
printf("对不起没有创建\n");

}
if (head->num==num)
{
printf("找到他的信息:\n");
printf("姓名:%s\n", head->name);
printf("学号:%d", head->num);
printf("签到次数:%d", head->n);

}
while (head->num!=num&&head->next!=NULL)
{
head=head->next;
if (head->num==num)
{
printf("找到他的信息:\n");
printf("姓名:%s\n", head->name);
printf("学号:%d", head->num);
printf("签到次数:%d", head->n);

return;
}
else
printf("对不起没有他的数据\n");

}

}
void menu()
{
int q;
while (1)
{

printf("----------学生签到系统------------\n");
printf("1->创建学生\t2->查找学生\n");
printf("3->进行签到\t4->退出系统\n");
printf("请输入你的选择:" ;
scanf("%c", &q);

switch(q)
{
case 1:
{
head=creat();
getchar();
printf("创建成功!\n");
getchar();
clrscr();
}
break;
case 2:
{
int m=0;
printf("请输入你要查询人的学号:"; )
scanf("%d", &m);
Run(head,m);
getchar();
getchar();
clrscr();
}
break;
case 3:
{
int m=0;
printf("请输入你要查询人的学号:"; )
scanf("%d", &m);
Run(head,m);
getchar();
getchar();
clrscr();

}
break;
case 4:
{
return;
}
break;

}
}
}

int main(int argc, char* argv[])
{
menu();
printf("Hello World!\n");
return 0;
}
百度网友b8e4461
2009-02-25 · TA获得超过667个赞
知道小有建树答主
回答量:657
采纳率:0%
帮助的人:585万
展开全部
对不起我只会c++而且你就是把所有的cin改成C语言的scanf
cout 改成 printf试试吧
// 学生跑步系统.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
using namespace std;

class Student
{
public:
char name[32];
int num;
int n;
Student *next;

};
Student *head=NULL;
Student *creat()
{
Student *p1,*p2;
p1=new Student;
head=p1;
p2=p1;
cout <<"请输入你要添加的学生姓名,以0结束:"<<endl;
cin >>p1->name;
if (p1->name[0]!='0')

{
cout <<"请输入此学生的学号:"<<endl;
cin>>p1->num;
p1->n=0;
}
else
{
delete p1;p2=NULL;p2->next=NULL;head=NULL;return head;
}
while (p1->name[0]!='0')
{
p2=p1;
p1=p1->next;
p1=new Student;
cout <<"请输入你要添加的学生姓名,以0结束:"<<endl;
cin >>p1->name;
if (p1->name[0]!='0')

{
cout <<"请输入此学生的学号:"<<endl;
cin>>p1->num;
p1->n=0;
}
p2->next=p1;

}
delete p1;
p2->next=NULL;
return head;

}
void Count(Student *head,int num)
{
int c;
if (head==NULL)
{
cout <<"对不起没有创建"<<endl;
}
if (head->num==num)
{
cout <<"找到他的信息:"<<endl;
cout <<"姓名:"<<head->name<<endl;
cout <<"学号:"<<head->num<<endl;
cout <<"曾你参加跑步"<<head->n<<"次跑步"<<endl;
cout<<"是否签到:1->是\t2->否"<<endl;
cin>>c;
if (c==1)
{
head->n=head->n+1;
cout<<"添加成功!"<<endl;
cout<<"参加了"<<head->n<<"跑步"<<endl;
}
if (c==2)
{
return;
}

}
while (head->num!=num&&head->next!=NULL)
{
head=head->next;
if (head->num==num)
{
cout <<"找到他的信息:"<<endl;
cout <<"姓名:"<<head->name<<endl;
cout <<"学号:"<<head->num<<endl;
cout <<"曾你参加跑步"<<head->n<<"次跑步"<<endl;
cout<<"是否签到:1->是\t2->否"<<endl;
cin>>c;
if (c==1)
{
head->n=head->n+1;
cout<<"添加成功!"<<endl;
cout<<"参加了"<<head->n<<"跑步"<<endl;
}
if (c==2)
{
return;
}
}

}
}
void Run(Student*head ,int num)
{
if (head==NULL)
{
cout <<"对不起没有创建"<<endl;

}
if (head->num==num)
{
cout <<"找到他的信息:"<<endl;
cout <<"姓名:"<<head->name<<endl;
cout <<"学号:"<<head->num<<endl;
cout <<"签到次数:"<<head->n<<endl;

}
while (head->num!=num&&head->next!=NULL)
{
head=head->next;
if (head->num==num)
{
cout <<"找到他的信息:"<<endl;
cout <<"姓名:"<<head->name<<endl;
cout <<"学号:"<<head->num<<endl;
cout <<"签到次数:"<<head->n<<endl;

return;
}
else
cout <<"对不起没有他的数据"<<endl;

}

}
void menu()
{
int q;
while (1)
{

cout<<"----------学生签到系统------------"<<endl;
cout<<"1->创建学生\t"<<"2->查找学生"<<endl;
cout<<"3->进行签到\t"<<"4->退出系统"<<endl;
cout <<"请输入你的选择:" ;
cin >>q;
switch(q)
{
case 1:
{
head=creat();
cin.get();
cout <<"创建成功!!";
cin.get();
system("cls");
}
break;
case 2:
{
int m=0;
cout <<"请输入你要查询人的学号:";
cin>>m;
Run(head,m);
cin.get();
cin.get();
system("cls");
}
break;
case 3:
{
int m=0;
cout <<"请输入你要查询人的学号:";
cin>>m;
Count(head,m);
cin.get();
cin.get();
system("cls");

}
break;
case 4:
{
return;
}
break;

}
}
}

int main(int argc, char* argv[])
{
menu();
printf("Hello World!\n");
return 0;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式