精华内容
下载资源
问答
  • C语言链表

    2020-04-14 20:29:56
    #C语言链表的操作 我的第一篇博客文章 你们好啊,这是我的第一篇博客文章,写的是C语言的链表,...void menu(); //菜单 LinkList *initList(); //初始化 void addList(LinkList *); //添加数据 void printList(Link...

    #C语言链表的操作

    我的第一篇博客文章

    你们好啊,这是我的第一篇博客文章,写的是C语言的链表,嘿嘿,来咯!!

    C语言实现链表

    我们先来看下基本操作

    //函数声明
    void menu();          //菜单
    LinkList *initList();      //初始化
    void addList(LinkList *);        //添加数据
    void printList(LinkList *);    //输出数据
    int lengList(LinkList *);    //长度
    void delmaxList(LinkList *);    //删除最大值
    void insertList(LinkList *);    //插入数据
    void delList(LinkList *);    //删除数据
    void numList(LinkList *);   //排序数据
    void seekList(LinkList *);   //按元素查找位置
    void seatList(LinkList *);   //按位置查找元素
    

    所包含的头文件

    #include <stdio.h>
    #include <stdlib.h>
    
    typedef struct Node
    {
    	int data;        //数据域
    	struct Node* next;       //指针域
    }LinkList;
    

    主函数

    int main()
    {
    	LinkList *L;
    	int n;
    	int out = 1;
    	menu();
    	while(1)
    	{
    		printf("输入要执行的功能:");
    		scanf("%d",&n);
    		switch(n)
    		{
    		case 1:
    			L=initList();
    			addList(L);
    			break;
    		case 2:
    			printList(L);
    			break;
    		case 3:
    			printf("链表长度为:%d\n\n",lengList(L));
    			break;
    		case 4:
    			delmaxList(L);
    			printf("删除后链表为:");
    			printList(L);
    			break;
    		case 5:
    			insertList(L);
    			printf("插入后链表为:");
    			printList(L);
    			break;
    		case 6:
    			delList(L);
    			printf("删除后链表为:");
    			printList(L);
    			break;
    		case 7:
    			numList(L);
    			printf("排序后链表为:");
    			printList(L);
    			break;
    		case 8:
    			seekList(L);
    			break;
    		case 9:
    			seatList(L);
    			break;
    		case 10:
    			menu();
    			break;
    		case 0:
    			out = 0;
    			break;
    		}
    		if(out == 0)
    		{
    			printf("系统运行结束!\n");
    			break;
    		}
    	}
    	return 0;
    }
    

    其操作

    //菜单
    void menu()
    {
    	printf("|===============================|\n");
    	printf("|-------1.添加数据              |\n");
    	printf("|-------2.输出数据              |\n");
    	printf("|-------3.输出长度              |\n");
    	printf("|-------4.删除最大值            |\n");
    	printf("|-------5.插入数据              |\n");
    	printf("|-------6.删除数据              |\n");
    	printf("|-------7.排序数据              |\n");
    	printf("|-------8.按元素查找位置        |\n");
    	printf("|-------9.按位置查找元素        |\n");
    	printf("|-------10.显示菜单栏           |\n");
    	printf("|-------0.退出系统              |\n");
    	printf("|_______________________________|\n");
    }
    
    初始化
    LinkList *initList(void)
    {
    	LinkList *L;
    	L = (LinkList *)malloc(sizeof(LinkList));
    	L->next = NULL;     //L指向的下一个节点赋空
    	return L;
    }
    
    //添加数据
    void addList(LinkList *L)    //采用头插法
    {
    	LinkList *p;
    	int n,i;
    	printf("输入创建节点个数:");
    	scanf("%d",&n);
    	for(i=0;i<n;i++)     //循环建立结点
    	{
    		printf("输入第%d个数:",i+1);
    		p = (LinkList *)malloc(sizeof(LinkList));
    		scanf("%d",&p->data);
    		p->next = L->next; //将*p插入原开始结点前,头结点之后
    		L->next = p;
    	}
    	printf("添加成功!\n\n");
    }
    
    输出数据
    void printList(LinkList *L)
    {
    	LinkList *p;
    	p = L->next;  //p指向开始节点
    	while(p != NULL)  //p不为空,输出*p节点的data域
    	{
    		printf("%d ",p->data);
    		p = p->next;  //p移到下一个结点
    	}
    	printf("\n\n");
    }
    
    //长度
    int lengList(LinkList *L)
    {
    	LinkList *p;
    	int n=0;
    	p = L->next;
    	while(p != NULL)
    	{
    		n++;
    		p = p->next;
    	}
    	return n;
    }
    
    ///删除最大元素
    void delmaxList(LinkList *L)
    {
    	LinkList *p = L->next;
    	LinkList *pre = L;
    	LinkList *max = p;
    	LinkList *maxp = pre;
    	while(p != NULL)
    	{
    		if(max->data < p->data)          //找到更大的节点
    		{
    			max = p;               //更改max
    			maxp = pre;            //更改maxp
    		}
    		pre = p;
    		p = p->next;              //p,pre 同步向后移一个字节
    	}
    	maxp->next = max->next;          // 实现删除*max节点
    	free(max);
    	printf("删除成功!\n");
    }
    
    插入数据
    void insertList(LinkList *L)
    {
    	int j=0;
    	int i,n;
    	printf("输入插入的元素:");
    	scanf("%d",&n);
    	printf("输入插入的位置:");
    	scanf("%d",&i);
    	LinkList *p = L;
    	LinkList *s;
    	while(j<i-1 && p!=NULL)
    	{
    		j++;
    		p = p->next;
    	}
    	if(p == NULL || j>i-1)
    		printf("位置插入错误!\n\n");
    	else
    	{
    		s = (LinkList *)malloc(sizeof(LinkList));
    		s->data = n;
    		s->next = p->next;  //将*s插入到*p之后
    		p->next = s;
    		printf("插入成功!\n\n");
    	}
    }
    
    ///删除数据
    void delList(LinkList *L)
    {
    	int s=0;
    	int i,n;
    	printf("输入要删除的位置:");
    	scanf("%d",&i);
    	LinkList *p = L;
    	LinkList *q;
    	while(s<i-1 && p!=NULL)
    	{
    		s++;
    		p = p->next;
    	}
    	if(p == NULL)
    		printf("位置错误!\n\n");
    	else
    	{
    		q = p->next;
    		if(q == NULL)
    		{
    			printf("位置错误!\n\n");
    		}
    		n = q->data;
    		p->next = q->next;   //删除*q节点
    		free(q);  //释放q
    	}
    }
    
    排序数据
    void numList(LinkList *L)   
    {
    	int i,j,t;
    	LinkList *p,*q;
    	int len = lengList(L);
    	for(i=0,p=L->next ; i<len-1 ; i++,p=p->next)
    	{
    		for(j=i+1,q=p->next ; j<len ; j++,q=q->next)
    		{
    			if(p->data > q->data)
    			{
    				t = p->data;
    				p->data = q->data;
    				q->data = t;
    			}
    		}
    	}
    }
    
    ///按元素查找位置
    void seekList(LinkList *L)
    {
    	int s=0,n;
    	printf("输入元素:");
    	scanf("%d",&n);
    	LinkList *p = L->next;
    	while(p != NULL && p->data != n)
    	{
    		p = p->next;
    		s++;
    	}
    	if(p == NULL)
    		printf("输入错误!\n");
    	else
    		printf("%d为链表中的第%d位!\n\n",n,s+1);
    }
    
    按位置查找元素
    void seatList(LinkList *L)
    {
    	int s=0;
    	int n,i;
    	printf("输入位置:");
    	scanf("%d",&i);
    	LinkList *p = L;
    	while(s<i && p !=NULL)
    	{
    		s++;
    		p = p->next;
    	}
    	if(p == NULL)
    		printf("位置错误!\n\n");
    	else
    	{
    		n = p->data;
    		printf("链表中的第%d位存放的元素为:%d\n\n",i,n);
    	}
    }
    

    好啦!结束了。。。。

    展开全文
  • C语言超市管理系统(c语言

    万次阅读 多人点赞 2020-07-01 12:29:10
    int menu1();//打印主菜单函数 int menu2();//打印管理员菜单函数 int menu3();//打印顾客函数 void CreateGoods();//录入商品信息函数 void ShowGoods();//显示库存信息函数 void ShopCart

    超市管理系统
    1.包括管理员和顾客
    2.管理员有登入,录入商品信息,显示所有商品信息功能
    3.顾客有购物车和结算功能
    4.购物车具有显示商品列表,显示购物车商品,往购物车添加商品的功能

    全部代码下载链接:点击前往下载链接

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    函数

    int menu1();//打印主菜单函数 
    int menu2();//打印管理员菜单函数 
    int menu3();//打印顾客函数 
    void CreateGoods();//录入商品信息函数 
    void ShowGoods();//显示库存信息函数
    void ShopCart();//对购物车进行操作
    int ShopCartMenu();//打印购物车菜单
    void ShowCart();//显示购物列表
    void add();//在购物车里添加商品 
    void UpdateKu();//更新购物车信息函数 
    void  calculate();//计算所购商品价格并修改保存 
    

    建立库存函数

    void CreateGoods()
    {//手动建立库存信息
    	FILE *fp;//定义文件指针 
    	int i;
    	printf("请输入需要录入的商品个数:\n");
    	scanf("%d",&n);//输入数量 
    	printf("请依次输入货物信息:\n");
        printf("--------------------------------------------\n");
    	for(i=0;i<n;i++) 
    	{//向文件中写入信息
    		printf("第%d个商品:\n",i+1);
    		printf("货号:"); 
    		fflush(stdin);//清空输入流
    		gets(goods[i].ID);//输入货号
    		
    		printf("品名:");
    		fflush(stdin);//清空输入流
    		gets(goods[i].brand);//输入品名 
    		
    		printf("进价: ");
    		fflush(stdin);//清空输入流
    		scanf("%lf",&goods[i].inprice);//输入进价 
    		
    		printf("售价:");
    		fflush(stdin);//清空输入流
    		scanf("%lf",&goods[i].outprice);//输入售价 
    		
    		printf("数量:");
    		fflush(stdin);//清空输入流
    		scanf("%d",&goods[i].storage);//输入数量 
    
    		
    		printf("保质期:"); 
    		fflush(stdin);//清空输入流
    		gets(goods[i].date);//输入货号
    		printf("\n");
    	}
    	if((fp=fopen("kucun.txt","w"))==NULL) 
    	{//判断文件是否创建失败
    		printf("创建文件失败。\n");
    		return ;
    	}
    	//fprintf(fp,"货号       品名      单价    库存量   保质期\n");
    	for(i=0;i<n;i++)
    	{//把货物信息写进文件
    		fprintf(fp,"%-11s%-15s%-8.3f%-8.3f%-11d%-11s\n",goods[i].ID,goods[i].brand,goods[i].inprice,goods[i].outprice,goods[i].storage,goods[i].date);
    	}
    	//fwrite(goods,sizeof(struct mar),N,cun);二进制文件输出 
    	fclose(fp);//关闭文件 
    	printf("信息导入成功\n");
    	return ;
    }
    

    在购物车里添加商品

    void add()
    {//在购物车里添加商品 
    	FILE *fp,*fp1;//fp表示kucun文件,fp1表示cart文件 
    	struct node *p1,*p,*p2;//定义节点指针 
    	int i,n;//n表示商品数量 
    	char s[20];//表示货号或者品名 
    	char choice1[20],choice2[20];//选择项(y继续,n继续) 
    	
    	
    	do{
    		printf("输入所需物品的名称或货号:\n");
    		fflush(stdin);//清空输入流 
    		gets(s);//输入货号或者品名 	
    		if((fp=fopen("kucun.txt","r"))==NULL)
    		{//打开文件 
    			printf("打开文件失败\n");
    			continue;
    		}
    		for(i=0;i<N;i++)
    		{//循环N次 
    			fscanf(fp,"%s%s%*lf%lf%d",goods[i].ID,goods[i].brand,&goods[i].outprice,&goods[i].storage);//从文件中读取货物信息 
    			
    			if((strcmp(goods[i].ID,s)==0||strcmp(goods[i].brand,s)==0)&&goods[i].storage>0)//找输入对应的商品 
    			{
    				printf("已找到所需商品:\n");
    				printf("--------------------------------------------\n");
    				printf("货号       品名           单价    数量\n");
    				printf("%-11s%-15s%-8.3f%-7d\n",goods[i].ID,goods[i].brand,goods[i].outprice,goods[i].storage,goods[i].date);//输出所需物品信息 
    				
    				printf("请输入所需商品数量: ");
    				scanf("%d",&n);//商品数量 
    				if(n>goods[i].storage)
    				{//判断是否还可以购买不 
    					printf("该商品库存不足\n");
    					break;
    				}
    				printf("\n是否购买此商品?(Y/N)\n");
    				fflush(stdin);//清空输入流 
    				scanf("%s",choice1);//输入一个选项 
    				if(strcmp(choice1,"Y")==0||strcmp(choice1,"y")==0)
    				{//输入y/Y表示购买此商品 
    					p=new node;//生成新节点 
    					if(p==NULL)
    					{//分配内存失败 
    						printf("内存申请失败!\n");
    						exit(1);//退出 
    					}	
    					p->number=n;//商品数量 
    					p->buy=goods[i];//货物信息 
    					p->next=NULL;
    					p1=cart;//把头结点赋给p1 	
    					if(cart==NULL)//头结点为空 
    					cart=p;//把节点赋值给头结点 
    					else
    					{
    						while(p1->next!=NULL)
    						p1=p1->next;//把链表循环到尾部 
    						p->next=p1->next; 
    						p1->next=p;//把新节点p挂在链表尾部 
    					}
    				}
    				else
    				printf("输入错误\n");
    				break;//找到商品结束循环 
    			}
    		}	
    		if(i==N)//循环完毕还没找到对应商品 
    		printf("未找到所需物品\n");
    		fclose(fp);//关闭文件 
    	
    		UpdateKu();//更新库存信息函数 
    		printf("是否继续购物?(Y/N)\n");
    		fflush(stdin);//清空输入流 
    		scanf("%s",choice2);//输入选项
    		if(strcmp(choice2,"y")!=0&&strcmp(choice2,"Y")!=0)
    		printf("放弃购买,返回菜单!\n");
    		
    	}while(strcmp(choice2,"y")==0||strcmp(choice2,"Y")==0);//y/Y继续循环 
    	return ;
    } 
    

    计算所购商品价格并修改保存

    void calculate()
    {//计算所购商品价格并修改保存
    	struct node *p;
    	p=cart;//把购物车(cart)链表赋给p 
    	double sum=0;//购买商品应付钱数 
    	double pay;//购买商品实付钱数 
    	FILE *fp;//定义文件指针 
    	int i;
    	printf("以下是购物清单:\n");
    	ShowCart();//调用函数显示购物列表信息 
    	
    	
    	if((fp=fopen("kucun.txt","r"))==NULL)
    	{//打开文件  
    		printf("打开文件失败\n");
    		return ;
    	}
    	
    	for(i=0;i<N;i++)
    	{//从文件中读取信息 
    		fscanf(fp,"%s%s%*lf%lf%d",goods[i].ID,goods[i].brand,&goods[i].outprice,&goods[i].storage);
    	}
    	fclose(fp);//关闭文件 
    	
    	while(p!=NULL)
    	{//当链表不为空时 
    		sum=sum+p->buy.outprice*p->number;//计算应付钱数 
    		for(i=0;i<N;i++)
    		{//找出对应商品库存量 
    			if(strcmp(goods[i].ID,p->buy.ID)==0)
    			{//找到对应商品 
    				goods[i].storage=goods[i].storage-p->number;//库存量变化 
    				break;
    			}
    		} 
    		p=p->next;//指向下一个节点 
    	}
    	
    	printf("总计:%-8.3f\n",sum);//输出购买物品共需多少钱 
    	printf("输入实付金额:");
    	scanf("%lf",&pay);
    	printf("实付:  %-8.3f    找零:    %8.3f\n",pay,pay-sum);
    	
    	if((fp=fopen("kucun.txt","w"))==NULL)
    	{//打开文件 
    		printf("写入文件失败\n");
    		return ;
    	}
    	for(i=0;i<N;i++)
    	{//向文件中写入信息 
    		fprintf(fp,"%-11s%-15s%-8.3f%-8.3f%-7d\n",goods[i].ID,goods[i].brand,goods[i].inprice,goods[i].outprice,goods[i].storage);
    	}
    	fclose(fp);//关闭文件 
    	
    	return ;
    }
    
    

    全部代码下载链接:点击前往下载链接

    展开全文
  • 通过C语言实现有一个通讯录 通讯录具有以下的功能1.手机用户添加 、2.手机用户删除、3.手机用户查找 、4.手机用户修改、 5.手机用户查看 、6.手机用户清空、7.手机用户排序 、8.手机用户保存、0.退出程序 代码如下:...

    通过C语言实现有一个通讯录
    通讯录具有以下的功能1.手机用户添加 、2.手机用户删除、3.手机用户查找 、4.手机用户修改、
    5.手机用户查看 、6.手机用户清空、7.手机用户排序 、8.手机用户保存、0.退出程序

    代码如下:
    text.c

    #define _CRT_SECURE_NO_WARNINGS 1
    #include "contact.h"
    
    void menu()
    {
    	printf("***************************************\n");
    	printf("**********1.手机用户添加        2.手机用户删除***********\n");
    	printf("**********3.手机用户查找        4.手机用户修改********\n");
    	printf("**********5.手机用户查看        6.手机用户清空*********\n");
    	printf("**********7.手机用户排序        8.手机用户保存**********\n");
    	printf("**********0.退出程序                          **********\n");
    	printf("***************************************\n");
    }
    void text()
    {
    	int input=0;
    	contact con;
    	InitContact(&con);
    	do
    	{
    		menu();
    		printf("请输入选择:>");
    		scanf("%d", &input);
    		switch (input)
    		{
    			case ADD:
    				AddContact(&con);
    				break;
    			case DEL:
    				DelContact(&con);
    				break;
    			case SEARCH:
    				SearchContact(&con);
    				break;
    			case MODIFY:
    				ModifyContact(&con);
    				break;
    			case SHOW:
    				ShowContact(&con);
    				break;
    			case EMPTY:
    				EmptyContact(&con);
    				break;
    			case SORT:
    				SortContact(&con);
    				break;
    			case EXIT:
    				Destroy(&con);
    				printf("退出通讯录");
    				break;
    			case 8:
    				Save(&con);
    				printf("手机用户保存");
    				break;
    			default:
    				printf("选择错误\n");
    				break;
    		}
    	} while (input);
    }
    int main()
    {
    	text();
    	system("pause");
    	return 0;
    }
    

    contact.c

    #define _CRT_SECURE_NO_WARNINGS 1
    
    #include"contact.h"
    
    void InitContact(contact*pcon)
    {
    	pcon->data = (peolnfo*)malloc(sizeof(peolnfo)* 1);
    	pcon->size = 0;
    	pcon->capticty = 1;
    	printf("初始化成功!\n");
    }
    
    void AddContact(contact*pcon)
    {
    	assert(pcon != NULL);
    	if (pcon->size == pcon->capticty)
    	{
    		Capticty(pcon);
    	}
    	printf("请输入姓名:>");
    	scanf("%s", pcon->data[pcon->size].name);
    	printf("请输入电话号码:>");
    	scanf("%s", pcon->data[pcon->size].tele);
    	printf("请输入分类:>");
    	scanf("%d", &pcon->data[pcon->size].type);
    	printf("请输入电子邮件地址:>");
    	scanf("%s", pcon->data[pcon->size].email);
    	printf("请输入条目编号:>");
    	scanf("%d", &pcon->data[pcon->size].num);
    	pcon->size++;
    	printf("添加成功\n");
    }
    
    void ShowContact( contact*pcon)
    {
    	int i = 0;
    	printf("%-10s\t%-5s\t%-5s\t%-12s\t%-20s\n", "姓名", "电话号码", "分类", "电子邮件地址", "条目编号");
    	for (i = 0; i < pcon->size; i++)
    	{
    		
    		printf("%-10s\t%-12s\t%-5d\t%-12s\t%-5d\n",
    		pcon->data[i].name,
    		pcon->data[i].tele,
    		pcon->data[i].type,
    		pcon->data[i].email,
    		pcon->data[i].num);
    	}
    	
    }
    int Search(contact*pcon, char name[])
    {
    	int i = 0;
    	for (i = 0; i < pcon->size; i++)
    	{
    		if (strcmp(pcon->data[i].name,name)==0)
    		{
    			return i;
    		}
    	}
    	return -1;
    }
    
    void DelContact(contact*pcon)
    {
    	if (pcon->size == 0)
    	{
    		printf("通讯录已空无法删除\n");
    	}
    	else
    	{
    		char name[MAX] = { 0 };
    		printf("请输入姓名:>");
    		scanf("%s", name);
    		int t = Search(pcon, name);
    		if (t == -1)
    		{
    			printf("输入姓名有误无法删除\n");
    		}
    		else
    		{
    			int i = 0;
    			for (i = t; i < pcon->size - 1; i++)
    			{
    				pcon->data[i] = pcon->data[i + 1];
    			}
    			pcon->size--;
    			printf("删除成功\n");
    		}
    
    	}
    	
    }
    
    void SearchContact( contact*pcon)
    {
    	char name[MAX] = { 0 };
    	printf("请输入姓名:>");
    	scanf("%s", name);
    	int t=Search(pcon, name);
    	if (t == -1)
    	{
    		printf("输入有误查无此人\n");
    	}
    	else
    	{
    		printf("查找成功\n");
    		printf("%-10s\t%-5s\t%-5s\t%-12s\t%-20s\n", "姓名", "电话号码", "分类", "电子邮件地址", "条目编号");
    		printf("%-10s\t%-12s\t%-5d\t%-12s\t%-5d\n",
    			pcon->data[t].name,
    			pcon->data[t].tele,
    			pcon->data[t].type,
    			pcon->data[t].email,
    			pcon->data[t].num);
    	}
    
    }
    
    void ModifyContact(contact*pcon)
    {
    	char name[MAX] = { 0 };
    	printf("请输入姓名:>");
    	scanf("%s", name);
    	int t = Search(pcon, name);
    	if (t == -1)
    	{
    		printf("输入有误查无法修改\n");
    	}
    	else
    	{
    		printf("请重新输入姓名:>");
    		scanf("%s", pcon->data[t].name);
    		printf("请重新输入电话号码:>");
    		scanf("%s", pcon->data[t].tele);
    		printf("请重新输入分类:>");
    		scanf("%d", &pcon->data[t].type);
    		printf("请重新输入电子邮件地址:>");
    		scanf("%s", pcon->data[t].email);
    		printf("请重新输入条目编号:>");
    		scanf("%d", &pcon->data[t].num);
    	}
    	printf("修改成功\n");
    }
    
    void EmptyContact(contact*pcon)
    {
    	pcon->size = 0;
    	printf("清空成功\n");
    }
    
    void SortContact(contact*pcon)
    {
    	int i = 0;
    	for (i = 0; i < pcon->size; i++)
    	{
    		int t = 0;
    		for (t = 1; t < pcon->size; t++)
    		{
    
    			int ret=strcmp(pcon->data[i].name, pcon->data[t].name);
    			if (ret<0)
    			{	
    				char tmp[NAME_MAX];
    				strcpy(tmp, pcon->data[i].name);
    				strcpy(pcon->data[i].name, pcon->data[t].name);
    				strcpy(pcon->data[t].name, tmp);
    			}
    
    		}
    	}
    	printf("排序成功\n");
    	ShowContact(pcon);
    }
    
    void Capticty(contact*pcon)
    {
    	int x = pcon->capticty;
    	assert(pcon != NULL);
    	if (pcon->size == pcon->capticty)
    	{
    		pcon->data = (peolnfo*)realloc(pcon->data, sizeof(peolnfo)*((x)* 2));
    	}
    	pcon->capticty = x * 2;
    	printf("增容成功!\n");
    }
    
    void Destroy(contact*pcon)
    {
    	assert(pcon != NULL);
    	pcon->size = 0;
    	pcon->capticty = 0;
    	free(pcon->data);
    	pcon = NULL;
    }
    
    void Save(contact*pcon)
    {
    	contact *p;
    	FILE*fp;
    	p = pcon;
    	fp = fopen("C:\\Desktop\\bookslist.txt", "w");
    	fprintf(fp,"%-10s\t%-5s\t%-5s\t%-8s\t%-8s\n", "姓名", "电话号码", "分类", "电子邮件地址", "条目编号");
    
    	for (int i = 0; i < pcon->size; i++)
    	{
    
    		fprintf(fp,"%-10s\t%-5s\t%-5d\t%-12s\t%-20d\t\n",
    			pcon->data[i].name,
    			pcon->data[i].tele,
    			pcon->data[i].type,
    			pcon->data[i].email,
    			pcon->data[i].num);
    	}
    	fclose(fp);
    	printf("保存成功!\n");
    }
    
    

    contact.h

    #ifndef __CONTACT_H__
    #define __CONTACT_H__
    
    #define _CRT_SECURE_NO_WARNINGS 1
    #include<stdio.h>
    #include<stdlib.h>
    #include<assert.h>
    #include<string.h>
    #include<malloc.h>
    
    enum Option
    {
    	EXIT,
    	ADD,
    	DEL,
    	SEARCH,
    	MODIFY,
    	SHOW,
    	EMPTY,
    	SORT
    };
    #define MAX 1000
    #define NAME_MAX 20
    #define SEX_MAX 5
    #define TELE_MAX 12
    #define ADDR_MAX 20
    typedef struct peolnfo
    {
    	char name[NAME_MAX];
    	char tele[TELE_MAX];
    	int type;
    	char email[ADDR_MAX];
    	int num;
    }peolnfo;
    
    typedef struct contact
    {
    	peolnfo*data;
    	int size ;
    	int capticty;
    }contact;
    
    void InitContact(contact*pcon);
    void AddContact(contact*pcon);
    void ShowContact(contact*pcon);
    void DelContact(contact*pcon);
    void SearchContact(contact*pcon);
    void ModifyContact(contact*pcon);
    void EmptyContact(contact*pcon);
    void SortContact(contact*pcon);
    void Capticty(contact*pcon);
    void Destroy(contact*pcon);
    void Save(contact*pcon);
    
    #endif //__CONTACT_H__
    
    展开全文
  • /* *文件名menu.c *作者* *时间2012.09 *说明界面函数实现 *版本V1.0 */ /* 文件包含 */ #include"printmenu.h" #include"stu.h" #include"admin.h" #include"common.h" #include"tooler.h #include"tea.h" /* * */ ...
  • /* * 文件名 menu.c * 作者 * * 时间 2012.09 * 说明界面函数实现 * 版本 V1.0 */ /* 文件包含 */ #include"printmenu.h" #include"stu.h" #include"admin.h" #include"common.h" #include"tooler.h" #include"tea.h...
  • c语言计算器

    千次阅读 2018-11-22 22:03:32
    c语言计算器两种方法 //一般做法 #include&lt;stdio.h&gt; #include&lt;windows.h&gt; //#include&lt;assert.h&gt; void menu() { printf("**************************\n"); ...

    c语言计算器两种方法

    //一般做法
    #include<stdio.h>
    #include<windows.h>
    //#include<assert.h>
    void menu()
    {
    	printf("**************************\n");
    	printf("****欢迎来到计算器页面****\n");
    	printf("**** 1.add    2.mul  *****\n");
    	printf("*****3.sub    4.div1 *****\n");
    	printf("*****0.exit          *****\n");
    	printf("**************************\n");
    }
    
    int add(int x, int y)
    {
    	return x + y;
    }
    
    int mul(int x, int y)
    {
    	return x * y;
    }
    
    int sub(int x, int y)
    {
    	return x - y;
    }
    
    int div1(int x, int y)
    {
    	return x / y;
    }
    
    int main()
    {
    	int n = 1;
    	menu();
    	while (n)
    	{
    		printf("请输入选项:\n");
    		scanf("%d", &n);
    		int x = 0, y = 0;
    		/*printf("请输入两个整数!\n");
    		scanf("%d%d", &x, &y);*/    
            //若将两个数字输入放在此处会出现输入错误时不能退出系统,而是显示“输入两个整数”的提示
    		switch (n)
    		{
    		case 1:
    			printf("请输入两个整数!\n");
    			scanf("%d%d", &x, &y);
    			printf("%d\n", add(x, y));
    			break;
    		case 2:
    			printf("请输入两个整数!\n");
    			scanf("%d%d", &x, &y);
    			printf("%d\n", mul(x, y));
    			break;
    		case 3:
    			printf("请输入两个整数!\n");
    			scanf("%d%d", &x, &y);
    			printf("%d\n", sub(x, y));
    			break;
    		case 4:
    			printf("请输入两个整数!\n");
    			scanf("%d%d", &x, &y);
    			printf("%d\n", div1(x, y));
    			break;
    		case 0:
    			printf("退出计算器!\n");
    			break;
    		default:
    			printf("输入错误,请重新输入!\n");
    		}
    	}
    }


    //使用函数指针数组解决计算器问题
    
    #include<stdio.h>
    #include<windows.h>
    //#include<assert.h>
    
    void menu()
    {
    	printf("**************************\n");
    	printf("****欢迎来到计算器页面****\n");
    	printf("**** 1.add    2.mul  *****\n");
    	printf("*****3.sub    4.div1 *****\n");
    	printf("*****0.exit          *****\n");
    	printf("**************************\n");
    }
    
    int add(int x, int y)
    {
    	return x + y;
    }
    
    int mul(int x, int y)
    {
    	return x * y;
    }
    
    int sub(int x, int y)
    {
    	return x - y;
    }
    
    int div1(int x, int y)
    {
    	return x / y;
    }
    
    int main()
    {
    	int n = 1;
    	menu();
    	while (n)
    	{
    		printf("请输入选项:\n");
    		scanf("%d", &n);
    		int(*arr[5])() = { 0,add,mul,sub,div1 };//转移表
            //定义一个函数指针数组,存放函数地址
    		if (n >= 0 && n < 5)
    		{
    			int x = 0, y = 0;
    			printf("请输入两个整数:>\n");
    			scanf("%d%d", &x, &y);
    			printf("%d\n", (*arr[n])(x,y));//输出结果
    		}
    		else
    		{
    			printf("输入有误,请重新输入!\n");
    			scanf("%d", &n);
    		}
    	}
    	system("pause");
    	return 0;
    }
    两种方法相比,第一种相似代码较多,比较冗余;第二种代码简洁直观,程序效率高。
    展开全文
  • C语言 扫雷

    2019-12-03 16:09:31
    #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <time.h> #define ROW 9 ...int Menu() { printf("1.开始游戏 "); printf("0....
  • C语言扫雷

    2019-09-04 20:33:33
    // ConsoleApplication31.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include <iostream> #include <math.h> #include <time.h> #define ROW 9 ...void menu(...
  • C语言实现扫雷

    2018-05-27 19:08:00
    实现用C语言编写一个扫雷游戏 大家想必都玩过扫雷,无论那个版本都有难度供已选择,下面来分享一个自己用C语言编写的扫雷游戏吧! 编写语言:C语言 编写软件:visual studio 2017 ...void Menu() { ...
  • kmp 算法 简洁版 c语言实现 | c语言编程博客 15-7-1 C语言编程博客 每天学一点,每天都在进步 MENU KKMMPP 算算法法 简简洁洁版版 CC语语言言实实现现 Date: 2015年4月1日 Posted by: qisikai In: 小代码 kmp算法 是...
  • C语言简易计算器

    2020-02-28 14:20:14
    重新用C语言做了一个简易的计算器 int main()//主函数 { while(1) { menu(); } } void menu()//菜单介绍界面 { int a,b,c; printf("\n\n\t\t\t\t这是一个计算器\n"); printf("\t\t\t\t先后输入两个数\n...
  • C语言通讯录

    2016-08-07 20:23:04
    #include #include #include typedef struct ATNN //定义结构体 { char name[20]; char sex[4]; char age[3]; char tel[12]; char addr[50];...void menu()//菜单 { printf("\n************************
  • c语言扫雷初阶

    2021-01-28 19:42:04
    C语言实现扫雷小游戏 代码实现: #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<time.h> #include<stdlib.h> #define ROW 7 #define COL 7 #define ROWS ROW+2 #define COLS COL...
  • C语言简易版扫雷

    千次阅读 多人点赞 2020-11-01 18:55:39
    C语言实现简易版扫雷。 二、基本流程 1.菜单界面。 2.创建地图 (两个地图)。 3.初始化地图。 4.打印地图。 5.程序读取玩家输入的要翻开位置的坐标,并校验。 6.如果不是地雷,统计当前位置周围雷的个数, 并显示到...
  • C语言实现简易五子棋

    2020-12-16 22:58:28
    本文实例为大家分享了C语言实现简易五子棋的具体代码,供大家参考,具体内容如下 #define _CRT_SECURE_NO_WARNINGS #include #include #include #define ROW 5 #define COL 5 char g_broad[ROW][COL]; void menu();...
  • 贪吃蛇是个非常经典的游戏,用C语言来实现也是一个好玩的事情。这个游戏我写完后放在知乎,竟然点赞的人数超级多。我觉得大家喜欢,一个方面是因为写得简单,大家都能看得懂,一个可扩展性还是非常强的。我试了说...
  • C语言简单计算器

    2020-02-24 17:05:06
    C语言实现简单的计算器功能。 简单计算器,实现简单的加减乘除功能,选择对应的运算符输出运算符对应的编号,然后输入我们要计算的两个数,程序会给出计算结果。 效果演示 简单计算器代码 /* 简单计算器 name:zsh...
  • C语言实现万年历效果

    2021-01-20 06:07:24
    本文实例为大家分享了C语言实现万年历的具体代码,供大家参考,具体内容如下 #include #include #include #define str SUN MON TUE WED THU FRI SAT void menu(); //操作菜单 int leap(int year); //判断某年...
  • c语言实现扫雷

    2019-04-09 23:24:49
    C语言实现扫雷 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> int menu(){ printf("=========================\n"); printf("1.开始游戏\n"); printf("0.结束...
  • C语言扫雷游戏

    2019-09-23 15:36:36
    C语言扫雷游戏 1>第一次下子,不炸死。 2>坐标周围没雷,可以实现展开。 首先,需要创立一个game.h的头文件,以及game.c的源文件,还有包括主函数的test.c文件 一.创建菜单 void menu() { printf("**********...
  • 展开全部问题比较多,主要是两个:e68a84e8a2ad...menu函数最后又调用menu,没必要。改了一下,你看看。#include#includestructstudent{charname[30];/*名字肯定是字符串型*/intnumber[30]...
  • 原标题:用C语言写个——简单的ATM系统今天我来写个小小的程序吧,大学生的作业,ATM程序系统,代码也就一点点,这个程序超级简单的哈,涉及到的也就C语言的 一点点知识点罢了,也没多少。下面我把代码发出来哈#...
  • c语言课程设计

    2016-05-23 21:25:00
    1.查看该程序,体会C语言的中的核心语句是如何使用的 1)该程序采用函数组成模块化结构 2)main函数中,首先调用menu()函数产生菜单 3)然后通过不停接收用户的按键,分别判断是什么操作 4)然后设置飞机和子弹移动 5)...
  • 本文实例为大家分享了C语言超市管理系统设计的具体代码,供大家参考,具体内容如下 #include #include #include #define NUM 5 struct item{ char brand[20]; char id[10]; float in_price; float out_price; ...
  • C语言进制转换

    2020-05-27 19:26:26
    #include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h>...void menu(); void main() { int choice; while(1) { menu(); printf(“Please choose(0-4
  • #include"stdio.h" #include"stdlib.h" #define MAX_NAME 11 #define MAX_DETAIL 21 #define MENU_COUNT 9 #define DATA_FILE "fa.dat" typedef wnum_fi_type { income=1, payout=-1 }fi_type; typedef struct_fi_in
  • #include"stdio.h"#include"string.h"#include"stdlib.h"#include"conio.h"void mainmenu(int);int languagemenu();void query(float,int);float deposit(float,int);float withdraw(float,int);int main(){int exit...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 753
精华内容 301
关键字:

c语言menu

c语言 订阅