C++多文件编译问题(1)

首先我们应该知道include命令可以理解为照搬引用的文件到该位置,然后对于每个引用了头文件的源文件(.cpp),相应的变量或者说是参数(形参和实参)都应该有相应的声明,而对于声明,结构体和函数可以多次声明,但是不能重复定义变量或者定义结构体。

而每个文件里的每个变量都应该有自己的声明与之对应,例如对于函数中的形参和实参应该在前面有相应的类型声明只有这样才能成功编译。

#define MAX 2000
#include<string>
using namespace std;
struct person
{
	string name; //姓名
	int sex; //性别:1男 2女
	int age; //年龄
	string phone; //电话
	string addr; //住址
};
struct addressbooks
{
	struct person personarray[MAX]; //通讯录中保存的联系人数组
	int m_size; //通讯录中人员个数
};

void showmenu();
void addperson(struct addressbooks* a);
void showperson(struct addressbooks* a);
int isexist(struct addressbooks* a, string t);
void deletepersion(struct addressbooks*a);

 

#include<iostream>
#include<string>
#include"head1.h"
using namespace std;
void showmenu() {
	cout << "***************************" << endl;
	cout << "*****  1、添加联系人  *****" << endl;
	cout << "*****  2、显示联系人  *****" << endl;
	cout << "*****  3、删除联系人  *****" << endl;
	cout << "*****  4、查找联系人  *****" << endl;
	cout << "*****  5、修改联系人  *****" << endl;
	cout << "*****  6、清空联系人  *****" << endl;
	cout << "*****  0、退出通讯录  *****" << endl;
	cout << "***************************" << endl;
}
void addperson(struct addressbooks* a) {
	if (a->m_size == MAX) {
		cout << "通讯录已满,无法添加" << endl;
		return;
	}
	else {
		string n;
		cout << "请输入姓名" << endl;
		cin >> a->personarray[a->m_size].name;

		cout << "请输入性别" << endl;
		cout << "1 --男" << endl << "2 --女" << endl;
		cin >> a->personarray[a->m_size].sex;

		cout << "请输入年龄" << endl;
		cin >> a->personarray[a->m_size].age;

		cout << "请输入联系方式" << endl;
		cin >> a->personarray[a->m_size].phone;

		cout << "请输入家庭地址" << endl;
		cin >> a->personarray[a->m_size].addr;

		cout << "输入成功";
		a->m_size++;
		system("pause");
		system("cls");
	}
}
void showperson(struct addressbooks* a) {
	if (a->m_size == 0) {
		cout << "通讯录里没有信息" << endl;
		return;
	}
	else {
		for (int i = 0; i < a->m_size; i++) {
			cout << "姓名:" << a->personarray[i].name << "\t";
			cout << "性别:" << (a->personarray[i].sex == 1 ? "男" : "女") << "\t";
			cout << "年龄:" << a->personarray[i].age << "\t";
			cout << "电话:" << a->personarray[i].phone << "\t";
			cout << "住址:" << a->personarray[i].addr << endl;
		}
	}
	system("pause");
	system("cls");
	return;
}
int isexist(struct addressbooks* a, string t) {
	for (int i = 0; i < a->m_size; i++) {
		if (a->personarray[i].name == t) {
			return i;
		}
	}
	return -1;
}
void deletepersion(struct addressbooks*a) {
	string t;
	cout << "请输入要查找的人的姓名" << endl;
	cin >> t;
	int ret = isexist(a, t);
	if (ret == -1) {
		cout << "查无此人" << endl;
	}
	else {
		struct person t = a->personarray[a->m_size - 1];
		a->personarray[a->m_size - 1] = a->personarray[ret];
		a->personarray[ret] = t;
		a->m_size--;
		cout << "找到此人并且删除成功" << endl;
	}
	system("pause");
	system("cls");
	return;
}

(3条消息) 【C言】结构体在多文件中的定义和声明_code_snow的博客-CSDN博客_结构体头文件声明(3条消息) 【C语言】结构体在多文件中的定义和声明_code_snow的博客-CSDN博客_结构体头文件声明

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值