GDPU 数据结构 天码行空1

1. 病历信息管理

实现病历查询功能。具体要求如下:
定义一个结构体描述病人病历信息(病历号,姓名,症状);完成功能如下:
输入功能:输入5个病人的信息;
查询功能:输入姓名,在5个病历中进行查找,如果找到则显示该人的信息,如果没有找到,则显示“查无此人”。
假设病历类型名为patient,要求使用指针,并使用以下两个函数(函数的实现自行完成):
void readin(patient *p);//用来输入病人信息。
void search(patient *p,char *x);//根据姓名查询病人病历信息,并打印出来。

#include 
#include 

int i;
struct patient {
    char name[100];//病人名称
    int id;//病历号
    char symptoms[10000];//症状
};

//用来输入病人信息。
void readin(struct patient* p) {
    printf("请输入名称: ");
    scanf("%9s", p->name);

    printf("请输入病历号: ");
    scanf("%d", &(p->id));

    printf("请输入症状: ");
    getchar(); 
    scanf("%s", p->symptoms); 
}

//根据姓名查询病人病历信息,并打印出来。
void search(struct patient* p, char* x) {
    for (i = 0; i < 5; i++) {
        if (strcmp(p[i].name, x) == 0) {
            printf("名称: %s\n", p[i].name);
            printf("病历号: %d\n", p[i].id);
            printf("症状: %s\n", p[i].symptoms);
            return;
        }
    }
    printf("查无此人\n", x);
}

int main() {
    struct patient patients[5];
	
	// 输入信息 
    for (i = 0; i < 5; i++) {
        readin(&patients[i]);
    }
	
	//输入查询的名字并查询 
    char searchname[10];
    printf("Enter a name to search: ");
    scanf("%9s", searchname);
    search(patients, searchname);

    return 0;
}

2. 1-2+3 函数

设计一个函数,计算S=1-2+3-4+5-6+……+/-N的值,并计算你所设计的函数的时间复杂度。

时间复杂度:O(n) (貌似可以推公式找到O(1)的做法)

#include

#define N 1010
int s[N];

int main()
{
	int n;
	for(int i = 1; i < N; i++)// o(n)
	{
		int flag = i%2==1 ? 1 : -1;
		s[i] = s[i-1] + flag * i;
	}
	scanf("%d",&n);
	printf("%d\n",s[n]);
	return 0;
}

3. 排序

设计一个从三个整数类型数据中得到最大数据值和次大数值的函数,并设计一个主函数调用该函数。要求在主函数中显示出最大值和次大值。

#include
#include
using namespace std;

void print(int a[3])
{
	sort(a,a+3);//默认排升序
	cout <<"最大数为:"<< a[2] << " ,次大数为:" << a[1] <<endl;
}

int main()
{
	cout << "请输入3个整型数据" << endl;
	int a[3] = {0};
	for(int i = 0; i < 3; i++)
		cin >> a[i];
	print(a);
}

你可能感兴趣的:(数据结构实验,数据结构,算法)