本文目录一览:
学了一学期的C语言,要做大作业。 求一个500行C语言程序代码。 可以在VC++6.0上运行的。
//户籍管理系统, 应该能满足你的要求。
//多给点财富吧
#includestdio.h
#includestdlib.h
typedef struct tagHuJiXinXi
{
char shfzhh[64]; //身份证号
char xm[16]; //姓名
char xb[8]; //性别
int nl; //年龄
char xl[64]; //学历
char zhzh[64]; //住址
char dh[32]; //电话
}HuJiXinXi,*PtHuJiXinXi;
void readfromfile();
void writetofile();
void tuichu();
void add();
void outputone();
void outputall();
void sortbyage();
void myrealloc();
void findbyagerange();
void del();
void alter();
void find();
void showmenu();
void processmenu(int m);
PtHuJiXinXi pt;
int count=0,capacity=16;
int main()
{
int m;
pt=(PtHuJiXinXi)calloc(capacity,sizeof(HuJiXinXi));
readfromfile();
while(1)
{
showmenu();
scanf("%d",m);
processmenu(m);
}
system("PAUSE");
return EXIT_SUCCESS;
}
void processmenu(int m)
{
switch(m)
{
case 0:
tuichu();
break;
case 1:
add();
break;
case 2:
del();
break;
case 3:
alter();
break;
case 4:
outputall();
break;
case 5:
sortbyage();
break;
case 6:
findbyagerange();
break;
case 7:
writetofile();
break;
case 8:
find();
break;
default:
printf("不可识别的命令。\n");
}
}
//实现存储空间的自动扩充
void myrealloc()
{
if(count+1=capacity)
{
int i;
capacity*=2;
PtHuJiXinXi temppt=(PtHuJiXinXi)calloc(capacity,sizeof(HuJiXinXi));
for(i=0;icount;i++)
{
temppt[i]=pt[i];
}
free(pt);
pt=temppt;
}
}
void readfromfile()
{
char f[128];
FILE *inf;
HuJiXinXi hjxx;
printf("请输入包含户籍信息的文件的文件名,如果还没有文件,请输入omit(文件中每行一条户籍信息,");
printf("格式:身份证号 姓名 性别 年龄 学历 住址 电话)...\n");
gets(f);
if(!strcmp(f,"omit"))
{
return;
}
inf=fopen(f,"r");
if(NULL!=inf)
{
do
{
fscanf(inf,"%s %s %s %d %s %s %s",hjxx.shfzhh,hjxx.xm,hjxx.xb,hjxx.nl,hjxx.xl,hjxx.zhzh,hjxx.dh);
myrealloc();
pt[count++]=hjxx;
}while(!feof(inf));
fclose(inf);
printf("信息已成功加载。\n");
}
else
{
printf("文件名无效或文件无数据。\n");
}
}
void writetofile()
{
char f[128]={'\0'};
FILE *outf;
int i;
printf("请输入保存户籍信息的文件的文件名:\n");
scanf("%s",f);
outf=fopen(f,"w");
if(NULL!=outf)
{
for(i=0;icount;i++)
{
fprintf(outf,"%s %s %s %d %s %s %s",pt[i].shfzhh,pt[i].xm,pt[i].xb,pt[i].nl,pt[i].xl,pt[i].zhzh,pt[i].dh);
if(count-1!=i)
{
fprintf(outf,"%s","\n");
}
}
fclose(outf);
printf("文件保存成功。\n");
}
else
{
printf("文件名无效。\n");
}
}
void showmenu()
{
char menu[]="菜单:\n0、退出\n1、添加一条信息\n2、删除一条信息\n3、批量修改\n4、浏览全部信息\n5、按年龄排序 \n6、按年龄区间查询\n7、保存到文件\n8、随意查询\n请选择一个菜单:";
puts(menu);
}
void tuichu()
{
if(NULL==pt)
{
free(pt);
}
exit(0);
}
//判断身份证号是否重复
int isshfzhhchf(char s[64])
{
int i,r=0;
for(i=0;icount;i++)
{
if(!strcmp(pt[i].shfzhh,s))
{
r=1;
break;
}
}
return r;
}
void add()
{
myrealloc();
printf("添加一条户籍信息。\n");
printf("请输入身份证号 姓名 性别 年龄 学历 住址 电话:\n");
scanf("%s %s %s %d %s %s %s",pt[count].shfzhh,pt[count].xm,pt[count].xb,pt[count].nl,
pt[count].xl,pt[count].zhzh,pt[count].dh);
if(!isshfzhhchf(pt[count].shfzhh))
{
count++;
printf("添加成功。\n");
}
else
{
printf("身份证号重复,添加失败。\n");
}
}
//输出下标为n的一条户籍信息
void outputone(int n)
{
if(n=0 ncount)
{
printf("第%d条户籍信息:\n",n+1);
printf("%s %s %s %d %s %s %s。\n",pt[n].shfzhh,pt[n].xm,pt[n].xb,pt[n].nl,pt[n].xl,pt[n].zhzh,pt[n].dh);
}
else
{
printf("没有第%d条户籍信息存在。\n",n+1);
}
}
void outputall()
{
if(0==count)
{
printf("系统已空。\n");
}
else
{
int i;
for(i=0;icount;i++)
{
outputone(i);
}
}
}
void sortbyage()
{
int i,j,px;
HuJiXinXi hjxx;
printf("子菜单:\n1、升序\n2、降序\n请选择:");
scanf("%d",px);
if(1==px || 2==px)
{
for(i=0;icount-1;i++)
{
for(j=0;jcount-i-1;j++)
{
if(1==px)
{
if(pt[j].nlpt[j+1].nl)
{
hjxx=pt[j+1];
pt[j+1]=pt[j];
pt[j]=hjxx;
}
}
else
{
if(pt[j].nlpt[j+1].nl)
{
hjxx=pt[j+1];
pt[j+1]=pt[j];
pt[j]=hjxx;
}
}
}
}
printf("排序完成。\n");
}
else
{
printf("无法处理的子菜单命令。\n");
}
}
void findbyagerange()
{
int i,min,max,c=0;
printf("请输入要查找的户籍信息的最小年龄和最大年龄:");
scanf("%d %d",min,max);
printf("查询结果如下:\n");
for(i=0;icount;i++)
{
if(pt[i].nl=min pt[i].nl=max)
{
outputone(i);
printf("符合你的要求。\n");
c++;
}
}
if(0==c)
{
printf("没有符合你的要求的户籍信息。\n");
}
}
//删除一条户籍信息
void del()
{
int i,n;
HuJiXinXi hjxx;
printf("请输入要删除的是第几条户籍信息:");
scanf("%d",n);
if(n-1=0 n-1count)
{
hjxx=pt[n-1];
for(i=n;icount;i++)
{
pt[i-1]=pt[i];
}
printf("删除成功。\n第%d条户籍信息:\n",n);
printf("%s %s %s %d %s %s %s。",hjxx.shfzhh,hjxx.xm,hjxx.xb,hjxx.nl,hjxx.xl,hjxx.zhzh,hjxx.dh);
printf(",已删除。\n");
count--;
}
else
{
printf("删除失败。\n不存在第%d条户籍信息。\n",n);
}
}
//根据hjxx的值修改下标为n的户籍信息
//对于pt[n]的对应字段,如果在hjxx中是用*表示的,则不修改
void change(HuJiXinXi hjxx,int n)
{
//返回非0值,意味着hjxx.shfzhh(身份证号)不等于*,即需要修改pt[n].shfzhh字段,以下都类似
if(strcmp(hjxx.shfzhh,"*"))
{
strcpy(pt[n].shfzhh,hjxx.shfzhh);
}
if(strcmp(hjxx.xm,"*"))
{
strcpy(pt[n].xm,hjxx.xm);
}
if(strcmp(hjxx.xb,"*"))
{
strcpy(pt[n].xb,hjxx.xb);
}
//不等于-1表示需要修改pt[n].nl(年龄)
if(-1!=hjxx.nl)
{
pt[n].nl=hjxx.nl;
}
if(strcmp(hjxx.xl,"*"))
{
strcpy(pt[n].xl,hjxx.xl);
}
if(strcmp(hjxx.zhzh,"*"))
{
strcpy(pt[n].zhzh,hjxx.zhzh);
}
if(strcmp(hjxx.dh,"*"))
{
strcpy(pt[n].dh,hjxx.dh);
}
}
//对户籍信息进行批量修改
void alter()
{
int n;
HuJiXinXi hjxx;
char nl[16];
while(1)
{
printf("请输入要修改第几条户籍信息(-1退出循环):");
scanf("%d",n);
if(-1==n)
{
break;
}
else if(n-1=0 n-1count)
{
printf("修改...\n");
outputone(n-1);
printf("请输入将此户籍信息修改后的新的姓名 性别 年龄 学历 住址 电话(保持原值的用*代替):\n");
scanf("%s %s %s %s %s %s",hjxx.xm,hjxx.xb,nl,hjxx.xl,hjxx.zhzh,hjxx.dh);
//因为只有nl(年龄)是int型,故对nl作特殊处理,-1表示修改时年龄保持原值不变(不修改)
hjxx.nl=(strcmp(nl,"*") ? atoi(nl) : -1);
strcpy(hjxx.shfzhh,"*");
change(hjxx,n-1);
printf("修改完成。\n");
}
else
{
printf("无法修改,不存在第%d条户籍信息。\n",n);
}
}
}
//用于判断pt[n]是否匹配hjxx的模式
int ismatch(HuJiXinXi hjxx,int n)
{
int r=1;
if(strcmp(hjxx.shfzhh,"*") strcmp(hjxx.shfzhh,pt[n].shfzhh))
{
r=0;
}
if(r strcmp(hjxx.xm,"*") strcmp(hjxx.xm,pt[n].xm))
{
r=0;
}
if(r strcmp(hjxx.xb,"*") strcmp(hjxx.xb,pt[n].xb))
{
r=0;
}
if(r -1!=hjxx.nl hjxx.nl!=pt[n].nl)
{
r=0;
}
if(r strcmp(hjxx.xl,"*") strcmp(hjxx.xl,pt[n].xl))
{
r=0;
}
if(r strcmp(hjxx.zhzh,"*") strcmp(hjxx.zhzh,pt[n].zhzh))
{
r=0;
}
if(r strcmp(hjxx.dh,"*") strcmp(hjxx.dh,pt[n].dh))
{
r=0;
}
return r;
}
//按模式查询户籍信息
void find()
{
int i,c=0;
char nl[16];
HuJiXinXi hjxx;
printf("请输入要查询的户籍信息的身份证号 姓名 性别 年龄 学历 住址 电话(只需提供关键信息以用于查询,不提供的信息请用*代替):\n");
scanf("%s %s %s %s %s %s %s",hjxx.shfzhh,hjxx.xm,hjxx.xb,nl,hjxx.xl,hjxx.zhzh,hjxx.dh);
//因为只有nl(年龄)是int型,故对nl作特殊处理,-1表示查询时不需比较年龄
hjxx.nl=(strcmp(nl,"*") ? atoi(nl) : -1);
for(i=0;icount;i++)
{
if(ismatch(hjxx,i))
{
printf("找到第%d条满足你的模式要求的户籍信息如下:\n",c+1);
printf("%s %s %s %d %s %s %s。\n",pt[i].shfzhh,pt[i].xm,pt[i].xb,pt[i].nl,pt[i].xl,pt[i].zhzh,pt[i].dh);
c++;
}
}
if(!c)
{
printf("系统中没有满足你的模式要求的户籍信息。\n");
}
}
推理分析
B,老李是文人,文人思想与事实有距离,因此老李的思想与事实有距离,在答案中,只有B项说明老李的思想与现实不贴切,与题干意思一致,其他选项并不能由题干推出。
老李这个人性格非常好.怎么划分句子成分
划分句子成分
1.什么是句子
句子是由词或词组构成的,是具有一定语调并表达一个完整意思的语言运用单位。根据用途和语气,句子可以分为陈述句、疑问句、祈使句、感叹句。根据结构可分为单句和复句。
2.句子成分的名称及符号
名称:主语、谓语、宾语、定语、状语、补语。
符号:主语 = 谓语 - 宾语 ~
定语 ( ) 状语 [ ] 补语
①句子的基本成分是:主语、谓语、宾语。
补充成分是:定 语、状语、补语。
② 主语部分和谓语部分之间可用‖划开。
3.(1)划分句子成分,首先要研究主语、谓语、宾语。
主语:是谓语陈述的对象,指明说的是“什么人”或“什么事物”。
谓语:是陈述主语,说明主语的,说明主语“是什么”或“怎么样”。
宾语:在动词后面,表示动作、行为所涉及的人或事物,回答“谁”或“什么”一类问题。
句子一般有两种情况:写人、写物(写事、写物)。分析句子时,首先判断是“写人”还是“写物”。
①.写人 格式:“谁” + “干 什么”
(主语) (谓语)( 宾语)
例: 杨亚 ‖ 写 字
主 谓 宾
注意:处理复杂的单句时,要抓主干。
例:一中的杨亚║在课桌上写着毛笔字。
主 谓 宾
②.写物
格式:“什么事”或“什么物”+“怎么样”
( 主 语 ) (谓语、宾语)
例: 猫 ‖捉 鱼
主 谓 宾
例:一只小猫‖在盆边捉了一条大鱼
主 谓 宾
注意:“是”为典型的动词,一般是“谓语”。
例如: 他 ‖ 是学生
主 谓 宾
(2).划分句子成分,还要抓住枝干(定语、状语、补语)
定语:在句子中起着修饰、限制主语或宾语中心语的作用。
状语:修饰、限制谓语中心语,一般在谓语中心语前面,有的在句子最前面,交待时间、地点、范围、情况等。
补语:对谓语中心语起补充说明作用,一般放在谓语中心语之后。
例: 画眉 唱 歌
这是一个把主语中心语、谓语中心语、宾语中心语单提出的句子。原句是 “两只美丽的画眉高兴地唱一首歌。”
①.(两只美丽的)画眉
“两只美丽”是 “画眉”——主语中心语的修饰部分,叫“定语”。
②.[高兴]地唱
谓语中心语“唱”前边的修饰、限制成分——“高兴”为“状语”。
③.(一首)歌
宾语中心语“歌”前的修饰、限制部分——“一首”为“定语”。
④.歌唱得<好>
修饰、限制谓语中心语“唱”,并放在它后面的部分——“好”为“补语”。
4.划分句子的口诀:
(1)句子成分要划对,(2)纵观全局找主谓。
(3)主前定状谓后补, (4)谓前只有状地位。
(5)“的”定“地”状“得”后补,(6)宾语只受谓支配。
示例及练习部分
1、鲁班是我国古代春秋时期一位著名的建筑工匠。
答案:(鲁班)主语(是)谓语(我国古代春秋时期一位著名的建筑)定语(工匠)宾语。
2、那个时候的社会生产力还十分落后。
答案:(那个时候的)(社会)定语(生产力)主语(还)(十分)状语(落后)谓语。
3、鲁班接受了一项大的建筑工程任务。
答案:(鲁班)主语(接受)谓语(了)状语(一项大的建筑工程)定语(任务)宾语。
4、鲁班从中得到启发。
答案:(鲁班)主语(从中)状语(得到)谓语(启发)宾语。
5、蔡伦出生在一个贫苦的铁匠家里。
答案:(蔡伦)主语(出生)谓语(在一个贫苦的铁匠家里)补语.
语 文 语 法 知 识(一)
语 文 语 法 知 识
1、词类:有实词与虚词两大类。
(1)实词:表示实在的意义,能够作短语或句子的成分能够独立成句。
虚词:一般不表示实在的意义,不作短语或句子的成分(只有副词例外),它们的基本用途是表示语法关系。
A、名词:表示人和事物名称的词。
表示人的名称, 如同志、作家、父亲、主人、老李;
表示具体事物,河流、高山、森林 湖泊;
表示抽象事物,如政治、科学 效率、品德、;
表示时间名称,上午、夏天、春天、现在、立春、星期二、刚才;
表示处所名称:上海、中国、颐和园、商店、亚洲、北京;
表示方位名称:上、下、东、西、里、前、内(简称方位词)
名词的语法特点
:①表示人称的名词,可以在后头加“们”表示多数
②方位词常用在其他名词后头,组成表示处所、范围或时间的方位短语
③名词一般不受副词修饰。
B、动词:是表示动作行为、发展变化、心理活动等意义的词。
1、动作动词:表动作、行为。如,走 看 说 进行 开始
2、心理活动动词 如,想 爱 恨 怕 希望 喜欢 担心
3、使令动词:表指使、命令或请求。如,使 叫 让 派 请求禁止
4、能愿动词(助动词)如,能 会 可以 愿 肯 敢 要 应应该(跟动词、形容词等组成能愿短语。如,能够解决)
5、趋向动词 如,来去 上 进 出 回 过 开 上来 起来
6、判断动词:主要是“是”,以及同“是”相当的 “为”等
动词的语法特点:
①动词一般受副词“不”的修饰。
②动词后面可以带“着、了、过”,表示动态。
③一部分动词可以重叠,表示时间短暂或尝试的意思。
④判断词“是”主要是联结句子的主语和宾语。
⑤能愿动词后面不能跟名词,能愿动词可以和后面的动词一起作谓语中心语,也可以单独作谓语中心语。
⑥趋向动词可以单独作谓语中心语,也可以在谓语中心语后面作补语。
C、形容词:是表示事物的形状、性质、状态的词。
表示事物形状的:高、矮、胖、瘦弱;
表示事物性质的:红、甜、干净、清楚、漂亮、结实;
表示事物状态的:快、慢、雪白,滚烫,亮晶晶,泪涟涟;
形容词的语法特点:
①一部分形容词可以用重叠形式来加强语义。
②大多数形容词可以受副词“很”修饰。
D、数词:是表示数目的词。
表确数(表示分数,整数和倍数);
表概数:几、许多;
表序数:第一、老三;
数词的语法特点:①数目增加,可以用分数表示,也可以用倍数表示②数目减少,只能用分数,不能用倍数。
E、量词:是表示事物和动作、行为单位的词。表示事物单位的量词叫数量词。表示动作、行为单位的量词叫动量词。
表示事物单位的:个、只;
表示动作、行为单位的:次、回,
有时也借用某些名词来表示,如:脚、年;
量词的语法特点:①量词经常和数词连用,组成数量短语,也称为数量启数量词。②表示物量的数量词常用在名词的前面。③表示动量的数量词数量词常用在动词的后面。
F、代词:起代替或指示作用的词。
代词分为人称代词、疑问代词、指示代词三类。
1. 人称代词包括三种代词:
第一人称:我、我们、咱、咱们;
第二人称:你、你们、您、您们;
第三人称:他、她、它、他们、她们、它们、别人、大家
2. .疑问代词是表示疑问点的,如:谁、什么、哪里、多少。
3. .指示代词包括近指的"这",远指的"那",以及由它们构成的合成指示代词,如:这里、那边、这阵子、那会儿
代词的语法特点:
①第二人称的敬称“您”不用于复数,如果需要表示复数,就用“您几位”“您诸位”
②第三人称复数代词“他们”可专指男性,也可兼指男性和女性,“她们”则专指女性
③注意“我们”和“咱们”用法的区别。“我们”指说话人,有时也可以包括听话人;“咱们”一定包括说话人和听话人
④指示代词“那”用于远指,“这”用于近指
⑤代词用得不恰当,指代不明,可造成病句。
G、副词:一般用在动词、形容词前边,表示行为、动作或性质、状态的程度、范围、时间、频率、情势、语气等。
表示范围:都、全、单、共、光、尽、净、仅、就、只、一共、一起、一同、一道、一齐、一概、一味、统统、总共、仅仅、惟独等;
表示语气:可、倒、一定、必定、必然、却、、就、幸亏、难道、何尝、偏偏、索性、简直、反正、多亏、也许、大约、好在、敢情;
表示否定:不、没、没有、别;
表示时间:刚、恰好、正、将、老(是)、总(是)、早就、已经、正在、立刻、马上、起初、原先、一向、永远、从来、偶尔、随时、忽然;
表示程度:很、极、最、太、更、更加、格外、十分、极其、比较、相当、稍微、略微、多么;
表示情势:仿佛、渐渐、百般、特地、互相、擅自、几乎、逐渐、逐步、猛然、依然、仍然、当然、毅然、果然、差点儿。
副词的语法特点:
①副词主要用来修饰、限制动词或形容词,在动词、形容词前面作状语。
②副词有时用在形容词后面,补充说明程度、结果,作补语。
③副词不能修饰名词、代词。
H、连词:是用来连接词、短语或句子的词。
一般连词:和、与、并、或、及;
关联词:主要用来连接复句中的分句或句群中的句子。不但 而且、虽然但是。
语法特点:
①一般连词的前后两部分可以调换而基本意思不变。
②关联词的主要在复句中进行运用。
I、介词:介词经常用在名词、代词等的前面,和这些词合起来,表示动作、行为、性状的起止、方向、处所、时间、对象、方式、原因、目的、比较等。
1.表时间:在 于 自自从 从 当 由 趁 随着 到
2、表处所:从 打 朝 向 在 沿着 顺着
3、表排除:除 除了
4、表对象、范围: 对于 和 跟同 与 替 将 把 关于 被
5、表方式、手段: 按照 依 依照 根据 以 凭 本着 用
6、表目的、原因:为 为了 为着 因 由
常用介词及其用法(顺口溜)
自、从、以、当、为、按照,
由于、对于、为了、到
和、跟、把、比、在、关于
除了、同、对、向、往、朝……
用在名词、代词前,组成介宾短语后,修饰、补充“动”“形”要记牢。
J、助词:是附着在实词、短语或句子上面,起辅助作用的词。
助词可分三类:
结构助词、动态助词、语气助词。
结构助词:的、得;
动态助词:着、了、过;
语气助词:的、了、吗、吧、呢等。
K、叹词:表示感叹、呼唤、应答等声音的词。如啊、嗯等。语法特点:一般独立成句,用逗号或感叹号隔开。
L、拟声词:是摹拟人或事物的声音的词。语法特点:在句子中相当于一个形容词。
(2)、词类的辨别:
①区分名词和非名词,名词前不能加“不”和“很”。
②区分形容词和动词,形容词可以用“很”来修饰,动词前不能加“很”(表示心理活动的动词除外)
③区分形容词和副词,形容词能修饰名词,前面能加“很”;副词不能修饰名词,前面不能加“很”。
④区分连词和介词,前后能互换的是连词,前后不能互换的是介词。
⑤区分动词和介词,作谓语中心语的只能是动词,组成介宾短语修饰、补充动词、形容词的是介词。
⑥区分语气助词和叹词,语气助词一般用在句尾,叹词往往独立成句,一般在句首。
⑦区分介词和副词,介词后面跟名词、代词,副词后面是动词或形容词。
2、短语:是由词和词组合而成的语言单位。
(1)、并列短语:由两个或由两个以上的名词、动词或形容词等并列组成的短语,基本结构有名+名、名+代、代+代、动+动、形+形、数量+数量。
特点:
①并列短语前后的词性一致。(名词和代词除外)
②并列短语两部分之间是平等关系,没有修饰、限制关系。
③并列短语中的词一般颠倒过来意思不变。
④并列短语中词和词之间可以直接组合,也可以借用虚词组合。