GDPU 数据结构 天码行空1
1. 病历信息管理
实现病历查询功能。具体要求如下:
定义一个结构体描述病人病历信息(病历号,姓名,症状);完成功能如下:
输入功能:输入5个病人的信息;
查询功能:输入姓名,在5个病历中进行查找,如果找到则显示该人的信息,如果没有找到,则显示“查无此人”。
假设病历类型名为patient,要求使用指针,并使用以下两个函数(函数的实现自行完成):
void readin(patient *p);//用来输入病人信息。
void search(patient *p,char *x);//根据姓名查询病人病历信息,并打印出来。
#include <stdio.h>
#include <string.h>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<stdio.h>#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<iostream>
#include<algorithm>
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);
}