本文目錄一覽:
- 1、一道c語言編程題。。急。。。
- 2、C語言題目求解
- 3、用c語言寫一個程序
一道c語言編程題。。急。。。
實現病歷查詢功能的代碼如下:
#define _CRT_SECURE_NO_WARNINGS
#include stdio.h
#include string.h
#include stdlib.h
//病人結構體
struct patient
{
char patientNum[20]; //病例號
char patientName[20]; //病人姓名
char patientInfo[20]; //病例
}myPatient[5] = {“”,””,””};
//輸入函數
void readin(patient *p)//輸入
{
printf(“請輸入5個病人的:病號,姓名,病例:\n”);
for (int i = 0; i 5; i++)
{
printf(“請輸入第%d位病人信息:\n”, i + 1);
scanf(“%s%s%s”, p[i].patientNum, p[i].patientName, p[i].patientInfo);
}
}
//查詢函數
void search(patient *p, char *x)
{
int i;
for ( i= 0; i 5; i++)
{
if (strcmp(x, p[i].patientName) == 0)
break;
}
if (i == 5)
printf(“查無此人\n”);
else
{
printf(“病號\t\t姓名\t\t病例\n”);
printf(“%s\t\t%s\t\t%s”, p[i].patientNum, p[i].patientName, p[i].patientInfo);
}
}
//點我頭像,入群.
int main()
{
readin(myPatient);
char searchName[20];
while (1)
{
printf(“請輸入要查詢的病人姓名:\n”);
scanf(“%s”, searchName);
search(myPatient, searchName);
printf(“是否繼續查詢?(y/n)\n”);
fflush(stdin);
int choice = getchar();
if (choice == ‘n’ || choice == ‘N’)
break;
}
return 0;
}
運行效果如下:
C語言題目求解
程序思路:
先對總數組按年齡從大到小(相同年齡按登記號從小到大)排序。這樣老年人部分就直接排序完成,並且在整個隊列的前部。之後再對後半部分(非老人)按登記號從小到大再次排列。這樣整個數組順序便是題目想要的順序。
一、初始化函數(或者說是登記函數),定義結構數組,並用隨機數填充數組。(結構成員按照題意設計)。你想要手動輸入1000個病人,就自己寫scanf。(病人個數定義為常量MAXP,為演示顯示方便常量值我設20,你改成題目的1000即可,年齡閥值也設常量,按題目值為60,可修改)。
二、兩次排序函數,先調用orderByAge做總排序並獲得老人個數,再調用order_notOldman對非老人排序即可。
PS:函數使用請看我的備註。函數所有異常只做返回不做處理。編程邊學邊用,多看多練,上手就會有樂趣。祝編程讓你快來。
#includestdio.h
#includestring.h
#includestdlib.h
#includetime.h
#define MAXP 20//最大病人數量
#define THD 60//判斷老年人的閥值,小於該值不是老人
typedef struct patient//病人結構體
{
char pNum[13];//12位病曆本號,最後一位給結束符號!
int age;//年齡
int pSeq;//登記順序
}PT;
PT *init();//初始化這裡用隨機數生成1000名病人,成功返回結構數組,失敗返回NULL
//年齡:20~90隨機數。病歷號格式:字母開頭PSQ+1+0000~0999登記號
int showPTS(PT *pts,int len);//列印數組
int orderByAge(PT *pts,int len,int *p_len_old,int threshold);//按年齡從大到小排序,年齡相同登記號小的在前(找出老齡人數據區間)
//參數1:總的結構數組;參數2:總數組長度;參數3:接收老年人的個數(傳地址);參數4:老年人閥值(本題就是60,小於閥值不是老年)
int order_notOldman(PT *pts,int len);//排序(非老人)。按登記號從小到大
int main()
{
PT *pts=NULL;
int len_old;
pts=init();
if(!orderByAge(pts,MAXP,len_old,THD))return 1;
printf(“對總結構數組,按年齡從大到小(年齡相同按登記號從小到大)順序排列後的數組為:\n”);
if(!showPTS(pts,MAXP))return 1;
printf(“其中老年人的個數是%d\n”,len_old);
if(!order_notOldman(pts[len_old],MAXP-len_old)) return 1;//老人都排在前面,從pts[len_old]地址開始就是非老人
printf(“對非老人的數組區域,按登記號從小到大順序排列後的數組為:\n”);
if(!showPTS(pts,MAXP))return 1;
return 0;
}
int showPTS(PT *pts,int len)
{
int i;
if(!pts || len==0)return 0;
for(i=0;ilen;i++)
printf(“病歷號:%s,年齡:%d,登記順序:%d\n”,pts[i].pNum,pts[i].age,pts[i].pSeq);
return 1;
}
PT *init()
{
static PT pts[MAXP];
int i,age;
char str_temp[100];
srand(time(NULL));
for(i=0;iMAXP;i++)
{
age=rand()%71+20;
pts[i].age=age;
pts[i].pSeq=i;
strcpy(pts[i].pNum,”PSQ”);
strcat(pts[i].pNum,itoa(i+10000,str_temp,10));
}
if(!showPTS(pts,MAXP))return NULL;
printf(“%d名病人登記完畢!\n===========================================\n”,MAXP);
return pts;
}
int orderByAge(PT *pts,int len,int *p_len_old,int threshold)
{
int i,j;
PT pt_temp;
if(!pts || len==0 || !p_len_old) return 0;
for(i=0;ilen-1;i++)
for(j=i+1;jlen;j++)
{
if((pts[i].agepts[j].age)||(pts[i].age==pts[j].age pts[i].pSeqpts[j].pSeq))
{
pt_temp=pts[i];
pts[i]=pts[j];
pts[j]=pt_temp;
}
}
//統計老人的個數
for(i=0;ilen;i++,*p_len_old=i)
if(pts[i].agethreshold) break;
return 1;
}
int order_notOldman(PT *pts,int len)
{
int i,j;
PT pt_temp;
if(!pts || len==0) return 0;
for(i=0;ilen-1;i++)
for(j=i+1;jlen;j++)
{
if(pts[i].pSeqpts[j].pSeq)
{
pt_temp=pts[i];
pts[i]=pts[j];
pts[j]=pt_temp;
}
}
return 1;
}
用c語言寫一個程序
如果不是作業或固定的課題,不要用C語言。C根本不適合程序開發。最好用面向對象的語言。當然在源碼網站里,必然有大師醫院管理軟體,但應該沒有C語言的。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/247182.html