C语言程序设计,植物信息查询。有十种植物的信息,根据植物名查询该植物的所属科属,形态特征和使用价值
答案:1 悬赏:20 手机版
解决时间 2021-02-17 00:30
- 提问者网友:那叫心脏的地方装的都是你
- 2021-02-16 00:58
C语言程序设计,植物信息查询。有十种植物的信息,根据植物名查询该植物的所属科属,形态特征和使用价值
最佳答案
- 五星知识达人网友:長槍戰八方
- 2021-02-16 02:25
植物数据我列举了一些放在txt文件中,程序从txt文件读取加载到链表中,再通过用户输入名称查找链表信息。
txt文件格式每行一个植物:植物名 空格 科属 空格 形态特征 空格 使用价值 回车。
八宝景天 景天科景天属 多年生肉质草本植物 园林绿化,具有药用价值。
玉兰 木兰科木兰属玉兰亚属玉兰 落叶乔木 园林绿化。
银杏 银杏科银杏属 落叶大乔木 可食用,药用,园林绿化。
槐树 豆科 五叶槐 园林绿化。
红枫 槭树科槭树属 落叶小乔木 园林绿化。
海棠 属蔷薇科苹果亚科苹果属 落叶小乔木 园林绿化。
三色堇 堇菜科堇菜属 多年生草本植物 具有药用价值,中国多用作园林绿化。
月季 蔷薇科蔷薇属 半常绿低矮灌木 园林绿化。
杨树 杨柳科杨属 乔木或灌木 园林绿化。
石榴树 石榴科 落叶灌木或小乔木 园林绿化,果实食用,药用。
#include
#include
#include
typedef struct plant
{
char name[20];
char genera[50];
char charas[1000];
char value[100];
struct plant *next;
}PLANT;
PLANT *readFile(FILE *fp);//返回头节点指针
PLANT *findByName(PLANT *plantHead,char name[]);
int main()
{
char name[20];
PLANT *plantHead=NULL,*plantFind=NULL;
FILE *fp=NULL;
if((fp=fopen("C:\list.txt","rt+"))==NULL)
{
printf("Cannot open file strike any key exit!");
exit(1);
}
plantHead=readFile(fp);
printf("请输入要查找的植物名称:");
scanf("%s",name);
plantFind=findByName(plantHead,name);
printf("%s的所属科属:%s
形态特征:%s
使用价值:%s",plantFind->name,plantFind->genera,plantFind->charas,plantFind->value);
return 0;
}
PLANT *findByName(PLANT *plantHead,char name[])
{
while(plantHead->next!=NULL)
{
if(!strcmp(plantHead->next->name,name))
return plantHead->next;
plantHead=plantHead->next;
}
return NULL;
}
PLANT *readFile(FILE *fp)//返回头节点指针
{
PLANT *plantNew=NULL,*plantHead=NULL,*plantTail=NULL;
printf("----开始读取文件到链表----
");
fseek(fp, 0, SEEK_SET);//文件流指针重置到开头
plantHead=(PLANT *)malloc(sizeof(PLANT));
plantHead->next=NULL;
plantNew=(PLANT *)malloc(sizeof(PLANT));
plantNew->next=NULL;
while(fscanf(fp,"%s %s %s %s",plantNew->name,plantNew->genera,plantNew->charas,plantNew->value)!=-1)
{
if(plantHead->next==NULL)
plantHead->next=plantNew;
else
plantTail->next=plantNew;
plantTail=plantNew;
printf("读取信息:名:%s 科属:%s 特征:%s 价值:%s
",plantNew->name,plantNew->genera,plantNew->charas,plantNew->value);
plantNew=(PLANT *)malloc(sizeof(PLANT));
plantNew->next=NULL;
}
free(plantNew);
printf("----数据读取完成----
");
return plantHead;
}追问开发环境是code::blocks应该怎么写代码呀
txt文件格式每行一个植物:植物名 空格 科属 空格 形态特征 空格 使用价值 回车。
八宝景天 景天科景天属 多年生肉质草本植物 园林绿化,具有药用价值。
玉兰 木兰科木兰属玉兰亚属玉兰 落叶乔木 园林绿化。
银杏 银杏科银杏属 落叶大乔木 可食用,药用,园林绿化。
槐树 豆科 五叶槐 园林绿化。
红枫 槭树科槭树属 落叶小乔木 园林绿化。
海棠 属蔷薇科苹果亚科苹果属 落叶小乔木 园林绿化。
三色堇 堇菜科堇菜属 多年生草本植物 具有药用价值,中国多用作园林绿化。
月季 蔷薇科蔷薇属 半常绿低矮灌木 园林绿化。
杨树 杨柳科杨属 乔木或灌木 园林绿化。
石榴树 石榴科 落叶灌木或小乔木 园林绿化,果实食用,药用。
#include
#include
#include
typedef struct plant
{
char name[20];
char genera[50];
char charas[1000];
char value[100];
struct plant *next;
}PLANT;
PLANT *readFile(FILE *fp);//返回头节点指针
PLANT *findByName(PLANT *plantHead,char name[]);
int main()
{
char name[20];
PLANT *plantHead=NULL,*plantFind=NULL;
FILE *fp=NULL;
if((fp=fopen("C:\list.txt","rt+"))==NULL)
{
printf("Cannot open file strike any key exit!");
exit(1);
}
plantHead=readFile(fp);
printf("请输入要查找的植物名称:");
scanf("%s",name);
plantFind=findByName(plantHead,name);
printf("%s的所属科属:%s
形态特征:%s
使用价值:%s",plantFind->name,plantFind->genera,plantFind->charas,plantFind->value);
return 0;
}
PLANT *findByName(PLANT *plantHead,char name[])
{
while(plantHead->next!=NULL)
{
if(!strcmp(plantHead->next->name,name))
return plantHead->next;
plantHead=plantHead->next;
}
return NULL;
}
PLANT *readFile(FILE *fp)//返回头节点指针
{
PLANT *plantNew=NULL,*plantHead=NULL,*plantTail=NULL;
printf("----开始读取文件到链表----
");
fseek(fp, 0, SEEK_SET);//文件流指针重置到开头
plantHead=(PLANT *)malloc(sizeof(PLANT));
plantHead->next=NULL;
plantNew=(PLANT *)malloc(sizeof(PLANT));
plantNew->next=NULL;
while(fscanf(fp,"%s %s %s %s",plantNew->name,plantNew->genera,plantNew->charas,plantNew->value)!=-1)
{
if(plantHead->next==NULL)
plantHead->next=plantNew;
else
plantTail->next=plantNew;
plantTail=plantNew;
printf("读取信息:名:%s 科属:%s 特征:%s 价值:%s
",plantNew->name,plantNew->genera,plantNew->charas,plantNew->value);
plantNew=(PLANT *)malloc(sizeof(PLANT));
plantNew->next=NULL;
}
free(plantNew);
printf("----数据读取完成----
");
return plantHead;
}追问开发环境是code::blocks应该怎么写代码呀
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯