版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
計算機二級考試大綱+C語言習(xí)題集十二級上機練習(xí)
公共基礎(chǔ)知識
基本要求
1.掌握算法的基本概念。
2.掌握基本數(shù)據(jù)結(jié)構(gòu)及其操作。
3.掌握基本排序和查找算法。
4.掌握逐步求精的結(jié)構(gòu)化程序設(shè)計方法。
5.掌握軟件工程的基本方法,具有初步應(yīng)用相關(guān)技術(shù)進行軟件開發(fā)的能力。
6.掌握數(shù)據(jù)的基本知識,了解關(guān)系數(shù)據(jù)庫的設(shè)計。
考試內(nèi)容
-、基本數(shù)據(jù)結(jié)構(gòu)與算法
1.算法的基本概念;算法復(fù)雜度的概念和意義(時間復(fù)雜度與空間復(fù)雜度)。
2.數(shù)據(jù)結(jié)構(gòu)的定義;數(shù)據(jù)的邏輯結(jié)構(gòu)與存儲結(jié)構(gòu):數(shù)據(jù)結(jié)構(gòu)的圖形表示;線性結(jié)構(gòu)與非線
性結(jié)構(gòu)的概念。
3.線性表的定義:線性表的順序存儲結(jié)構(gòu)及其插入與刪除運算。
4.棧和隊列的定義;棧和隊列的順序存儲結(jié)構(gòu)及其基本運算。
5.線性單鏈表、雙向鏈表與循環(huán)鏈表的結(jié)構(gòu)及其基本運算。
6.樹的基本概念;二叉樹的定義及其存儲結(jié)構(gòu);二叉樹的前序、中序和后序遍歷。(前序、
中序和后序遍歷有考到,每年都有)
7.順序查找與二分法查找算法;基本排序算法(交換類排序,選擇類排序,插入類排序)。
二、程序設(shè)計基礎(chǔ)
1.程序設(shè)計方法與風(fēng)格。
2.結(jié)構(gòu)化程序設(shè)計。
3.面向?qū)ο蟮某绦蛟O(shè)計方法,對象,方法,屬性及繼承與多態(tài)性。
三、軟件工程基礎(chǔ)
1.軟件工程基本概念,軟件生命周戎概念,軟件工具與軟件開發(fā)環(huán)境。
2.結(jié)構(gòu)化分析方法,數(shù)據(jù)流圖,數(shù)據(jù)字典,軟件需求規(guī)格說明書。
3.結(jié)構(gòu)化設(shè)計方法,總體設(shè)計與詳細(xì)設(shè)計。
4.軟件測試的方法,白盒測試與黑盒測試,測試用例設(shè)計,軟件測試的實施,單元測試、
集成測試和系統(tǒng)測試。
5.程序的調(diào)試,靜態(tài)調(diào)試與動態(tài)調(diào)試。
四、數(shù)據(jù)庫設(shè)計基礎(chǔ)
1.數(shù)據(jù)庫的基本概念:數(shù)據(jù)庫,數(shù)據(jù)庫管理系統(tǒng),數(shù)據(jù)庫系統(tǒng)。
2.數(shù)據(jù)模型,實體聯(lián)系模型及E-R圖,從E-R圖導(dǎo)出關(guān)系數(shù)據(jù)模型。
3.關(guān)系代數(shù)運算,包括集合運算及選擇、投影、連接運算,數(shù)據(jù)庫規(guī)范化理論。
4.數(shù)據(jù)庫設(shè)計方法和步驟:需求分析、概念設(shè)計、邏輯設(shè)計和物理設(shè)計的相關(guān)策略。
考試方式
1、公共基礎(chǔ)的考試方式為筆試,與C語言(VisualBASIC、VisualFoxPro.Java、Access,
VisualC++)的筆試部分合為一張試卷。公共基礎(chǔ)部分占全卷的30分。
2、公共基礎(chǔ)知識有10道選擇題和5道填空題。
C語言程序設(shè)計
基本要求
1.熟悉TURBOC集成環(huán)境。
2.熟練掌握結(jié)構(gòu)化程序設(shè)計的方法,具有良好的程序設(shè)計風(fēng)格。
3.掌握程序設(shè)計中簡單的數(shù)據(jù)結(jié)構(gòu)和算法。
4.TURBOC的集成環(huán)境下,能夠編寫簡單的C程序,并具有基本的糾錯和調(diào)試程序的能力。
考試內(nèi)容
一、C語言的結(jié)構(gòu)
1.程序的構(gòu)成,MAIN函數(shù)和其他函數(shù)。
2.頭文件,數(shù)據(jù)說明,函數(shù)的開始和結(jié)束標(biāo)志。
3?源程序的書寫格式
4.C語言的風(fēng)格。
二、數(shù)據(jù)類型及其運算(基礎(chǔ))
1.C的數(shù)據(jù)類型(基本類型,構(gòu)造類型,指針類型,空類型)及其定義方法。
2.C運算符的種類、運算優(yōu)先級和結(jié)合性。
3.不同類型數(shù)據(jù)間的轉(zhuǎn)換與運算。
4.C表達(dá)式類型(賦值表達(dá)式、算術(shù)表達(dá)式、關(guān)系表達(dá)式、邏輯表達(dá)式、條件表達(dá)式、逗號
表達(dá)式)和求值規(guī)則。
三、基本語句(基礎(chǔ))
1.表達(dá)式語句,空語句,復(fù)合語句。
2.數(shù)據(jù)的輸入和輸出,輸入輸出函數(shù)的調(diào)用。
3.復(fù)合語句。
4.GOTO語句和語句標(biāo)號的使用。(這個了解即可)
四、選擇結(jié)構(gòu)程序設(shè)計
1.用if語句實現(xiàn)選擇結(jié)構(gòu)。(基礎(chǔ))
2.用switch語句實現(xiàn)多分支選擇結(jié)構(gòu)。(筆試有)
3.選擇結(jié)構(gòu)的嵌套。
五、循環(huán)結(jié)構(gòu)程序設(shè)計(基礎(chǔ))
l.for循環(huán)結(jié)構(gòu)。
2.while和dowhile循環(huán)結(jié)構(gòu)。
3.continue語句和break語句。
4.循環(huán)的嵌套。(基礎(chǔ))
六、數(shù)組的定義和引用
1.一維數(shù)組和多維數(shù)組的定義、初始化和引用。
2.字符串與字符數(shù)組。
七、函數(shù)(基礎(chǔ))
1.庫函數(shù)的正確調(diào)用。
2.函數(shù)的定義方法。
3.函數(shù)的類型和返回值。
4.形式參數(shù)與實在參數(shù),參數(shù)值的傳遞。
5.函數(shù)的正確調(diào)用,嵌套調(diào)用,遞歸調(diào)用。
6.局部變量和全局變量。
7.變量的存儲類別(自動、靜態(tài)、寄存器、外部),變量的作用域和生存期。
8.內(nèi)部函數(shù)與外部函數(shù)。
八、編譯預(yù)處理(基礎(chǔ),筆試有考到宏替換)
1.宏定義:不帶參數(shù)的宏定義;帶參數(shù)的宏定義。
2.“文件包含”處理。
九、指針(這個很重要,上機題有這方面的)
1.指針與指針變量的概念,指針與地址運算符。
2.變量、數(shù)組、字符串、函數(shù)、結(jié)構(gòu)體的指針以及指向變量、數(shù)組、字符串、函數(shù)、結(jié)構(gòu)體
的指針變量。通過指針引用以上各類型數(shù)據(jù)。
3.用指針作函數(shù)參數(shù)。
4.返回指針值的指針函數(shù)。
5.指針數(shù)組,指向指針的指針,MAIN函數(shù)的命令行參數(shù)。
十、結(jié)構(gòu)體(即“結(jié)構(gòu)”)與共用體(即“聯(lián)合”)
1.結(jié)構(gòu)體和共用體類型數(shù)據(jù)的定義方法和引用方法。
2.用指針和結(jié)構(gòu)體構(gòu)成鏈表,單向鏈表的建立、輸出、刪除與插入。
十一、位運算
1.位運算符的含義及使用。
2.簡單的位運算。
十二、文件操作(了解,上級題有,只要知道什么意思就行了)
只要求緩沖文件系統(tǒng)(即高級磁盤I/O系統(tǒng)),對非標(biāo)準(zhǔn)緩沖文件系統(tǒng)(即低級磁盤I/O系統(tǒng))不
要求。
1.文件類型指針(FILE類型指針)。
2.文件的打開與關(guān)閉(fopen,fclose)。
3.文件的讀寫(fputc,fgetc,fputs,fgets,fread,frwite,fprintf,fscanf函數(shù)),文件的定位(rewind,fseek
函數(shù))。
PS:分為筆試和機試兩部份,機試有三道題,一道改錯,?道補充,一道綜合,筆試中有
30分公共基礎(chǔ)知識,為數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)庫,網(wǎng)絡(luò)和電腦常識方面的問題,有70分選擇題,
30分填空題,難點為數(shù)組,指針,也為重點
全國計算機等級考試調(diào)整方案
關(guān)于二級
考試科目:新增二級Delphi語言程序設(shè)計,加上原有的二級C等六個科目,二級共七個
科目。二級科目分成兩類,一類是語言程序設(shè)計(C、C++、Java>VisualBasic、Delphi),
另一類是數(shù)據(jù)庫程序設(shè)計(VisualFoxPro、Access),
考核內(nèi)容:二級定位為程序員,考核內(nèi)容包括公共基礎(chǔ)知識和程序設(shè)計。所有科目對基礎(chǔ)
知識作統(tǒng)一要求,使用統(tǒng)一的公共基礎(chǔ)知識考試大綱和教程。二級公共基礎(chǔ)知識在各科筆試
中的分值比重為30%(30分)。程序設(shè)計部分的比重為70%(70分),主要考查考生對程序
設(shè)計語言使用和編程調(diào)試等基本能力。
考試形式:二級所有科目的考試仍包括筆試和上機考試兩部分。二級C筆試時間由120
分鐘改為90分鐘,上機時間由60分鐘改為90分鐘。所有二級科目的筆試時間統(tǒng)一為90
分鐘,上機時間統(tǒng)一為90分鐘。
系統(tǒng)環(huán)境:二級各科目上機考試應(yīng)用軟件為:中文專業(yè)版Access2000、中文專業(yè)版Visual
Basic6.0、中文專業(yè)版VisualFoxPro6.0、VisualC++6.0,二級C上機應(yīng)用軟件由TurboC2.0
改為VisualC++6.0,二級Java由現(xiàn)在的JavaJDK1.4.2改為專用集成開發(fā)環(huán)境4'NetBeans中
國教育考試版2007”(有關(guān)網(wǎng)站將提供免費下載),二級Delphi使用Delphi7.0版本。
一、程序填空題
1.給定程序中,函數(shù)fun的功能是:將形參n所指變量中,各位上為偶數(shù)的去除,剩余的數(shù)
按原來從高到低的順序
組成一個新的數(shù),并通過形參指針n傳回所指變量。
例如:輸入一個數(shù):27638496,新的數(shù)為:739。
#include<stdio.h>
voidfun(unsignedlong*n)
{unsignedlongx=0,i;intt;
i=l;
while(*n)
/**********found**********/
{t=*n%10;
/**********found*********示/
if(t%2!=0)
{x=x+t*i;i=i*10;}
*n=*n/10;
/**********found*********不/
*n=x;
)
main()
{unsignedlongn=-l;
while(n>99999999lln<0)
{printf(nPleaseinput(0<n<100000000):");scanf(u%ldn,&n);)
fun(&n);
printf(H\nTheresultis:%ld\nH,n);
2.給定程序中,函數(shù)fun的功能是將形參給定的字符串、整數(shù)、浮點數(shù)寫到文本文件中,再用
字符方式從此文本文
件中逐個讀入并顯示在終端屏幕上。
#include<stdio.h>
voidfun(char*s,inta,doublef)
/**********found**********/
FILE*fp;
charch;
fp=fopen(',filel.txtu,nwH);
fprintf(fp,"%s%d%f\nM,s,a,f);
fclose(fp);
fp=fopenCTilel.txt0,nru);
printl'CAnTheresult:\n\nu);
ch=fgetc(fp);
/**********found**********/
while(!feof(fp)){
/**********found**********/
putchar(ch);ch=fgetc(fp);}
pulchar('\n');
fclose(fp);
}
main()
{chara[10]=nHello!u;intb=12345;
doublec=98.76;
fun(a,b,c);
3.程序通過定義學(xué)生結(jié)構(gòu)體變量,存儲了學(xué)生的學(xué)號、姓名和3門課的成績。所有學(xué)生數(shù)
據(jù)均以二進制方式輸出
到文件中。函數(shù)fun的功能是重寫形參filename所指文件中最后?個學(xué)生的數(shù)據(jù),即用新的
學(xué)生數(shù)據(jù)覆蓋該學(xué)生
原來的數(shù)據(jù),其它學(xué)生的數(shù)據(jù)不變。
#include<stdio.h>
#defineN5
typedefstructstudent{
longsno;
charname[10];
floatscore[3J;
}STU;
voidfun(char*filename,STUn)
{FILE*fp;
fp=fopen(filename,"rb+");
/**********found**********/
fseek(fp,-lL*sizeof(STU),SEEK_END);
/**********found*********不/
fwrite(&n,sizeof(STU),1,fp);
fclose(fp);
main()
{STUt[N]={{10001,"MaChao",91,92,77},{10002JCaoKai”,75,60,88},
{10003,uLiSin,85,70,78},{10004;,FangFangn,90,82,87},
{10005,"ZhangSan",95,80,88}};
STUn={10006JZhaoSi”,55,70,68},ss[N];
intij;FILE*fp;
fp=fopenC^tudent.dat'1,Hwb");
fwrite(t,sizeof(STU),N,fp);
fclose(fp);
fp=fopen("student.datu,"rb");
fread(ss,sizeof(STU),N,fp);
fclose(fp);
printf(n\nTheoriginaldata:\n\nH);
for(j=O;j<N;j++)
{printf(n\nNo:%ldName:%-8sScores:",ss[j].srK),ss[j].name);
for(i=0;i<3;i++)prmtf(n%6.2fn,ss[j].score[i]);
printf("\nH);
)
fim("sludent.dar‘,n);
printf(H\nThedataaftermodifing:\n\nn);
fp=fopen("student.dat'\nrb");
fread(ss,sizeof(STU),N,fp);
fclose(fp);
for(j=0;j<N;j++)
{printf(H\nNo:%ldName:%-8sScores:H,ss|jJ.sno,ss|j].name);
for(i=0;i<3;i++)printf("%6.2fn,ss[j].score[i]);
printf("\n”);
)
)
4.程序通過定義學(xué)生結(jié)構(gòu)體變量,存儲了學(xué)生的學(xué)號、姓名和3門課的成績。所有學(xué)生數(shù)
據(jù)均以二進制方式輸出
到文件中。函數(shù)fun的功能是從形參filename所指的文件中讀入學(xué)生數(shù)據(jù),并按照學(xué)號從小
到大排序后,再用二
進制方式把排序后的學(xué)生數(shù)據(jù)輸出到filename所指的文件中,覆蓋原來的文件內(nèi)容。
#include<stdio.h>
#defineN5
typedefstructstudent{
longsno;
charname[10J;
floatscore[3];
}STU;
voidfun(char*filename)
{FILE*fp;inti,j;
STUs[N],t;
/*字********found******¥*亭亭/
fp=fopen(filename,nrbu);
fread(s,sizeof(STU),N,fp);
fclose(fp);
for(i=0;i<N-l;i++)
for(j=i+1;j<N;j++)
/**********found**********/
if(s[i].sno>s[j].sno)
{t=s[i];s[i]=s[j];s[j]=t;}
fp=fbpen(filename,uwb");
/**********found*******亭*¥/
fwrite(s,sizeof(STU),N,fp);
fclose(fp);
)
main()
{STUt[N]={{10005;'ZhangSan",95,80,88},{10003,"LiSi';85,70,78),
{10002;'CaoKain,75,60,88},{10004;'FangFangn,90,82,87},
{10001,"MaChao",91,92,77}},ss[N];
inti,j;FILE*fp;
fp=fopen(,'student.datH,"wb");
fwrite(t,sizeof(STU),5,fp);
fclose(fp);
printf(M\n\nTheoriginaldata:\n\nn);
for(j=0;j<N;j++)
{printf(n\nNo:%ldName:%-8sScores:n,t|j].sno,t|j].name);
for(i=0;i<3;i++)printf(n%6.2f",t[j].score[i]);
printfCAn'1);
)
fun(nstudent.dat");
printf(M\n\nThedataaftersorting:\n\nn);
fp=fopen("student.datu,''rb'1);
fread(ss,sizeof(STU),5,fp);
fclose(fp);
for(j=0;j<N;j++)
{printf(n\nNo:%ldName:%-8sScores:n,ss|jJ.sno,ss[j].name);
for(i=0;i<3;i++)printf("%6.2fM,ss[j].score[i]);
printf(H\nM);
}
)
5.給定程序中,函數(shù)fun的功能是將參數(shù)給定的字符串、整數(shù)、浮點數(shù)寫到文本文件中,再
用字符串方式從此文
本文件中逐個讀入,并調(diào)用庫函數(shù)atoi和atof將字符串轉(zhuǎn)換成相應(yīng)的整數(shù)、浮點數(shù),然后
將其顯示在屏幕上。
#include<stdio.h>
#include<stdlib.h>
voidfun(char*s,inta,doublef)
/*字字*******found******字字字字/
FILE*fp;
charstrflOO],strl[100],str2[100];
intal;doublefl;
fp=fopen(Mfilel.txtu,nw");
fprintf(fp,"%s%d%f\nn,s,a,f);
/**********found**********/
fclose(fp);
fp=fopenCfilel.txt",V);
/**********found******亭***/
fscanf(fp,"%s%s%s",str,strl,str2);
fclose(fp);
al=atoi(strl);
fl=atof(str2);
printf(n\nTheresult:\n\n%s%d%f\nu,str,al,fl);
)
main()
{chara[10]="Helk)!”;intb=12345;
doublec=98.76;
fun(a,b,c);
)
6.給定程序中,函數(shù)fun的功能是根據(jù)形參i的值返回某個函數(shù)的值,當(dāng)調(diào)用正確時,程序
輸出:
x1=5.000000,x2=3.000000xl*xl+xl*x2=40.000000
#include<stdio.h>
doublefl(doublex)
{returnx*x;}
doublef2(doublex,doubley)
{returnx*y;)
/**********found**********/
doublefun(inti,doublex,doubley)
{if(i==D
/**********found**********/
returnfl(x);
else
/**********found*********不/
returnf2(x,y);
main()
{doublexl=5,x2=3,r;
r=fun(l,xl,x2);
r+=fun(2,xl,x2);
printf(M\nxl=%f,x2=%f,x1*x1+x1*x2=%f\n\n",x1,x2,r);
)
7.程序通過定義并賦初值的方式,利用結(jié)構(gòu)體變量存儲了一名學(xué)生的信息。函數(shù)fun的功能
是輸出這位學(xué)生的信
息。
#include<stdio.h>
typedefstruct
{intnum;
charname[9];
charsex;
struct{intyear,month,day;)birthday;
floatscore[3];
}STU;
/**********found**********/
voidshow(STUtt)
{inti;
printf(M\n%d%s%c%d-%d-%d'\tt.num,,tt.sex,
tt.birthday.year,tt.birthday.month,tt.birthday.day);
for(i=0;i<3;i++)
字字*******found******¥¥字字/
printfC^S.ir,tt.score[i]);
printf(n\nn);
)
main()
{STUstd={1/'Zhanghua\'M;1961,10,8,76.5,78.0,82.0};
printf(n\nAstudentdata:\nn);
/**********found*********琴/
show(std);
)
8.給定程序通過賦初值的方式,利用結(jié)構(gòu)體變量存儲了一名學(xué)生的學(xué)號、姓名和3門課的成
績。函數(shù)fun的功能是
將該學(xué)生的各科成績者乘以一個系數(shù)a。
#include<stdio.h>
typedefstruct
{intnum;
charname[9];
floatscore[3];
}STU;
voidshow(STUtt)
{inti;
printf("%d%s:",tt.num,);
for(i=0;i<3;i++)
printf("%5.1f,,tt.score[i]);
printf("\n”);
)
/*字字*******found******字字字字/
voidmodify(STU*ss,floata)
{inti;
for(i=0;i<3;i++)
/**********found**********/
ss->score[i]*=a;
main()
{STUstd={l,nZhanghua",76.5,78.0,82.0);
floata;
printf(n\nTheoriginalnumberandnameandscores:\n");
show(std);
printf("\nlnputanumber:");scanf(u%f\&a);
/**********found**********/
modify(&std,a);
printf(M\nAresultofmodifying:\n");
show(std);
)
9.給定程序中,涵數(shù)fun的功能是將不帶頭結(jié)點的單向鏈表結(jié)點數(shù)據(jù)域中的數(shù)據(jù)從小到大排
序。即若原鏈表結(jié)點數(shù)
據(jù)域從頭至尾的數(shù)據(jù)為:10、4、2、8、6,排序后鏈表結(jié)點數(shù)據(jù)域從頭至尾為:2、4、6、8、
10o
#include<stdio.h>
#include<stdlib.h>
#defineN6
typedefstructnode{
intdata;
structnode*next;
}NODE;
voidfun(NODE*h)
{NODE*p,*q;intt;
p=h;
while(p){
/**********found**********/
q=p->next;
/**********found**********/
while(q)
{if(p>>data>q->data)
{t=p->data;p->data=q->data;q->data=t;}
q=q->next;
)
/*¥¥*******found******字字字字/
p=p->next;
)
)
NODE*creatlist(inta[])
{NODE*h,*p,*q;inti;
h=NULL;
for(i=0;i<N;i++)
{q=(NODE*)malloc(sizeof(NODE));
q->data=a[i];
q->next=NULL;
if(h==NULL)h=p=q;
else{p->next=q;p=q;}
)
returnh;
)
voidoutlist(NODE*h)
{NODE*p;
p=h;
if(p==NULL)printf(MThelistisNULL!\nH);
else
{printf(n\nHead");
do
{printf("->%dn,p->data);p=p->next;}
while(p!=NULL);
printf("->End\n");
)
)
10.給定程序中,函數(shù)fun的功能是:叛定形參a所指的NXN(規(guī)定N為奇數(shù))的矩陣是否
是“幻方”,若是,函數(shù)
返回值為1;不是,函數(shù)返回值為0。“幻方”的叛定條件是:矩陣每行、每列、主對角線及
反對角線上元素之和
都相等。例如:以下3又3的矩陣就是一個“幻方”:
492
357
816
#include<stdio.h>
#defineN3
intfun(int(*a)[N])
{inti,j,mI,m2,row,colum;
ml=m2=0;
for(i=0;i<N;i++)
{j=N-i-l;ml+=a[i][i];m2+=a[i][j];}
if(ml!=m2)return0;
for(i=0;i<N;i++){
/**********found**********/
row=colum=0;
for(j=0;j<N;j++)
{row+=a[i][j];colum+=a[j][i];}
/**********found**********/
if((row!=colum)II(row!=ml))return0;
)
/**********found**********/
retum1;
)
main()
{intx[N][N],i,j;
printf(HEnternumberforaiTay:\n");
for(i=0;i<N;i++)
for(j=0;j<N;j++)scanf(n%dH,&x[i][j]);
printf(nArray:\n");
for(i=0;i<N;i++)
{for(j=0;j<N;j++)printf("%3d”,x[i][j]);
printf(M\nn);
)
if(fun(x))printf(HTheArrayisamagicsquareAn");
elseprintf(nTheArrayisn'tamagicsquareAn");
)
11.給定程序中,函數(shù)fun的功能是將帶頭結(jié)點的單向鏈表逆置。即若原鏈表中從頭至尾結(jié)
點數(shù)據(jù)域依次為:2、
4、6、8、10,逆置后,從頭至尾結(jié)點數(shù)據(jù)域依次為:10、8、6、4、2。
#include<stdio.h>
#include<stdlib.h>
#defineN5
typedefstructnode{
intdata;
structnode*next;
}NODE;
voidfun(NODE*h)
{NODE*p,*q,*r;
/**********found*********不/
p=h->next;
/**********found**********/
if(p==0)return;
q=p->next;
p->next=NULL;
while(q)
{r=q->next;q->next=p;
/**********found**********/
P=q;q=r;
)
h->next=p;
)
NODE*creatlist(inta[])
{NODE*h,*p,*q;inti;
h=(NODE*)malloc(sizeof(NODE));
h->next=NULL;
for(i=0;i<N;i++)
{q=(NODE*)malloc(sizeof(NODE));
q->data=a[i];
q->next=NULL;
if(h->next==NULL)h->next=p=q;
else{p->next=q;p=q;)
)
returnh;
)
voidoutlist(NODE*h)
{NODE*p;
p=h->next;
if(p==NULL)printf("ThelistisNULL!\nn);
else
{printf("\nHead");
do
{printf(,'->%d",p->data);p=p->next;}
while(p!=NULL);
printf(',->End\nH);
)
)
12.給定程序中,函數(shù)fun的功能是將不帶頭結(jié)點的單向鏈表逆置。即若原鏈表中從頭至尾
結(jié)點數(shù)據(jù)域依次為:2
、4、6、8、10,逆置后,從頭至尾結(jié)點數(shù)據(jù)域依次為:10、8、6、4、2
#include<stdio.h>
#include<stdlib.h>
#defineN5
typedefstructnode{
intdata;
structnode"next;
}NODE;
/**********found**********/
NODE*fun(NODE*h)
{NODE*p,*q,*r;
p=h;
if(p==NULL)
returnNULL;
q=p->next;
p->next=NULL;
while(q)
/**********found**********/
r=q->next;
q->next=p;
p=q;
/**********found**********/
q=r;
)
returnp;
)
NODE*creatlist(inta[])
{NODE*h,*p,*q;inti;
h=NULL;
for(i=0;i<N;i++)
{q=(NODE*)malloc(sizeof(NODE));
q->data=a[i];
q->next=NULL;
if(h=NULL)h=p=q;
else{p->next=q;p=q;}
)
returnh;
)
voidoutlist(NODE*h)
{NODE*p;
P=h;
if(p==NULL)printfC'ThelistisNULL!\nu);
else
{printfC^Head”);
do
{printf("->%d",p->data);p=p->next;}
while(p!=NULL);
printf("->End\nn);
13.給定程序中,函數(shù)fun的功能是將帶頭結(jié)點的單向鏈表結(jié)點數(shù)據(jù)域中的數(shù)據(jù)從小到大排
序。即若原鏈表結(jié)點數(shù)
據(jù)域從頭至尾的數(shù)據(jù)為:10、4、2、8、6,排序后鏈表結(jié)點數(shù)據(jù)域從頭至尾的數(shù)據(jù)為:2、4、
6、8、10o
#include<stdio.h>
#include<stdlib.h>
#defineN6
typedefstructnode{
intdata;
structnode*next;
}NODE;
voidfun(NODE*h)
{NODE*p,*q;intt;
/**********found******亭***/
p=h->next;
while(p){
/**********found**********/
q=p->next;
while(q){
/**********found**********/
if(p->data>=q->data)
{t=p->data;p->data=q->data;q->data=t;}
q=q->next;
)
p=p->next;
)
)
NODE*creatlist(inta[J)
{NODE*h,*p,*q;inti;
h=(NODE*)malloc(sizeof(NODE));
h->next=NULL;
for(i=0;i<N;i++)
{q=(NODE*)malloc(sizeof(NODE));
q->data=a(i];
q->next=NULL;
if(h->next==NULL)h->next=p=q;
else{p->next=q;p=q;}
)
returnh;
)
voidoutlist(NODE*h)
{NODE*p;
p=h->next;
if(p==NULL)printf("ThelistisNULL!\nn);
else
{printf(n\nHead");
do
{printf(,'->%du,p->data);p=p->next;}
while(p!=NULL);
printf(M->End\n");
)
14.給定程序中,函數(shù)fun的功能是用函數(shù)指針指向要調(diào)用的函數(shù),并進行調(diào)用。規(guī)定在
―2—處使f指向函數(shù)
fl,在—3—處使f指向函數(shù)f2。當(dāng)調(diào)用正確時,程序輸出:
Xl=5.000000,x2=3.000000,xl*xl+xl*x2=40.000000
#include<stdio.h>
doublefl(doublex)
{returnx*x;}
doublef2(doublex,doubley)
{returnx*y;}
doublefun(doublea,doubleb)
/**********found**********/
double
doublerl,r2;
字字*******found******¥¥字字/
f=f1;/*pointfountionfl*/
rl=f(a);
/**********found**********/
f=f2;/*pointfountionf2*/
r2=b);
returnrl+r2;
)
main()
{doublexl=5,x2=3,r;
r=fun(xl,x2);
printf(M\nxl=%f,x2=%f,xl*xl+xl*x2=%f\n",x1,x2,r);
15.程序通過定義學(xué)生結(jié)構(gòu)體變量,存儲了學(xué)生的學(xué)號、姓名和3門課的成績。所有學(xué)生數(shù)
據(jù)均以二進制方式輸出
到student.dat中。函數(shù)fun的功能是從指定文件中找出指定學(xué)號的學(xué)生數(shù)據(jù),讀入此學(xué)生數(shù)
據(jù),對該生的分?jǐn)?shù)
進行修改,使每門課的分?jǐn)?shù)加3分,修改后重寫文件中該學(xué)生的數(shù)據(jù),即用該學(xué)生的新數(shù)據(jù)
覆蓋原數(shù)據(jù),其它學(xué)
生數(shù)據(jù)不變,若找不到,則什么都不做。
#include<stdio.h>
#defineN5
typedefstructstudent{
longsno;
charname[10];
floatscore[3];
}STU;
voidfun(char.filename,longsno)
{FILE*fp;
STUn;inti;
fp=fopen(filename,nrb+u);
/**********found**********/
while(!feof(fp))
{fread(&n,sizeof(STU),1,fp);
/**********found******亭***/
if(n.sno==sno)break;
)
if(!feof(fp))
{for(i=0;i<3;i++)n.score[i]+=3;
/**********found*********示/
fseek(fp,-lL*sizeof(STU),SEEK_CUR);
fwrite(&n,sizeof(STU),1,fp);
)
fclose(fp);
)
16.給定程序中,函數(shù)fun的功能是:求出形參ss所指字符串?dāng)?shù)組中最長字符串的長度,將
其余字符串右邊用字符
*補齊,使其與最長字符串等長。ss所指字符串?dāng)?shù)組中共有N個字符串,且串長<N。
#include<stdio.h>
#include<string.h>
#defineM5
#defineN20
voidfun(char(*ss)(NJ)
{inti,j,n,len=0;
for(i=0;i<M;i++)
{len=strlen(ss[i]);
if(i==0)n=len;
if(len>n)n=len;
)
for(i=0;i<M;i++){
/**********found*********不/
n=strlen(ss[i]);
fbr(j=O;j<len-n;j++)
/*字不*******found******¥¥¥¥/
ss[i][n+j]='*';
/**********found**********/
ss[i][n+j+l]=W;
)
main()
{charss[M][N]={',shanghai,'/,guangzhou'',"beijing",',tianjing",,,cchongqing,,);
inti;
printf(MTheoriginalstringsare:\n");
for(i=0;i<M;i++)printf(H%s\n",ss[i]);
printf("\nn);
fun(ss);
printf("Theresultis:\nn);
for(i=0;i<M;i++)printf(u%s\n",ss[i]);
I
17.程序通過定義學(xué)生結(jié)構(gòu)體數(shù)組,存儲了若干名學(xué)生的學(xué)號、姓名和3門課的成績,函數(shù)
fun的功能是將存放學(xué)
生數(shù)據(jù)的結(jié)構(gòu)體數(shù)組,按照姓名的字典序(從小到大)排序。
#include<stdio.h>
#include<string.h>
structstudent{
longsno;
charname[10];
floatscore[3];
voidfun(structstudenta[J,intn)
/**********found**********/
structstudentt;
inti,j;
/*字不*******found******¥¥¥¥/
for(i=0;i<n-l;i++)
for(j=i+l;j<n;j++)
/**********found**********/
if(strcmp(a[i].name,a[j].name)>0)
{t=a[i];a[i]=a|j];a|jj=t;}
main()
{structstudents[4]={{10001,"ZhangSan",95,80,88},{10002,"LiSiH,85,70,78},
{10003,nCaoKaiH,75,60,88},{10004JFangFang",90,82,87});
inti,j;
printf(M\n\nTheoriginaldata:\n\nH);
for(j=0;j<4;j++)
{printf(n\nNo:%ldName:%-8sScores:",s[j].sno,s[j].name);
for(i=0;i<3;i++)printf(H%6.2f",s[j].score[i]);
printf(n\nn);
)
fun(s,4);
printf("\n\nThedataaftersorting:\n\n");
for(j=0;j<4;j++)
{printf("\nNo:%ldName:%-8sScores:n,s[j].sno,s[j].name);
for(i=0;i<3;i++)printf("%6.2f",s[j].score[i]);
printf("\n");
)
)
18.給定程序中,函數(shù)fun的功能是:將形參s所指字符中中的所有字母字符順序前移,其他
字符順序后移,處理
后新字符串的首地址作為函數(shù)值返回。
例如,s所指字符串為:asdl23fgh543df,處理后新字符串為asdfghdf123543。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char*fun(char*s)
{inti,j,k,n;char*p,*t;
n=strlen(s)+l;
t=(char*)malloc(n*sizeof(char));
p=(char*)malloc(n*sizeof(char));
j=0;k=0;
for(i=0;i<n;i++)
{if(((s[i]>='a,)&&(s[i]<='z,))ll((s[i]>=A,)&&(s[i]<=T))){
t[j]=s[i];j++;)
else
{p[k]=s[i];k++;}
/**********found**********/
for(i=0;i<k;i++)t[j4-i]=p[i];
/**********found**********/
t[j+k]=0;
returnt;
main()
{chars[80];
printf(MPleaseinput:");scanf(u%sn,s);
printf("\nTheresultis:%s\n",fun(s));
19.程序通過定義學(xué)生結(jié)構(gòu)體變量,存儲了學(xué)生的學(xué)號、姓名和3門課的成績。函數(shù)fun的
功能是將形參a所指結(jié)構(gòu)
體變量s中的數(shù)據(jù)進行修改,并把a中地址作為函數(shù)值返回主函數(shù),在主函數(shù)中輸出修改后
的數(shù)據(jù)。
例如:a所指變量中的學(xué)號、姓名、和三門課的成績依次是:10001、"ZhangSan"、95、80、
88,修改后輸出t
中的數(shù)據(jù)應(yīng)為:10002、"LiSi"、96、81、89。
#include<stdio.h>
#include<string.h>
structstudent{
longsno;
charnameflO];
floatscore[3];
/**********found******亭***/
structstudent*fun(structstudent*a)
{inti;
a->sno=10002;
strcpy(a->name,nLiSiH);
/**********found*********示/
for(i=0;i<3;i++)a->score[i]+=1;
/**********found**********/
returna;
main()
{structstudents={10001,"ZhangSan",95,80,88},*t;
inti;
printf(n\n\nTheoriginaldata:\nn);
printf(n\nNo:%ldName:%s\nScores:u,s.sno,);
for(i=0;i<3;i++)printf(M%6.2fs.score[i]);
printf(M\nM);
t=fun(&s);
printf(n\nThedataaftermodified:\nn);
printf("\nNo:%ldName:%s\nScores:",t->sno,t->name);
for(i=0;i<3;i++)printf("%6.2ft->score[i]);
printf(n\nn);
)
20.給定程序中,函數(shù)fun的功能是:計算形參x所指數(shù)組中N個數(shù)的平均值(規(guī)定所有數(shù)
均為正數(shù)),將所指數(shù)組
中小于平均值的數(shù)據(jù)移至數(shù)組的前部,大于等于平均值的數(shù)據(jù)移至x所指數(shù)據(jù)的后部,平均
值作為函數(shù)值返回,
在主函數(shù)中輸出平均值和移動后的數(shù)據(jù)。
例如:有10個正數(shù):4630324061745154826,平均值為:30.5000000
移動后的輸出為:3061715264632404548
#include<stdlib.h>
#include<stdio.h>
#defineN10
doublefun(double*x)
{inti,j;doubleav,y[N];
av=0;
/**********found**********/
for(i=0;i<N;i++)av+=x[i]/N;
for(i=j=0;i<N;i++)
if(x[i]<av){
/**********found*******亭*彳/
y[j]=x[i];x[i]=-l;j++;}
i=0;
while(i<N)
{if(x[i]!=-l)yU++]=x[i];
/**********found**********/
i++;
)
for(i=0;i<N;i++)x[i]=y[i];
returnav;
)
main()
{inti;doublex[N];
for(i=0;i<N;i++){x[i]=rand()%50;printf("%4.0fn,x[i]);}
printf("\n");
printf(n\nTheaverageis:%f\nn,fun(x));
printf(M\nTheresult:\n",fun(x));
for(i=0;i<N;i++)printf(n%5.0f",x[i]);
printf(n\nn);
21.給定程序中,函數(shù)fun的功能是:計算形參中N個數(shù)的平均值(規(guī)定所有數(shù)均為正數(shù)),
將所指數(shù)組中大于平
均值的數(shù)據(jù)移至數(shù)組的前部,小于等于平均值的數(shù)據(jù)移至x所指數(shù)組的后部,平均值作為函
數(shù)值返回,在主函數(shù)
中輸出平均值和移動后的數(shù)據(jù)。
例如:有10個正數(shù):4630324061745154826,平均值為:30.5000000
移動后的輸出為:4632404548306171526
#include<stdlib.h>
#include<stdio.h>
#defineN10
doublefun(double*x)
{inti,j;doubles,av,y[NJ;
s=0;
for(i=0;i<N;i++)s=s+x[i];
/**********found**********/
av=s/N;
for(i=j=0;i<N;i++)
if(x[i]>av){
/*字字*******found******字字字字/
y[j++]=x[i];x[i]=-l;}
for(i=0;i<N;i++)
/**********found**********/
if(x[i]!=-1)y[j++]=x[i];
for(i=0;i<N;i++)x[i]=y[i];
returnav;
}
main()
{inti;doublex[N];
for(i=0;i<N;i++){x[i]=rand()%50;printf(H%4.0fn,x[i]);}
printf("\nn);
printf("\nTheaverageis:%f\n",fun(x));
printf("\nTheresult:\nu,fun(x));
for(i=0;i<N;i++)printf(n%5.OfH,x[i]);
printf("\nn);
)
22.給定程序中,函數(shù)fun的功能是:將自然數(shù)1-10以及它們的平方根寫到名為myfile3.txt
的文本文件中,然后
再順序讀出顯示在屏幕上。
#include<math.h>
#include<stdio.h>
intfun(char*fname)
{FILE*fp;inti,n;floatx;
if((fp=fopen(fname,,,w',))==NULL)return0;
for(i=1;i<=10;i++)
fprintf(fp,n%d%f\n",i,sqrt((double)i));
printfCAnSucceed!!\nu);
/**********found*********示/
fclose(fp);
printf(n\nThedatainfile:\n");
/**********found*********不/
if((fp=fopen(fname,"rn))==NULL)
return0;
fscanf(fp;'%d%f;&n,&x);
while(!feof(fp))
{printf(u%d%f\n",n,x);fscanf(fp,"%d%f',&n,&x);}
fclose(fp);
return1;
)
main()
{charfname[]=nmyfile3.txtn;
fun(fname);
)
23.給定程序中,函數(shù)fun的功能是:找出NXN矩陣中每列元素中的最大值,并按順序依次
存放于形參b所指的一
維數(shù)組中。
#include<stdio.h>
#defineN4
voidfun(int(*a)[N],int*b)
{inti,j;
for(i=0;i<N;i++){
/*字********found******¥*亭亭/
b[i]=a[0][i];
for(j=l;j<N;j++)
/**********found*********示/
if(b[i]<a[j][i])b[i]=a[j][i];
)
main()
{intx[N][N]={{12,5,8,7},{6,1,9,3},{1,2,3,4},{2,8,4,3}},y[N],i,j;
printf(',\nThematrix:\nM);
for(i=0;i<N;i++)
{forO=0;j<N;j++)printf("%4d,,,x[i]fj]);
printfCAn*');
/**********found*********琴/
fun(x,y);
printf(n\nTheresultis:");
for(i=0;i<N;i++)printf(u%3dn,y[i]);
printf(M\nH);
24.程序通過定義學(xué)生結(jié)構(gòu)體變量,存儲了學(xué)生的學(xué)號、姓名和3門課的成績。函數(shù)fun的
功能是將形參a中的數(shù)據(jù)
進行修改,把修改后的數(shù)據(jù)作為函數(shù)值返回主函數(shù)進行輸出。
例如:傳給形參a的數(shù)據(jù)中,學(xué)號、姓名、和3門課的成績依次是:10001、"ZhangSan”、
95、80、88,修改后
的數(shù)據(jù)應(yīng)為:10002、"LiSi"、96、81、89。
#include<stdio.h>
#include<string.h>
structstudent{
longsno;
charname[10];
floatscore[3];
);
structstudentfun(structstudenta)
{inti;
a.sno=10002;
/**********found**********/
strcpy(,uLiSi");
/**********found**********/
for(i=0;i<3;i++)a.score[i]+=1;
returna;
I
main()
{structstudents={10001,"ZhangSan1,,95,80,88},t;
inti;
printf("\n\nTheoriginaldata:\nn);
printf(n\nNo:%ldName:%s\nScores:",s.sno,);
for(i=0;i<3;i++)printf("%6.2f",s.score[i]);
printf("\nH);
t=fun(s);
printf("\nThedataaftermodified:\nn);
printf(n\nNo:%ldName:%s\nScores:u,t.sno,);
for(i=0;i<3;i++)printf(n%6.2f”,t.score[i]);
printf(n\nM);
25.人員的記錄山編號和出生年、月、II組成,N名人員的數(shù)據(jù)已在主函數(shù)中存入結(jié)構(gòu)體數(shù)
組std中,且編號唯一
o函數(shù)fun的功能是:找出指定編號人員的數(shù)據(jù),作為函數(shù)值返回,山主函數(shù)輸出,若指定
編號不存在,返回數(shù)
據(jù)中的編號為空串。
#include<stdio.h>
#include<string.h>
#defineN8
typedefstruct
{charnum[10J;
intyear,month,day;
}STU;
STUfun(STU*std,char*num)
{inti;STUa={"”,9999,99,99};
for(i=0;i<N;i++)
/**********found**********/
if(strcmp(std[i].num,num)==O)
return(std[i]);
return
main()
{STUstd[Nl={{"111111",1984,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《創(chuàng)業(yè)學(xué)》重點題集
- 年產(chǎn)1萬噸碳酸二甲酯合成項目可行性研究報告
- 2024年動量守恒定律【八大題型】(含答案)
- 2023年傳統(tǒng)銀飾資金申請報告
- 高中生元旦晚會主持的開場白范文(35篇)
- 2024年中考?xì)v史考前速背知識梳理
- 離任發(fā)言:國企黨委書記在離任干部大會上發(fā)言材料
- 每月實習(xí)報告
- 統(tǒng)計的實習(xí)報告
- 自由與自律演講稿
- 體育二年級上冊 安全地進行游戲(教案)
- You Raise Me Up二部合唱簡譜
- DB34T∕ 3177-2018 公路水運工程預(yù)應(yīng)力張拉有效應(yīng)力檢測指南
- 北京市海淀區(qū)九年級(上)期中數(shù)學(xué)試卷-
- 吉祥物的設(shè)計 課件 2024-2025學(xué)年人教版(2024)初中美術(shù)七年級上冊
- 神東煤炭集團招聘筆試題庫2024
- 吉林省吉林市第九中學(xué) 2023-2024學(xué)年八年級上學(xué)期期中考試英語試卷(無答案)
- 《對校園欺凌說“不”》教學(xué)設(shè)計-山東教育出版社《心理健康教育》七年級下冊
- 云服務(wù)器租賃合同三篇
- 人教版(2024)一年級道德與法治上冊第二單元第8課《課余生活真豐富》教學(xué)課件
- 《義務(wù)教育物理課程標(biāo)準(zhǔn)》測試題及詳細(xì)答案2022年修訂版
評論
0/150
提交評論