c语言程序

c语言程序,第1张

#include <stdioh>

#include <stringh>

#include <malloch>

#include <stdlibh>

typedef struct Node //定义结点

{

long int born_time,work_time,tele_num;

char sex,name[50],degree[50],job[50],address[50];

struct Node next;

}EPNode;

typedef struct //定义数据域

{

long int born_time,work_time,tele_num;

char name[50],sex,degree[50],job[50],address[50];

}DataType;

void ListInitiate(EPNode head)//---------------------------------链表初始化

{

if((head=(EPNode )malloc(sizeof(EPNode)))==NULL)

exit(1);//动态分配存储空间

(head)->next=NULL;

}

EPNode ListInsert(EPNode head,DataType x)//-------------------职工信息的插入姓名并按照升序排列

{

EPNode p,q,s;

p=head->next;

if((q=(EPNode )malloc(sizeof(EPNode)))==NULL) exit(1);//动态分配存储空间

q->born_time=xborn_time;

q->work_time=xwork_time;

q->tele_num=xtele_num;

strcpy(q->name,xname);

q->sex=xsex;

strcpy(q->degree,xdegree);

strcpy(q->job,xjob);

strcpy(q->address,xaddress);

if(head->next==NULL){//如果只有链表的头结点,没有其他的结点,直接插入在头结点后面

head->next=q;

head->next->next=NULL;

}

else{//链表非空

for(;p;p=p->next){

if(p->next!=NULL){

if(strcmp(p->name,xname)<0&&strcmp(p->next->name,xname)>0){//位于两个结点之间

s=p->next;

p->next=q;

q->next=s;

break;

}

}

else if(strcmp(p->name,xname)<0&&p->next==NULL){//链表非空,并且在排序中是最后一个

p->next=q;

q->next=NULL;

break;

}

if(strcmp(p->name,xname)>0){//位于链表头结点之后的位置

s=head->next;

head->next=q;

q->next=s;

break;

}

}

}

return head;

}

void ListDelete(EPNode head)//-----------------------------职工信息的删除

{

EPNode p,s;

char x[20];

s=head;

p=head->next;

if(head->next==NULL){//链表为空,输出:名单中无职工信息,无须删除!

printf("名单中无职工信息,无须删除!\n");

return;

}

printf("请输入要删除职工的姓名:\n"); //输入要删除的人的姓名

scanf("%s",x);

for(p;p;p=p->next){//在链表中从头到尾查找输入的人的姓名

if(strcmp(p->name,x)==0){ //如果存在,则删除,否则输出:名单中无职工信息,无须删除!

s->next=p->next;

free(p);

printf("删除成功!请继续 *** 作!\n");

break;

}

s=p;

}

if(p==NULL){//链表本身为空

printf("名单中无职工信息,无须删除!\n");

}

}

void ListModify(EPNode head)//------------------------职工信息的修改

{

DataType x;

EPNode p;

p=head->next;

if(p==NULL){//链表本身为空

printf("职工名单无职工信息,无须修改!\n");

return;

}

printf("请输入要修改的职工姓名:\n");

scanf("%s",xname);

printf("依次写入该职工的新信息:\n");

for(;p;p=p->next)

{

if(strcmp(xname,p->name)==0){//查找到了该职工的信息

scanf("%s %c %d %d %s %s %s %d",p->name,&p->sex,&p->born_time,&p->work_time,p->degree,p->job,p->address,&p->tele_num);

printf("修改成功!请继续 *** 作!\n");

break;

}

}

if(p==NULL)//如果链表为空

printf("此职工不存在,无法修改其信息!\n");

}

void save(EPNode head,FILE fp)//--------------------职工信息的保存

{

EPNode p;

if((fp=fopen("职工名单txt","w"))==NULL){//

printf("无法打开'职工名单txt'!\n");

exit(0);

}

for(p=head->next;p;p=p->next)

{

fprintf(fp,"%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->born_time,p->work_time,p->degree,p->job,p->address,p->tele_num);

}

if(fclose(fp)){

printf("无法关闭'职工名单txt'!\n"); exit(0);

}

}

void Listfind(EPNode head)//----------------------职工信息的查找

{

int i,j;

EPNode p;

DataType x;

if(headnext==NULL){//链表为空

printf("名单中无职工信息,无法查询!\n");

return;

}

//返回主菜单

printf("\n");

printf("\t 职工信息查询 *** 作 \n");

printf("\t\n");

printf("\t1对姓名进行查询2对出生年月进行查询3对学历进行查询 \n");

printf("\t\n");

printf("\t4对工作年月进行查询5对职务进行查询 6对住址进行查询 \n");

printf("\t\n");

printf("\t7对电话进行查询 0回到主菜单 \n");

printf("\t\n");

while(1)

{

printf("请输入您要选择的 *** 作:");

scanf("%d",&i);

if(i==0)//输入0,退出查询系统,回到主菜单

break;

else if(i==1){//输入1,对姓名进行查询

p=headnext;

printf("请输入姓名:");

scanf("%s",xname);

j=0;

for(p;p;p=p->next){

if(strcmp(p->name,xname)==0){//如果存在这个人,那么j自加

++j;

printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->born_time,p->work_time,p->degree,p->job,p->address,p->tele_num);

}

}

if(j==0)//表示没有找到输入的信息

printf("职工名单中不存在此人!\n");

else printf("查询成功!请继续 *** 作!\n");

}

else if(i==2){//输入2,对出生年月进行查询

p=headnext;

printf("请输入出生年月:");

scanf("%d",&xborn_time);

j=0;

for(p;p;p=p->next){

if(p->born_time==xborn_time){//输入的出生年月在链表中存在

++j;//如果存在这个人,那么j自加

printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->born_time,p->work_time,p->degree,p->job,p->address,p->tele_num);

}

}

if(j==0)//表示没有找到输入的信息

printf("职工名单中没有这个时间出生的!\n");

else printf("查询成功!请继续 *** 作!\n");

}

else if(i==4){//输入4,对工作年月进行查询

p=headnext;

printf("请输入工作年月:");

scanf("%d",&xwork_time);

j=0;

for(p;p;p=p->next){

if(p->work_time==xwork_time){

++j;//如果存在这个人,那么j自加

printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->born_time,p->work_time,p->degree,p->job,p->address,p->tele_num);

}

}

if(j==0)//表示没有找到输入的信息

printf("职工名单中没有这个时间工作的!\n");

else printf("查询成功!请继续 *** 作!\n");

}

else if(i==3){//输入3,对学历进行查询

p=headnext;

printf("请输入学历:");

scanf("%s",xdegree);

j=0;

for(p;p;p=p->next){

if(strcmp(p->degree,xdegree)==0){

++j;//如果存在这个人,那么j自加

printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->born_time,p->work_time,p->degree,p->job,p->address,p->tele_num);

}

}

if(j==0)//表示没有找到输入的信息

printf("职工名单中没有这种学历的!\n");

else printf("查询成功!请继续 *** 作!\n");

}

else if(i==5){//输入5,对职务进行查询

p=headnext;

printf("请输入职务:");

scanf("%s",xjob);

j=0;

for(p;p;p=p->next){

if(strcmp(p->job,xjob)==0){

++j;//如果存在这个人,那么j自加

printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->born_time,p->work_time,p->degree,p->job,p->address,p->tele_num);

}

}

if(j==0)//表示没有找到输入的信息

printf("职工名单中没有这种职务的!\n");

else printf("查询成功!请继续 *** 作!\n");

}

else if(i==6){//输入6,对住址进行查询

p=headnext;

printf("请输入住址:");

scanf("%s",xaddress);

j=0;

for(p;p;p=p->next){

if(strcmp(p->address,xaddress)==0){

++j;//如果存在这个人,那么j自加

printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->born_time,p->work_time,p->degree,p->job,p->address,p->tele_num);

}

}

if(j==0)//表示没有找到输入的信息

printf("职工名单中没有住这的!\n");

else printf("查询成功!请继续 *** 作!\n");

}

else if(i==7){//输入7,对电话号码进行查询

p=headnext;

printf("请输入电话:");

scanf("%d",&xtele_num);

j=0;

for(p;p;p=p->next){

if(p->tele_num==xtele_num){

++j;//如果存在这个人,那么j自加

printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->born_time,p->work_time,p->degree,p->job,p->address,p->tele_num);

}

}

if(j==0)//表示没有找到输入的信息

printf("职工名单中没人用这个号码!\n");

else printf("查询成功!请继续 *** 作!\n");

}

else if(1<0||i>7)//输入任意不是上述数字的,那么久显示输入错误

printf("输入出错!请再次输入!\n");

printf("\n");

printf("\t 职工信息查询 *** 作 \n");

printf("\t\n");

printf("\t1对姓名进行查询2对出生年月进行查询3对学历进行查询 \n");

printf("\t\n");

printf("\t4对工作年月进行查询5对职务进行查询 6对住址进行查询 \n");

printf("\t\n");

printf("\t7对电话进行查询 0回到主菜单 \n");

printf("\t\n");

}

}

void print(EPNode head)//---------------------职工信息的显示

{

for(EPNode p=head->next;p;p=p->next)//输出所有职工的信息

printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->born_time,p->work_time,p->degree,p->job,p->address,p->tele_num);

}

void Listsort(EPNode head)//-----------------职工信息的排序

{

int t,n=0,m,flag=1;

EPNode p,q,s;

if(head->next==NULL){//职工链表为空

printf("名单中无职工信息,无法排序!\n\n");

return;

}

printf("\t 职工信息排序 *** 作 0回到主菜单 \n");

printf("\t\n");

printf("\t1对性别进行排序 2对出生年月进行排序 \n");

printf("\t\n");

printf("\t3对工作年月进行排序4显示全部职工信息 \n");

printf("\t\n");

while(1)

{

printf("请输入您要选择的 *** 作:");

scanf("%d",&t);

if(t==0)//输入0,退出排序系统,回到主菜单

break;

else if(t==1){//输入1,对性别进行排序

n=0,m,flag=1;

for(p=head;NULL!=p;p=p->next)//统计职工人数

n++;

for(m=1;flag&&m<=n;m++)

{

flag=0;

for(q=head->next,p=head,s=p;q;s=p,p=q,q=q->next)

{

if(p->sex>q->sex)//p为当前节点,p的性别>p的后继节点的性别

{

if(head==p)//p为头结点

{

head->next=q->next;

head=q;

q->next=p;//交换节点信息

q=head->next;

p=head;

}

else

{

p->next=q->next;

q->next=p;

s->next=q;

p=q;

q=p->next;

}

flag=1;

}

}

}

printf("排好序的信息如下:\n");

print(head);//输出所有节点的信息

return;

}

else if(t==2){//输入2,对出生年月进行排序

n=0,m,flag=1;

for(p=head;NULL!=p;p=p->next)//统计职工人数

n++;

for(m=1;flag&&m<=n;n++)//确定其不是小于2项,如果小于2项无需排序

{

flag=0;

for(q=head->next,p=head,s=p;q;s=p,p=q,q=q->next)

{

if(p->born_time>q->born_time)//对出生年月进行排序

{

if(head==p)

{

head->next=q->next;

head=q;

q->next=p;

q=head->next;

p=head;

}

else

{

p->next=q->next;

q->next=p;

s->next=q;

p=q;

q=p->next;

}

flag=1;

}

}

}

printf("排好序的信息如下:\n");

print(head);

return;

}

else if(t==3){//输入3,按工作时间进行排序

n=0,m,flag=1;

for(p=head;NULL!=p;p=p->next)

n++;

for(m=1;flag&&m<=n;n++)

{

flag=0;

for(q=head->next,p=head,s=p;q;s=p,p=q,q=q->next){

if(p->work_time>q->work_time){

if(head==p){

head->next=q->next;

head=q;

q->next=p;

q=head->next;

p=head;

}

else{

p->next=q->next;

q->next=p;

s->next=q;

p=q;

q=p->next;

}

flag=1;

}

}

}

printf("排好序的信息如下:\n");

print(head);

return;

}

else if(t==4)

{

print(head);

}

else if(t!=0&&t!=1&&t!=2&&t!=3&&t!=4)

printf("输入出错,无法进行排序,请再次输入!\n\n");

printf("\n");

printf("\t 职工信息排序 *** 作 0回到主菜单 \n");

printf("\t\n");

printf("\t1对性别进行排序 2对出生年月进行排序 \n");

printf("\t\n");

printf("\t3对工作年月进行排序4显示全部职工信息 \n");

printf("\t\n");

}

}

void main()

{

DataType x;

EPNode head;

int i,n;

FILE fp;

ListInitiate(&head);//初始化链表

printf("\n");

printf("\t\n");

printf("\t欢迎进入职工管理系统!!!\n");

printf("\t\n");

printf("请在输入数据之间加以空格隔开,再输完一个数据组后,请用回车键进入下一组数据的输入\n");

printf("请输入要录入的职工人数:");//输入要录入的职工人数

scanf("%d",&n);

printf("请输入职工信息:\n姓名 性别 出生年月 工作年月 学历 职务 住址 电话\n");

for(i=0;i<n;i++)//职工信息的输入

{

scanf("%s %c %d %d %s %s %s %d",xname,&xsex,&xborn_time,&xwork_time,xdegree,xjob,xaddress,&xtele_num);

head=ListInsert(head,x);

}

if((fp=fopen("职工名单txt","w"))==NULL){

printf("\t无法打开'职工名单txt'!\n");

exit(0);

}

save(head,fp);

if(fclose(fp)){

printf("\t无法关闭'职工名单txt'!\n"); exit(0);

}

printf("\n");

printf("\t 主菜单 \n");

printf("\t\n");

printf("\t1新增职工信息 2删除职工信息 3查询职工信息\n");

printf("\t\n");

printf("\t4修改职工信息 5职工信息排序 0结束管理系统\n");

printf("\t\n");

while(1)

{

printf("请输入您要选择的 *** 作:");

scanf("%d",&i);

if(i==0)//输入0,结束系统

{

printf("\t\t您已经选择退出职工管理系统!!!\n");

break;

}

else if(i==1){//输入1,新增一名职工

printf("请输入职工信息:\n姓名、性别、出生年月、工作年月、学历、职务、住址、电话\n");

scanf("%s %c %d %d %s %s %s %d",xname,&xsex,&xborn_time,&xwork_time,xdegree,xjob,xaddress,&xtele_num);

head=ListInsert(head,x);

printf("新增成功!请继续 *** 作!\n");

save(head,fp);//保存在文件中

}

else if(i==2){//输入2,删除一名职工

ListDelete(head);

if((fp=fopen("职工名单txt","w"))==NULL){

printf("无法打开'职工名单txt'!\n");

exit(0);

}

save(head,fp);//保存在文件中

if(fclose(fp)){

printf("无法关闭'职工名单txt'!\n"); exit(0);

}

}

else if(i==3)//输入3,查找一名职工

Listfind(head);

else if(i==4){//输入4,修改职工信息

ListModify(head);

if((fp=fopen("职工名单txt","w"))==NULL){

printf("无法打开'职工名单txt'!\n");

exit(0);

}

save(head,fp);//保存在文件中

if(fclose(fp)){

printf("无法关闭'职工名单txt'!\n"); exit(0);

}

}

else if(i==5){//输入5,对职工信息进行排序

EPNode p=head;

Listsort(p);

}

//如果出入的不是上述任何一种情况就输出:输入出错

else printf("输入出错!请再次输入!\n");

printf("\n");

printf("\t 主菜单 \n");

printf("\t\n");

printf("\t1新增职工信息 2删除职工信息 3查询职工信息\n");

printf("\t\n");

printf("\t4修改职工信息 5职工信息排序 0结束管理系统\n");

printf("\t\n");

}

}

这是我以前自己写的一个,然后你自己修改下吧,功能都很全的。

什么是C语言?C语言的简介。

C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。

它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。

因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到C语言,具体应用比如单片机以及嵌入式系统开发。

语言特点:C是中级语言/C是结构式语言/C语言功能齐全/C语言适用范围大/简洁紧凑、灵活方便/运算符丰富/数据类型丰富/C是结构式语言/语法限制不太严格,程序设计自由度大/适用范围大,可移植性好。

高级语言和低级语言的区别是低级语言接近机器语言层面,高级语言接近人。高级,低级 指层面,不是指难度。

C/C++语言,Fortran语言, Pascal语言,java,VB 都是 高级语言。汇编语言,机器语言 是 低级语言。

C语言是目前最流行的高级语言,学会后根据学习和工作需要,再学其它语言会很方便。很容易举一反三,快速掌握。

1 写代码。这是最基础的一步,即实现C语言的源文件(c,必需),和可能的头文件(h,非必需)。

2 编译。将编写好的代码,通过编译工具,转换为目标文件。此步中,会对文件内部及包含的头文件进行语法语义的分析检查。如果出错,则必须返回到1步对代码进行修改,直到没有错误为止。

3 链接。将目标文件链接成可执行文件。此步会对文件直接的关联进行检查。如果出错需要返回到1修改代码。直到没有错误。

4 运行。这个是最后一步,也是C语言的最终目的。

在运行结果与期望不符时,需要检查原因,修改代码,重新执行1,2,3直到程序没有问题。

以上就是关于c语言程序全部的内容,包括:c语言程序、什么是C语言程序设计、C语言程序设计 与 高级语言程序设计得区别等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/zz/10208369.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存