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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論