您的位置:

老李在学c语言,老李在学c语言的视频

本文目录一览:

学了一学期的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)、并列短语:由两个或由两个以上的名词、动词或形容词等并列组成的短语,基本结构有名+名、名+代、代+代、动+动、形+形、数量+数量。

特点:

①并列短语前后的词性一致。(名词和代词除外)

②并列短语两部分之间是平等关系,没有修饰、限制关系。

③并列短语中的词一般颠倒过来意思不变。

④并列短语中词和词之间可以直接组合,也可以借用虚词组合。