C语言ll作业01
问题|答案
-|-|-
这个作业属于哪个课程|班级链接
这个作业的要求在哪里|作业要求
这个作业的目标|利用本学期所学内容制作小程序。
参考文献|作业要求里提供的一系列文献,百度百科,码云。
二。作业正文
1.需求分析
(1.)利用主函数里面嵌套五个不同功能的函数依次进行程序编写。
(2.)将涉及到数组、结构、函数、指针,for循环,switc语句,while语句等等。
2.程序代码
'''
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct people
{
int num;
char name[10];
char phone[12];
};
struct people s[50];
int p1=0,p2=50;
void sort();
void add();
void cancle();
void amend();
int Find(int a,int b);
void search();
int main()
{
while (1)
{
printf("======= 通讯录 ======= \n\n");
printf("====== 界面 ====== \n");
printf("人数:%d 人 | 剩余空间:%d 人\n\n",p1,p2);
for(int i=0;i<p1;i++)
{
printf("编号:%2d | 姓名:%s | 电话:%s\n",s[i].num, s[i].name, s[i].phone);
}
int a;
printf(" 1) 排序 2) 添加 3) 删除 \n");
printf(" 4) 修改 5) 查找 6) 退出程序 \n\n");
printf("请输入操作:");
scanf("%d",&a);
switch(a)
{
case 1:
sort();
break;
case 2:
add();
break;
case 3:
cancle();
break;
case 4:
amend();
break;
case 5:
search();
break;
case 6:
printf("已退出程序");
return 1;
default:
printf("错误操作请重新输入\n");
break;
}
}
}
void sort()
{
printf("\n请选择排序的方式\n");
printf("1) 编号排序 2) 姓名排序\n");
int x=0;
scanf("%d",&x);
struct people temp;
switch(x)
{
case 1:
for(int i=0;i<p1 -1;i++)
{
for(int j=0;j<p1 - 1 - i;j++)
{
if(s[j].num > s[j + 1].num)
{
temp = s[j];
s[j] = s[j+1];
s[j+1] = temp;
}
}
}
break;
case 2:
for(int i=0;i<p1 -1;i++)
{
for(int j=0;j<p1 - 1 - i;j++)
{
if(strcmp(s[j].name , s[j + 1].name) > 0)
{
temp = s[j];
s[j] = s[j+1];
s[j+1] = temp;
}
}
}
break;
default:
printf("错误操作请重新输入");
system("cls");
break;
}
}
void add()
{
int b=1;
if(p2<=0)
{
printf("通讯录已满\n");
}
else
{
printf("\n添加操作:\n");
printf("请输入操作位置:");
scanf("%d",&s[p1].num);
if(Find(s[p1].num,b))
{
printf("请输入联系人姓名:");
scanf("%s",&s[p1].name);
printf("请输入联系人电话:");
scanf("%s",&s[p1].phone);
printf("\n");
p1++;
p2--;
}
}
}
void cancle()
{
int a,b = 2,x;
printf("\n删除操作:\n");
printf("请输入操作位置:");
scanf("%d",&a);
x=Find(a,b);
if(x)
{
for(int i=x;i<p1;i++)
{
s[i-1]=s[i];
}
p1--;
p2++;
}
}
void amend()
{
int a,b,x=2;
char* name, * phone;
printf("\n修改操作:\n");
printf("请输入操作位置:");
scanf("%d",&a);
x=Find(a,b);
if(x)
{
name = s[x-1].name;
phone = s[x-1].phone;
for(int i=0;i<p1;i++)
{
if(s[i].num == a)
{
printf("已擦除原有信息,请重新键入\n\n");
printf("请输入联系人姓名:");
scanf("%s",name);
printf("请输入联系人电话:");
scanf("%s",phone);
}
}
printf("此处无数据\n\n");
}
}
int Find(int a,int b)
{
if(a > 50 || a<1)
{
printf("处理编号超过阈值\n\n");
return 0;
}
else
{
for(int i=0;i<p1;i++)
{
if(s[i].num == a)
{
if(b == 1)
{
printf("此处已有数据\n\n");
return 0;
}
else if (b == 2)
{
return i + 1;
}
}
}
if(b==2)
{
printf("此处无数据\n\n");
}
}
return 1;
}
void search()
{
int n=-1;
char str[12];
printf("\n\n请输入你要查找联系人的姓名或电话号码:");
scanf("%s",str);
for(int i=0;i<p1;i++)
{
if(strcmp(str,s[i].phone)==0||strcmp(str,s[i].name)==0)
{
printf("编号:%2d | 姓名:%s | 电话:%s\n",s[i].num, s[i].name, s[i].phone);
return;
}
}
if(n==-1)
{
printf("查无此人\n\n");
}
return;
}
4.程序调用图与流程图
5.功能测试
- 添加功能
- 删除功能
- 查找功能
- 排序功能