圈群化(例如:微博网络意见领袖平民化特性之一)

C语言基础(10)
头文件Contact.h
#define _CRT_SECURE_NO_WARNINGS 1
#ifndef __CONTACT_H__
#define __CONTACT_H__
#include &stdio.h&
#include &string.h&
#include &stdlib.h&
#include &assert.h&
#define MAX_NAME 20
#define MAX_SRX 5
#define MAX_TELE 13
#define MAX_ADDR 30
#define INIT_NUM 3//初始大小
#define INC_NUM 10//每次扩容大小
#define FILENAME "contact.dat"
typedef struct Telnote
char name[MAX_NAME];
char sex[MAX_SRX];
char tele[MAX_TELE];
char addr[MAX_ADDR];
typedef struct Contact
struct Telnote*
}Contact, *P
void print_menu();
void init_contact(Pcon pcon);
void add_contact(Pcon pcon);
void del_contact(Pcon pcon);
void search_contact(Pcon pcon);
void modify_contact(Pcon pcon);
void clear_contat(Pcon pcon);
void sort_contact(Pcon pcon);
void show_contact(Pcon con);
void save_data(Pcon pcon);
#endif __CONTACT_H__
具体函数实现Contact.c
void print_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("***********0.*****保存并退出**********\n");
printf("**************************************\n");
void check_capacity(Pcon pcon)//检查是否需要扩容
if (pcon-&size == pcon-&capacity)
int sz = pcon-&capacity + INC_NUM;
Telnote * tmp = (Telnote *)realloc(pcon-&contact, sz*sizeof(Telnote));
//避免扩容失败,不能直接让pcon-&contact接受地址
pcon-&capacity += INC_NUM;
if ( tmp == NULL )
printf("扩容失败");
pcon-&contact =
void _add(Pcon pcon, Telnote *p)//从文件添加一个联系人信息到内存
assert(pcon);
check_capacity(pcon);
pcon-&contact[pcon-&size] = *p;
pcon-&size++;
void load_data(Pcon pcon)//从文件中读取数据
FILE *pFread = fopen(FILENAME, "r");
if (pFread == NULL)
perror("open file contact.dat for read error");
exit(EXIT_FAILURE);
while (fread(&telnote, sizeof(Telnote), 1, pFread))
_add(pcon, &telnote);
void save_data(Pcon pcon)//保存数据到文件中
int i = 0;
FILE *pFWrite = fopen(FILENAME, "w");
if (pFWrite == NULL)
perror("open file contact.dat for write error");
exit(EXIT_FAILURE);
for (i = 0; i& pcon-& i++)
fwrite(&(pcon-&contact[i]), sizeof(Telnote), 1, pFWrite);
free(pcon-&contact);
fclose(pFWrite);
void init_contact(Pcon pcon)//初始化通讯录
pcon-&size = 0;
pcon-&contact = (Telnote *)malloc(sizeof(Telnote)*INIT_NUM);
memset(pcon-&contact, 0, INIT_NUM * sizeof(Telnote));
pcon-&capacity = INIT_NUM;
load_data(pcon);
void add_contact(Pcon pcon)//手动加入一个联系人
assert(pcon);
check_capacity(pcon);
printf("请输入名字:&");
scanf("%s", pcon-&contact[pcon-&size].name);
printf("请输入性别:&");
scanf("%s", pcon-&contact[pcon-&size].sex);
printf("请输入年龄:&");
scanf("%d", &(pcon-&contact[pcon-&size].age));
printf("请输入电话:&");
scanf("%s", pcon-&contact[pcon-&size].tele);
printf("请输入地址:&");
scanf("%s", pcon-&contact[pcon-&size].addr);
pcon-&size++;
printf("插入成功\n");
static int find_entry(Pcon pcon, const char *name)//根据姓名查找联系人
int i = 0;
for (i = 0; i&pcon-& i++)
if (strcmp(pcon-&contact[i].name, name) == 0)
return -1;
void del_contact(Pcon pcon)//删除指定姓名的联系人
char find_name[MAX_NAME];
int index = 0;
int start = 0;
if (pcon-&size == 0)
printf("电话本已空,不能删除\n");
printf("请输入删除人的名字:&");
scanf("%s", find_name);
index = find_entry(pcon, find_name);
if (index == -1)
printf("要删除的人不存在\n");
for (start = index; start &pcon-&size - 1; start++)
pcon-&contact[start] = pcon-&contact[start + 1];
pcon-&size--;
printf("删除成功\n");
void show_contact(Pcon pcon)//显示全部联系人信息
int i = 0;
printf("%10s\t%5s\t%5s\t%15s\t%10s\n",
"name", "age", "sex", "tele", "addr");
for (i = 0; i&pcon-& i++)
printf("%10s\t%5d\t%5s\t%15s\t%10s\n",
pcon-&contact[i].name,
pcon-&contact[i].age,
pcon-&contact[i].sex,
pcon-&contact[i].tele,
pcon-&contact[i].addr);
void search_contact(Pcon pcon)//查找指定姓名的联系人
int index = 0;
char find_name[MAX_NAME];
printf("请输入查找人的姓名:&");
scanf("%s", find_name);
index = find_entry(pcon, find_name);
if (index == -1)
printf("查找的人不存在\n");
printf("%10s\t%5s\t%5s\t%15s\t%10s\n",
"name", "age", "sex", "tele", "addr");
printf("%10s\t%5d\t%5s\t%15s\t%10s\n",
pcon-&contact[index].name,
pcon-&contact[index].age,
pcon-&contact[index].sex,
pcon-&contact[index].tele,
pcon-&contact[index].addr);
void Swap(Telnote* telnote1, Telnote* telnote2)//一个交换函数
tmp = *telnote1;
*telnote1 = *telnote2;
*telnote2 =
void modify_contact(Pcon pcon)//更改指定联系人的信息
int index = 0;
char find_name[MAX_NAME];
printf("请输入要改的人的姓名:&");
scanf("%s", find_name);
index = find_entry(pcon, find_name);
if (index == -1)
printf("指定修改的人不存在\n");
printf("请输入名字:&");
scanf("%s", pcon-&contact[index].name);
printf("请输入性别:&");
scanf("%s", pcon-&contact[index].sex);
printf("请输入年龄:&");
scanf("%d", &(pcon-&contact[index].age));
printf("请输入电话:&");
scanf("%s", pcon-&contact[index].tele);
printf("请输入地址:&");
scanf("%s", pcon-&contact[index].addr);
printf("修改成功\n");
void clear_contat(Pcon pcon)//清空通讯录
pcon-&size = 0;
void sort_contact(Pcon pcon)//按姓名顺序排列通讯录
int i = 0;
int j = 0;
for (i = 0; i&pcon-&size - 1; i++)
for (j = 0; j&pcon-&size - 1 - j++)
if (strcmp(pcon-&contact[j].name, pcon-&contact[j + 1].name) & 0)
Swap(&(pcon-&contact[j]), &(pcon-&contact[j + 1]));
printf("排序成功\n");
测试函数 test.c
#include "contact.h"
void Test()
int input = 10;
init_contact(&my_con);
print_menu();
while (input)
printf("请选择(请输入数字):&");
scanf("%d", &input);
switch (input)
add_contact(&my_con);
del_contact(&my_con);
case SEARCH:
search_contact(&my_con);
case MODIFY:
modify_contact(&my_con);
case SHOW:
show_contact(&my_con);
case CLEAR:
clear_contat(&my_con);
case SORT:
sort_contact(&my_con);
case EXIT:
save_data(&my_con);
printf("输入有误请重新输入");
int main()
system("pause");
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:4892次
排名:千里之外
原创:47篇
(2)(1)(10)(17)(5)(4)(7)(1)C语言学生成绩管理系统,增加;查询;修改;排序;统计;文件_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
C语言学生成绩管理系统,增加;查询;修改;排序;统计;文件
上传于|0|0|文档简介
&&本系统主要完成对学生成绩的管理,包括添加、修改、删除,查询,统计信息以用户管理等六个方面。系统可以完成对各类信息的浏览、查询、添加、删除、修改等功能
阅读已结束,如果下载本文需要使用2下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩32页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢C语言(176)
题目:用C语言模拟实现一个通讯录,要求实现其添加、删除、修改、查找、显示和排序联系人信息的功能
解析:原代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include&stdio.h&
#include&string.h&
#define NAME_MAX 10
#define SEX_MAX 3
#define AGE_MAX 100
#define TEL_MAX 15
#define ADDR_MAX 20
#define PEOPLE_MAX 1000
typedef struct LINK
char name[NAME_MAX];
char sex[SEX_MAX];
char tel[TEL_MAX];
char addr[ADDR_MAX];
typedef struct PEOPLE
linkman count[1000];
//在通讯录里遍历到指定联系人
static int search(people cou, const char *name)
for (int i = 0; i & cou-& i++)
if (strcmp(name, (cou-&count[i]).name) == 0)
return -1;
//添加联系人
void add_linkman(people cou)
if (cou-&num == 1000)
printf(&通讯录已满,无法录入信息!\n&);
printf(&please input name:\n&);
scanf(&%s&, (cou-&count[cou-&num]).name);
printf(&please input sex:\n&);
scanf(&%s&, (cou-&count[cou-&num]).sex);
printf(&please input age:\n&);
scanf(&%d&, &(cou-&count[cou-&num]).age);
printf(&please input telephone:\n&);
scanf(&%s&, (cou-&count[cou-&num]).tel);
printf(&please input address:\n&);
scanf(&%s&, (cou-&count[cou-&num]).addr);
cou-&num++;
//删除联系人
void delete_linkman(people cou)
char name[NAME_MAX];
int i = 0;
if (cou-&num == 0)
printf(&通讯录已空,无法删除信息!\n&);
printf(&请输入要删除人的名字:&);
scanf(&%s&, &name);
printf(&\n&);
int ret = search(cou, name);//找到要删除的联系人
if (ret == -1)
printf(&此人不存在,删除失败!\n&);
for (i = i&cou-& i++)
cou-&count[i] = cou-&count[i + 1];
cou-&num--;
printf(&删除成功!\n&);
//修改指定联系人信息
void change_linkman(people cou)
char name[NAME_MAX];
int i = 0;
printf(&请输入要修改人的名字:&);
scanf(&%s&, name);
if (cou-&num == 0)
printf(&当前通讯录为空,修改失败!\n&);
int ret = search(cou, name);//找到要修改信息的联系人
if (ret != -1)
printf(&please input name again:\n&);
scanf(&%s&, (cou-&count[ret]).name);
printf(&please input the sex:\n&);
scanf(&%s&, (cou-&count[ret]).sex);
printf(&please input the age:\n&);
scanf(&%d&, &(cou-&count[ret]).age);
printf(&please input the telephone:\n&);
scanf(&%s&, (cou-&count[ret]).tel);
printf(&please input the address:\n&);
scanf(&%s&, (cou-&count[ret]).addr);
printf(&修改信息成功!\n&);
//查找联系人
void find_linkman(people cou)
char name[NAME_MAX];
int i = 0;
printf(&请输入要查找人的名字:&);
scanf(&%s&, name);
if (cou-&num == 0)
printf(&当前通讯录为空,查找失败!\n&);
int ret = search(cou, name);//找到要查找的联系人
if (ret != -1)
printf(&%s\t%s\t%d\t%s\t%s\t&,
(cou-&count[ret]).name,
(cou-&count[ret]).sex,
(cou-&count[ret]).age,
(cou-&count[ret]).tel,
(cou-&count[ret]).addr);
printf(&\n&);
printf(&此联系人不存在,查找失败!\n&);
//显示所有联系人信息
void display_linkman(people cou)
int i = 0;
if (cou-&num == 0)
printf(&当前通讯录为空,显示失败!\n&);
for (i = 0; i&cou-& i++)
printf(&%s\t%s\t%d\t%s\t%s&,
(cou-&count[i]).name,
(cou-&count[i]).sex,
(cou-&count[i]).age,
(cou-&count[i]).tel,
(cou-&count[i]).addr);
printf(&\n&);
void empty_linkman(people cou)//清空所有联系人
cou-&num = 0;
struct stu
char name[15];
void name_sort(people cou)//按名字顺序排序所有人
int i = 0;
int j = 0;
if (cou-&num == 0)
printf(&当前通讯录为空,排序失败!\n&);
for (i = 0; i&cou-&num - 1; i++)//冒泡实现联系人的排序
for (j = 0; j&cou-&num - i - 1; j++)
if (strcmp(cou-&count[j].name, (cou-&count[j + 1]).name)&0)
linkman tmp = cou-&count[j];
cou-&count[j] = cou-&count[j + 1];
cou-&count[j + 1] =
printf(&排序成功!\n&);
//菜单界面
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(&*********0.退出*********************\n&);
printf(&************************************\n&);
int main()
int opp = 1;
struct PEOPLE
cou.num = 0;
while (opp)
printf(&请选择&:&);
scanf(&%d&, &opp);
switch (opp)
add_linkman(&cou);
delete_linkman(&cou);
find_linkman(&cou);
change_linkman(&cou);
display_linkman(&cou);
empty_linkman(&cou);
name_sort(&cou);
printf(&输入有误,请重新输入&:\n&);
程序运行结果截图:
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:122804次
积分:1575
积分:1575
排名:千里之外
原创:263篇
评论:12条
(8)(4)(1)(7)(15)(10)(3)(221)C语言教学(61)
2878: 结构体–学生信息排序
Description
定义存放一个学生信息的结构体类型,学生信息包括:姓名,学号,性别,院系,要求在随意输入5个学生的相关信息后,按照学号从小到大顺序输出这些学生的信息。
先输入5名学生的信息,按学号顺序排序输出后在输入要统计的院系名称
先按学号从小到大的顺序输出学生信息
Sample Input
Sample Output
数据输出之间有4个空格
#include &stdio.h&
#include &string.h&
#define N 5
struct Student
char name[8];
char num[10];
char dept[20];
int main( )
struct Student stu[N],
for(i=0; i&N; i++)
%s",stu[i].name, stu[i].num,&stu[i].sex, stu[i].dept);
for(j=0; j&N-1; j++)
for(i=0; i&N-j-1; i++)
if (strcmp(stu[i].num,stu[i+1].num)&0)
tmp=stu[i];
stu[i]=stu[i+1];
for(i=0; i&N; i++)
printf("%s
%s\n",stu[i].name, stu[i].num,stu[i].sex,stu[i].dept);
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:5309283次
积分:82070
积分:82070
排名:第12名
原创:2100篇
转载:10篇
评论:6597条
文章:453篇
阅读:1562656
文章:500篇
阅读:1657577
文章:16篇
阅读:47815
迂者自勉:
※能取得一点点突破,就是进步
※并肩学生与不良学风坚决斗争
※甘为草根,仰慕草根之力量
※还原大学和大学学习之本色
∞心系教育,热爱生活
∞我的专栏-
∞给我写信
∞不用QQ-它会谋杀整段的时间
友情链接:周兆熊为IT学子解惑、
(11)(34)(7)(1)(22)(35)(26)(22)(3)(6)(17)(13)(25)(19)(5)(4)(15)(45)(45)(44)(5)(45)(37)(107)(123)(64)(82)(78)(27)(43)(30)(15)(9)(13)(24)(43)(65)(60)(13)(16)(63)(56)(41)(18)(29)(10)(28)(32)(43)(46)(7)(10)(59)(83)(51)(38)(20)(32)(15)(22)(30)(28)(16)(4)(38)(1)

我要回帖

更多关于 kol意见领袖 的文章

 

随机推荐