國家二級(C語言)機(jī)試模擬試卷5(共27題)_第1頁
國家二級(C語言)機(jī)試模擬試卷5(共27題)_第2頁
國家二級(C語言)機(jī)試模擬試卷5(共27題)_第3頁
國家二級(C語言)機(jī)試模擬試卷5(共27題)_第4頁
國家二級(C語言)機(jī)試模擬試卷5(共27題)_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

國家二級(C語言)機(jī)試模擬試卷5(共9套)(共27題)國家二級(C語言)機(jī)試模擬試卷第1套一、程序填空題(本題共1題,每題1.0分,共1分。)1、請完成函數(shù)fun(),它的功能是:求Fibonacc數(shù)列中小于t的最大的一個數(shù),結(jié)果由函數(shù)0返回。Fibonacc數(shù)列F(n)定義為:F(0)=0,F(xiàn)(1)=1F(n)=F(n-1)+F(n-2)例如:t=1000時,函數(shù)為987。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在下劃線上填入所需的內(nèi)容。#include<conio.h>#include<stdio.h>#include<math.h>infun(intt){inta=l,b=1,c=0,i;do{【】;a=b;b=C;}while(【】);c=【】;returnC;}main(){intn;clrscr();n=1000;printf("n=%d,f=%d\n",n,fun(n));}標(biāo)準(zhǔn)答案:intfun(intt){inta=1,b=1,c=O,i;do{c=a+b;a=b;b=c;}while(c<t);C=a;returnc;}知識點解析:該數(shù)列的最終結(jié)果是由兩個數(shù)列之和組成,所以可以在循環(huán)體內(nèi)部始終把c看成是前兩項之和(即第n項),而a始終代表第n-2項,b通過不斷地重新賦值,但始終代表第n-1項。應(yīng)注意,退出循環(huán)時得到的數(shù)c是大于指定比較的數(shù)的最小的數(shù),而它的前一個數(shù)就是小于指定比較的數(shù)的最大的數(shù)。二、程序修改題(本題共1題,每題1.0分,共1分。)2、在主函數(shù)中從鍵盤輸入若干個數(shù)放入數(shù)組中,用0結(jié)束輸入并放在最后一個元素中。下列給定程序中,函數(shù)fun()的功能是計算數(shù)組元素中值為負(fù)數(shù)的平均值(不包括0)。例如:數(shù)組中元素的值依次為43,47,-21,53,-8,12,0,則程序的運行結(jié)果為-25.333333。請改正程序中的錯誤,使它能得到正確結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include<conio.h>#include<stdio.h>doublefun(intx[]){doublesum=0.0;intc=0,i=0;/*************found*************/while(x[i]==0){if(x[i]<0){sum=sum+x[i];c++;}i++;}/************found***********/sum=sum\c;returnsum;}main(){intx[1000];inti=0;clrscr();printf("\nPleaseentersomedata(endwith0):”);do{scanf("%d",&x[i]);}while(x[i++]!=0);printf("%f\n",fun(x));}標(biāo)準(zhǔn)答案:(1)錯誤:while(x[i]==0)正確:while(x[i]!=0)(2)錯誤:sum=sum\c;正確:sum=sum/c;知識點解析:錯誤1:此處考查的是對循環(huán)條件的理解,當(dāng)被判斷的數(shù)組元素為0時,說明這是數(shù)組的最后一個元素,此時要跳出循環(huán)。錯誤2:C語言中的除法運算符是“/”,而不是“、”。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,它的功能是:求任意兩個正整數(shù)的最小公倍數(shù)和最大公約數(shù),最小公倍數(shù)放在指針變量bei所指的變量中,最大公約數(shù)放在指針變量yue所指的變量中。注意:部分源程序在文件PROG1.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。vOidfun(intm,intn,int*bei,int*yue){ints=l,i;if(m>n){s=m;m=n;n=S;}for(i=2,s=1;i<mi++)if((m%i=0)&&(n%i=0)){}*yue=s;*bei=S*m*n;}main(){inta,b,beishu,yueshu;chscr();printf("pleaseinputa,b:");scanf("%d,%d,"&a,&b);fun(a,b,&beishu,&yueshu);printf("a,bbeishu:%d\n",beishu);printf("a,byueshu:%d\n",Yueshu);}標(biāo)準(zhǔn)答案:voidfun(intm,intn,int*bei,int*yue){ints=l,i;if(m>n){s=m;m=n;n=s;}for(i=2,s=1;i<m;i++)if((m%i==0)&&(n%i==0)){m=m/i;n=n/i;S=s*i:i=1:}*yue=s;*bei=s*m*n;}知識點解析:本題考查編程解決一般數(shù)學(xué)問題的能力。本題函數(shù)fun的實現(xiàn)了拐除法,在2~m之間從小到大依次取數(shù)i同時整除m和n,若能整除,則累乘到s中,最后的s就是最大公約數(shù),s*m*n就是最小公倍數(shù)。國家二級(C語言)機(jī)試模擬試卷第2套一、程序填空題(本題共1題,每題1.0分,共1分。)1、函數(shù)fun的功能是:計算的前n項。若x=2.5,函數(shù)值為:12.182340。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#includedoublefun(doublex,intn){doublef,t;inti;f=1.0;/******************found*************/t=【1】;/******************found*************/for(i=【2】;i標(biāo)準(zhǔn)答案:(1)1(2)1(3)i知識點解析:第一空:根據(jù)“returnf;",“f+=t;"可知f是級數(shù)和返回值,t代表級數(shù)項,第一空處是對t進(jìn)行初始化,級數(shù)是從第二項開始變化的,顯然t應(yīng)該初始化為1,故第一空處應(yīng)為“1"。第二空:函數(shù)的功能是求級數(shù)前n項和,“f=1.0:"f初始化為1,第一項不用再求,因此在循環(huán)當(dāng)中還需要求后面的n—1個級數(shù)項之和,故循環(huán)變量i從1變化到n-1。剛好循環(huán)n-1次,故第二空處應(yīng)為“1"。第三空:由審題分析可知級數(shù)項的變化規(guī)律是后一項是在前一項的基礎(chǔ)上乘以x除以n,故第三空處應(yīng)為“i"。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數(shù)fun的功能是:讀入一個字符串(長度<20),將該字符串中的所有字符按ASCII碼升序排序后輸出。例如,若輸入:edcba,則應(yīng)輸出:abcde。請改正程序中的錯誤,使它能統(tǒng)計出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#includevoidfun(chart[]){charc;inti,j;/*************found************/for(i=strlen(t);i;i--)for(j=0;j標(biāo)準(zhǔn)答案:(1)for(i=strlen(t)一1;i;i一一)或for(i=strlen(t)一1;i>0;i一一)(2)if(t[j]>t[j+1])知識點解析:(1)字符串的長度包括尾符,將字符串中的字符按ASCⅡ碼排序,應(yīng)排除尾符號,所以第一個標(biāo)識下的“for(i=strlen(t);i;i--)"改為“for(i=strlen(t)-1;i;i--)"。(2)題干中要求升序排列,第二個標(biāo)識下的“if(t[j]t[j+1])"。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、請編寫一個函數(shù)fun,它的功能是:將一個數(shù)字字符串轉(zhuǎn)換為一個整數(shù)(不得調(diào)用C語言提供的將字符串轉(zhuǎn)換為整數(shù)的函數(shù))。例如,若輸入字符串"-1234",則函數(shù)把它轉(zhuǎn)換為整數(shù)值-1234。注意:部分源程序存在文件PROGl.C文件中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#include#includelongfun(char*p){}main()/*主函數(shù)*/{chars[6];voidNONO();longn;printf("Enterastring:\n");gets(s);n=fun(s);printf("%ld\n",n);NONO();}voidNONO(){/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*fp,*wf;inti;chars[20];longn;fp=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(fp,"%s",s);n=fun(s);fprintf(wf,"%ld\n",n);}fclose(fp);fclose(wf);}標(biāo)準(zhǔn)答案:longs=0,t;inti=0,j,n=strlen(p),k,s1;//求得字符串長度nif(p[0]==’-’)i++;for(j=i;j<=n一1;j++){t=p[j]一’0’;//把字符變成數(shù)值s1=10;for(k=j;k知識點解析:進(jìn)入fun函數(shù),根據(jù)前面的分析:從左到右移動指針p。利用上一步不斷把t中的數(shù)據(jù)左移一位,把p當(dāng)前所指字符轉(zhuǎn)換成數(shù)字再加上低位,從而把數(shù)字字符串轉(zhuǎn)換成一個整數(shù)。國家二級(C語言)機(jī)試模擬試卷第3套一、程序填空題(本題共1題,每題1.0分,共1分。)1、請補(bǔ)充函數(shù)proc(),該函數(shù)的功能是:計算下面公式的值(k<50):例如,當(dāng)k=6時,m=6515.100198。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)函數(shù)proc()的橫線上填入所編寫的若干表達(dá)式或語句。試題程序:#include#include#includedoubleproe(intn){doublem=【1】;doublef=0.0;doublep=0.0;inti=0;intk;for(k=1;【2】;k++){f=2*k-1;p=2*k+1;for(i=1;i<2*k+1;i++)f*=2*k-1;for(i=1:i%2*k-1;i++)P*=2*k+1;【3】;}returnm;}voidmain(){intk=0;doublem;system("CLS");printf("\nPleaseinputk(k<50):")scanf("%d",&k);m=proc(k);printf("\ns=%if",m);}標(biāo)準(zhǔn)答案:【1】1【2】k<=n【3】m*=f/p知識點解析:題目中要求的是各項元素的乘積,因此其初始值為1,【1】處填“1”;變量k表示的是乘積的項數(shù),故其一定要小于等于n,因此【2】處填“k<=n”;由函數(shù)proc()可知,變量f表示各項的分子,變量p表示各項的分母。因此【3】處填“m*=f/p”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中fun函數(shù)的功能是:根據(jù)形參m,計算如下公式的值。t=1+1/2+1/3+1/4+…+1/m例如,若輸入5,則應(yīng)輸出2.283333。請改正程序中的錯誤或在下劃線處填上適當(dāng)?shù)膬?nèi)容并把下劃線刪除,使它能計算出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#includedoublefun(intm){doublet=1.0;inti;for(i=2;i<=m;i++)/**********found**********/t+=1.0/k;/**********found**********/returnt}main(){intm;printf("\nPleaseenter1integernumber:");scanf("%d",&m);printf("\nTheresultis%lf\n",fun(m));}標(biāo)準(zhǔn)答案:t+=1.0/i;returnt;知識點解析:(1)第一個標(biāo)識下,在以i為循環(huán)參數(shù)的for循環(huán)中進(jìn)行公式累加,每一項為1.0/i,所以“t+=1.0/k;”改為“t+=1.0/i;”。(2)第二個標(biāo)識下,首先根據(jù)題干,將“填空”刪除,函數(shù)定義為“doublefun(intn)”,它有double型的返回值,所以這里返回累加公式的計算結(jié)果,即“returnt;”。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、請編寫一個函數(shù)fun,它的功能是:根據(jù)以下公式求π的值(要求滿足精度0.0005,即某項小于0.0005時停止迭代):程序運行后,如果輸入精度0.0005,則程序輸出為3.140578。注意:部分源程序存在文件PROGl.C文件中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#include#includedoublefun(doubleeps){}main(){doublex;voidNONO();printf("Inputeps:");scanf("%lf",&x);printf("\neps=%lf,PI=%lf\n",x,fun(x));NONO();}voidNONO(){/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*fp,*wf;inti;doublex;fp=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(fp,"%lf",&x);fprintf(wf,"%lf\n",fun(x));}fclose(fp);fclose(wf);}標(biāo)準(zhǔn)答案:doubles;floatn,t,pi;t=1;pi=0;n=1.0;s=1.0;//對各個累加項,累加積等賦初始化值while((fabs(s))>=eps)//精度判斷{pi+=s;//pi存放累加和t=n/(2*n+1);//每一項s*=t;//累積n++;}pi=pi*2;//求得π值returnpi;知識點解析:進(jìn)入fun函數(shù),根據(jù)前面的分析:(1)根據(jù)題意,需要把每一項累加起來;若每一累加項的值放在t中,后一項等于前一項累加項的值乘以n/(2*n+1)來求得。(2)根據(jù)公式將求到的π/2的值放到變量pi中,每累加一次,n的值就增加1,以便求下一個累加項,不斷重復(fù),直到滿足題目中的精度要求。國家二級(C語言)機(jī)試模擬試卷第4套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:計算形參x所指數(shù)組中N個數(shù)的平均值(規(guī)定所有數(shù)均為正數(shù)),作為函數(shù)值返回;并將大于平均值的數(shù)放在形參y所指數(shù)組中,在主函數(shù)中輸出。例如,有10個正數(shù):4630324061745154826,平均值為:30.500000主函數(shù)中輸出:4632404548請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!標(biāo)準(zhǔn)答案:(1)0(2)x[i]/N(3)j++知識點解析:本題中函數(shù)fun的功能是計算形參x所指數(shù)組中N個數(shù)的平均值,并將大于平均值的數(shù)放在形參y所指數(shù)組中。計算平均值時,逐個對數(shù)組元素進(jìn)行累加,得到累加和之后除以數(shù)組元素數(shù)量便得到平均值。二、程序修改題(本題共1題,每題1.0分,共1分。)2、已知一個數(shù)列從第0項開始的前三項分別為0,0,1,以后的各項都是其相鄰的前三項之和。給定程序MODll.C中函數(shù)fun的功能是:計算并輸出該數(shù)列前n項的平方根之和。n的值通過形參傳入。例如,當(dāng)n=10時,程序的輸出結(jié)果應(yīng)為:23.197745。請改正程序中的錯誤,使程序能輸出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!標(biāo)準(zhǔn)答案:(1)doublefun(intn)(2)returnsum;知識點解析:本題中函數(shù)的功能是計算并輸出該數(shù)列前n項的平方根之和sum。解題思路首先根據(jù)題干求得每一項的值,然后再計算數(shù)列前n項的平方根之和。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、編寫函數(shù)fun,它的功能是:求小于形參n同時能被3與7整除的所有自然數(shù)之和的平方根,并作為函數(shù)值返回。例如若n為1000時,程序輸出應(yīng)為:s=153.909064。注意:部分源程序在文件PROGl.C文件中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。標(biāo)準(zhǔn)答案:知識點解析:該程序功能是求解同時能被3與7整除的所有自然數(shù)之和的平方根。解題過程,首先利用if條件表達(dá)式“if(i%3==0&&i%7==0)”求能同時被3與7整除的數(shù),然后在此基礎(chǔ)上利用C語言中的sqrt語句求平方根。國家二級(C語言)機(jī)試模擬試卷第5套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:對形參ss所指字符串?dāng)?shù)組中的M個字符串按長度由短到長進(jìn)行排序。ss所指字符串?dāng)?shù)組中共有M個字符串,且串長#include#defineM5#defineN20voidfun(char(*ss)[N]){inti,j,k,n[M];chart[N];for(i=0;in[j])【2】;if(k!=i){strcpy(t,ss[i]);strcpy(ss[i],ss[k]);/**********found**********/strcpy(ss[k],【3】);n[k]=n[i];}}}main(){charss[M][N]={"shanghai","guangzhou","beijing","tianjing","cchongqing"};inti;printf("\nTheoriginalstringsare:\n");for(i=0;i標(biāo)準(zhǔn)答案:i+1k=jt知識點解析:第一空:由審題分析可知,外循環(huán)i=0時,內(nèi)循環(huán)變量從i+1到M-1(下標(biāo)從0開始),從M-1個字符串中再挑出一個最短的字符串,故第一空處應(yīng)為“i+1”。第二空:k記錄最短字符串的下標(biāo),內(nèi)循環(huán)開始前k賦初值i,內(nèi)循環(huán)從剩下的M-i個字符串里面找最短的,比較k字符串和j字符串的長度大小,如果n[k]>n[j],則把j賦給k,即第二空處應(yīng)為“k=j”。第三空:if(k!=i)說明找到了新的更短的字符串,那么把它和第i個字符串交換,因此第三空處應(yīng)為“t”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C的功能是:讀入一個英文文本行,將其中每個單詞的第一個字母改成大寫,然后輸出此文本行(這里的“單詞"是指由空格隔開的字符串)。例如,若輸入:Iamstudenttotaketheexamination,則應(yīng)輸出:IAmAStudentToTakeTheExamination。請改正程序中的錯誤,使程序能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#include/**********************found***********************/include/**********************found***********************/upfst(charp){intk=0;for(;*p;p++)if(k){if(*p==’’)k=0;}elseif(*p!=’’){k=1;*p=toupper(*p);}}main(){charchrstr[81];printf("\nPleaseenteranEnglishtextline:");gets(chrstr);printf("\ninBeforechanging:\n%s",chrstr);upfst(chrstr);printf("inAfterchanging:\n%s\n",chrstr);}標(biāo)準(zhǔn)答案:(1)#include(2)upfst(char*p)知識點解析:(1)第一標(biāo)識下“include"是將頭文件"stdio.h"包含進(jìn)來,包含頭文件應(yīng)使用“#include",故第一標(biāo)識下應(yīng)改成“#includc"。(2)在主函數(shù)內(nèi),函數(shù)調(diào)用“upfst(chrstr);",而chrstr是數(shù)組名,表示的是數(shù)組的首地址,故upfst函數(shù)的參數(shù)是指針,第二標(biāo)識下應(yīng)改成“upfst(char*p)"。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、編寫程序,實現(xiàn)矩陣(3行3列)的轉(zhuǎn)置(即行列互換)例如,輸入下面的矩陣:程序輸出:注意:部分源程序在文件PROGl.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#includevoidfun(intarray[3][3]){}main(){inti,3;voidNONO();intarray[3][3]={{100,200,300},{400,500,600},{700,800,900}};for(i=0;i<3;i++){for(j=0;j<3;j++)printf(”%7d”,array[i][j]);printf(”in”);}fun(array);printf(”Convertedarray:in”);for(i=0;i<3;i++)(for(j=0;j<3;j++)printf(”%7d”,array[i][j]);printf(”\n”);}NONO();}voidNONO(){/*請在此函數(shù)內(nèi)打開文件,輸入測試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/inti,j,array[3][3];FILE*rf,*wf;rf=fopen(”in.dat”,”r”);wf=fopen(”out.dat”,”w”);for(i=0;i<3;i++)for(j=0;j<3;j++)fscanf(rf,”%d”,&array[i][j]);fun(array);for(i=0;i<3;i++)(for(j=0;j<3;j++)fprintf(wf,”%7d”,array[i][j]);fprintf(wf,”\n”);}fclose(rf);fclose(wf);}標(biāo)準(zhǔn)答案:inti,j,arr[3][3];memcpy(arr,array,9*sizeof(int));for(i=0;i<3;i++)for(j=0;j<3;j++)array[i][j]=arr[j][i];知識點解析:進(jìn)入:fun函數(shù),根據(jù)前面的分析:通過兩層循環(huán)對矩陣中的元素進(jìn)行交換。其中,外重循環(huán)以行為控制條件,對矩陣的行進(jìn)行循環(huán)。內(nèi)重循環(huán)在列循環(huán)中對元素進(jìn)行交換。國家二級(C語言)機(jī)試模擬試卷第6套一、程序填空題(本題共1題,每題1.0分,共1分。)1、請完成函數(shù)fun(),它的功能是:用選擇法對數(shù)組中n個元素按從大到小的順序進(jìn)行排序。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在下劃線上填入所需的內(nèi)容。#include<stdio.h>#defineN20voidfun(inta[],intn){inti,j,t,p;for(j=0;j<n-1;1){p=j;for(i=j;i<n;i++)if(a[i]2a[p]p=i;t=a[p];a[p]=a[j];a[3]=t;}}main(){inta[N]={11,32,-5,2,14},i,m=5;for(i=0;i<m;i++)printf("%d\n",a[i});fun(a,m);for(i=0;i<m;i++)printf("%d"a[i]);}標(biāo)準(zhǔn)答案:voidfun(inta[],intn){inti,j,t,p;for(j=0;j<n-1;j++){p=j;for(i=j;i<n;i++)if(a[i]>a[p])p=i;t=a[p];a[P]=a[j];a[j]=t;}}知識點解析:程序的基本思路是依次用當(dāng)前取得的元素和它后面的其他元素進(jìn)行比較,這樣在比較完后,可以保證當(dāng)前位置的當(dāng)前元素存放著最大數(shù)。按同樣方法取得次最大數(shù)??瞻?處填j++,循環(huán)變量j依次增1,取出每個數(shù);空白2處填>,按照題目要求是從大到小排序:空白3處填j,借助中間變量交換兩個數(shù)。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODl1.C中函數(shù)fun的功能是:從低位開始取出長整型變量s中奇數(shù)位上的數(shù),依次構(gòu)成一個新數(shù)放在t中。高位仍在高位,低位仍在低位。例如:當(dāng)s中的數(shù)為2736598時,t中的數(shù)為:2358。#include<conio.h>#include<stdio.h>/************found************/voidfun(longs,longt){longs1=10;*t=S%10;while(s>0){s=s/l00;*t=S%10*s1+*t;/************found************/s1=s1*100;}}main(){longs,t;clrscr();printf("\nPleaseenters:”);scanf("%ld",&s);fun(s,&t);printf("Theresultis:%1d\n",t);}標(biāo)準(zhǔn)答案:voidfun(longs,longt)改為voidfun(longs,long*t)s1=s1*100;改為s1=s1*10;知識點解析:從fun函數(shù)可以看出,變量t應(yīng)該是指針變量。因此,在形參表列中,t之前應(yīng)該加“*”;從s中取出奇數(shù)位構(gòu)建新數(shù)是逐位進(jìn)行,而不是跳位的。因此,s1應(yīng)該乘以10。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、下列程序定義了NXN的二維數(shù)組,并在主函數(shù)中賦值。請編寫函數(shù)fun(),函數(shù)的功能是求出數(shù)組周邊元素的平方和并作為函數(shù)值返回給主函數(shù)中的S。例如:若a數(shù)組中的值為a=012791112155221611197910254141則返回主程序后s的值應(yīng)為310。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。試題程序:#include<stdio.h>#include<conio.h>#include<stdlib.h>#defineN5intfun(intw[][N]){}main(){inta[N)[N]={0,1,2,7,9,1,1l,2l,5,5,2,21,6,11,1,9,7,9,10,2,5,4,1,4,1};inti,j;intS;clrscr();printf("*****Thearray***+*\n");for(i=0;i<N;i++){for(j=0;j<N;i++){printf(“%4d”,a[i][j]);}printf("\n");}s=fun(a);printf(“*****THERESULT*****\n”);printf("Thesumis:%d\n",s);}標(biāo)準(zhǔn)答案:intfun(intw[])[N]){inti,j,k=0;ints=0;for(i=0;i<N;i++)for(j=0;j<N;j++)if(i==0||i==N-1||j==0||j==N-1)/*只要下標(biāo)中有一個為0或N-1,則它一定是周邊元素*/{s=s+w[i][j]*w[i][j];/*將周邊元素求平方和*/}returns;/+返回周邊元素的平方和*/}知識點解析:該題采用逐一判斷的方式,周邊元素的下標(biāo)一定有一個是0或N-1,且只要下標(biāo)中有一個為0或N-1,則它一定是周邊元素。國家二級(C語言)機(jī)試模擬試卷第7套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是將a和b所指的兩個字符串轉(zhuǎn)換成面值相同的整數(shù),并進(jìn)行相加作為函數(shù)值返回,規(guī)定字符串中只含9個以下數(shù)字字符。例如,主函數(shù)中輸入字符串:32486和12345,在主函數(shù)中輸出的函數(shù)值為:44831。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!標(biāo)準(zhǔn)答案:(1)ˋ0ˊ(2)s++(3)ctod(a)+ctod(b)知識點解析:本題中函數(shù)fun的功能是將a和b所指的兩個字符串轉(zhuǎn)換成對應(yīng)值的整數(shù)并進(jìn)行相加作為函數(shù)值返回,函數(shù)ctod(char*s)的功能是將字符串轉(zhuǎn)化為long整型,故在fun函數(shù)內(nèi)調(diào)用ctod函數(shù)完成字符串到整數(shù)的變換,然后求和即可。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數(shù)fun的功能是:統(tǒng)計一個無符號整數(shù)中各位數(shù)字值為零的個數(shù),通過形參傳回主函數(shù);并把該整數(shù)中各位上最大的數(shù)字值作為函數(shù)值返回。例如,若輸入無符號整數(shù)30800,則數(shù)字值為零的個數(shù)為3,各位上數(shù)字值最大的是8。請改正函數(shù)fun中指定部位的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!標(biāo)準(zhǔn)答案:(1)if(t==0)(2)*zero=count;知識點解析:本題中函數(shù)的功能是統(tǒng)計一個無符號整數(shù)中各位數(shù)字值為0的個數(shù)。對無符號數(shù)進(jìn)行截取,然后對每個數(shù)字進(jìn)行判斷并統(tǒng)計。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,函數(shù)的功能是:將大于形參m且緊靠m的k個素數(shù)存入xx所指的數(shù)組中。例如,若輸入17,5,則應(yīng)輸出:19,23,29,3l,37。注意:部分源程序在文件PROGl.C文件中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花插號中填入你編寫的若干語句。標(biāo)準(zhǔn)答案:知識點解析:(1)該程序功能是取大于整數(shù)m且緊靠m的k個素數(shù)。其中,素數(shù)是指只能被1和自身除盡的正整數(shù)(>1),所以判別n是否為素數(shù),只要用2~n-1這些數(shù)逐個去除n,判斷余數(shù)是否為0即可。只要有一次余數(shù)為0,n就不是素數(shù),否則n為素數(shù)。它的解題思路,可以分解為以下幾步:判斷是否為素數(shù)一判斷素數(shù)個數(shù)是否滿足要求一存儲素數(shù)到指定的數(shù)組。(2)從已給部分源程序的main主函數(shù)開始入手,核心函數(shù)“fun(m,n,zz);”中的參數(shù)由題目可知,zz存放素數(shù),n為要求的素數(shù)個數(shù)。國家二級(C語言)機(jī)試模擬試卷第8套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:將形參指針?biāo)附Y(jié)構(gòu)體數(shù)組中的三個元素按num成員進(jìn)行升序排列。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#includetypedefstruct{intnum;charname[10];}PERSON;/**********found**********/voidfun(PERSON【1】){/**********found**********/【2】temp;if(std[0].num>std[1].num){temp=std[0];std[0]=std[1];std[1]=temp;}if(std[0].num>std[2].num){temp=std[0];std[0]=std[2];std[2]=temp;}if(std[1].num>std[2].num){temp=std[1];std[1]=std[2];std[2]=temp;}}main(){PERSONstd[]={5,"Zhanghu",2,"WangLi",6,"LinMin"};inti;/**********found**********/fun(【3】);printf("\nTheresultis:\n");for(i=0;i<3;i++)printf("%d,%s\n",std[i].num,std[i].name);}標(biāo)準(zhǔn)答案:*stdPERSONstd知識點解析:第一空:fun函數(shù)的功能是將形參指針?biāo)附Y(jié)構(gòu)體數(shù)組中的三個元素進(jìn)行排序,可知fun函數(shù)的參數(shù)是指針,由“if(std[0].num>std[1].num)”可知形參名為std,故第一空處應(yīng)為“voidfun(PERSON*std)”。第二空:temp變量用來進(jìn)行交換時臨時保存變量值,由“temp=std[0];”可知temp是PERSON結(jié)構(gòu)體變量,故第二空處的temp結(jié)構(gòu)體定義應(yīng)為“PERSONtemp;”。第三空:這里是調(diào)用fun函數(shù),fun函數(shù)的參數(shù)是結(jié)構(gòu)體變量指針,std是結(jié)構(gòu)體數(shù)組,數(shù)組名相當(dāng)于數(shù)組的首地址,故第三空處應(yīng)為“fun(std);”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll。C中的函數(shù)Creatlink的功能是創(chuàng)建帶頭結(jié)點的單向鏈表,并為各結(jié)點數(shù)據(jù)域賦0到m-1的值。請改正函數(shù)Creatlink中指定部位的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#includetypedefstructaa{intdata;structaa*next;}NODE;NODE*Creatlink(intn,intm){NODE*h=NULL,*p,*s;inti;/**********found***********/p=(NODE)malloc(sizeof(NODE));h=p;p->next=NULL;for(i=1;i<=n;i++){s=(NODE*)malloc(sizeof(NODE));s->data=rand()%m;s->next=p->next;p->next=s;p=p->next;}/**********found***********/returnp;}outlink(NODE*h){NODE*p;p=h->next;printf("\n\nTHELIST:\n\nHEAD");while(p){printf("->%d",p->data);p=p->next;}printf("\n");}main(){NODE*head;head=Creatlink(8,22);outlink(head);}標(biāo)準(zhǔn)答案:p=(NODE*)malloc(sizeof(NODE));returnh;知識點解析:(1)第一標(biāo)識下“p=(NODE)malloc(sizeof(NODE));”,maclloc函數(shù)的返回類型是void*類型,表示未確定類型的指針,因此需要指針類型轉(zhuǎn)換,而“(NODE)”不是指針類型,故第一標(biāo)識下應(yīng)改成“p=(NODE*)malloc(sizeof(NODE));”。(2)第二個標(biāo)識下,最后將單鏈表返回,應(yīng)該是返回頭指針h指向的鏈表,而不是其中的一個節(jié)點p,所以“returnp;”應(yīng)該改為“returnh;”。三、

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論