本文目錄一覽:
學了一學期的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)、並列短語:由兩個或由兩個以上的名詞、動詞或形容詞等並列組成的短語,基本結構有名+名、名+代、代+代、動+動、形+形、數量+數量。
特點:
①並列短語前後的詞性一致。(名詞和代詞除外)
②並列短語兩部分之間是平等關係,沒有修飾、限制關係。
③並列短語中的詞一般顛倒過來意思不變。
④並列短語中詞和詞之間可以直接組合,也可以借用虛詞組合。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/307526.html