計算機二級考試大綱+C語言習(xí)題集+二級上機練習(xí)_第1頁
計算機二級考試大綱+C語言習(xí)題集+二級上機練習(xí)_第2頁
計算機二級考試大綱+C語言習(xí)題集+二級上機練習(xí)_第3頁
計算機二級考試大綱+C語言習(xí)題集+二級上機練習(xí)_第4頁
計算機二級考試大綱+C語言習(xí)題集+二級上機練習(xí)_第5頁
已閱讀5頁,還剩105頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論