版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
國家二級C語言機試(操作題)模擬試卷3(共9套)(共27題)國家二級C語言機試(操作題)模擬試卷第1套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(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、10。請在程序的下畫線處填入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<stdlib.h>#defineN6typedefstructnode{intdata;struernode*next;}NODE;voidfun(NODE*h){NODE*p,*q;intt;p=h;while(p){/*********found*********/q=【1】;/*********found*********/while(【2】){if(p一>data>q一>data){t=P一>data;p一>data=q一>data;q一>data=t;)q=q一>next;}/*********found*********/p=【3】;}}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("ThelistisNULL!\n");else{printf("\nHead");do{printf("一>%d",p一>data);p=p一>next;}while(p!=NULL);printf("一>End\n");}}main(){NODE*head;inta[N]={0,10,4,2,8,6};head=creatlist(a);printf("\nTheoriginallist:\n");outlist(head);fun(head);printf("\nThelistafterinverting:\n");outlist(head);}標準答案:(1)p一>next(2)q(3)p一>next知識點解析:填空1:從第2個while循環(huán)可知,q的初值應(yīng)該為p的next,故此空應(yīng)該填寫p一>next。填空2:第2個’while循環(huán)表示的是每次從鏈表剩下的樹中找出最小的數(shù),因此此空應(yīng)該以q是否為空來判斷循環(huán)是否結(jié)束,所以此空應(yīng)該填寫q。填空3:當(dāng)找到一個最小的數(shù)時p應(yīng)該向后移,因此此空應(yīng)該填寫p一>next。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun的功能是:將s所指字符串中的字母轉(zhuǎn)換為按字母序列的后續(xù)字母(如“z”轉(zhuǎn)化為“A”,“z”轉(zhuǎn)化為“a”),其他字符不變。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdlib.h>#~nclude<stdio.h>#include<ctype.h>#include<conio.h>voidfun(char*s){/*********found*********/while(*s!=’@’){if(*s>=’A’&&*s<=’Z’||*s>=’a’&&*s<=’z’){if(*s==’Z’)*s=’A’;elseif(*s一’z’)*s=’a’;elSe*s+=1;}/*********found*********/(*s)++;}}voidmain(){chars[80];system("CLS");printf("\nEnterastringwithlength<80:\n\n");gets(s);printf("\nThestring:\n\n");puts(s);fun(s);printf("\n\nTheCords:\n\n");puts(s);}標準答案:(1)while(*s)或while(*s!=’\0’)(2)s++;知識點解析:(1)通過while語句可對字符串所有字符進行遍歷,循環(huán)條件是對當(dāng)前字符進行判斷,若當(dāng)前字符不是字符串結(jié)尾,則對其進行其他操作。(2)因為該循環(huán)通過指針s的移動遍歷字符Voidfun(int,*w,intp,intn)三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,其功能是:移動一維數(shù)組中的內(nèi)容,若數(shù)組中有n個整數(shù),要求把下標從0~P(含p,p小于等于n一1)的數(shù)組元素平移到數(shù)組的最后。例如,一維數(shù)組中的原始內(nèi)容為:1、2、3、4、5、6、7、8、9、10;P的值為3。移動后,一維數(shù)組中的內(nèi)容應(yīng)為:5、6、7、8、9、10、1、2、3、4。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>#defineN80voidfun(int*w,intp,intn){}main(){inta[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};inti,p,n=15;printf("Theoriginaldata:\n");for(i=0;i<n;i++)printf("%3d",a[i]);printf("\n\nEnterp:");scanf("%d",&p);fun(a,p,n);printf("\nThedataaftermov-ing:\n");for(i=0;i<n;i++)printf("%3d",a[i]);printf("\n\n");}標準答案:voildfun(chara[],charb[],intn){inti,k=0;for(i=0;a[i]!=’\0’;i++)if(i!=n)/*將不是指定下標的字符存入數(shù)組b中*/{intx,j,ch;for(x=0;x<=p;x++){ch=w[0];for(j=1;j<n;j++)/*通過for循環(huán)語句,將p+1到n一1(含n一1)之間的數(shù)組元素依次向前移動p+1個存儲單元*/{w[j一1]=w[j];}w[n一1]=ch;/*將0到p個數(shù)組元素逐一賦給數(shù)組w[n一1]*/}}知識點解析:本題要求把下標從0~p(含p,p小于等于n—1)的數(shù)組元素平移到數(shù)組的最后,可以根據(jù)輸入的p值,通過for循環(huán)語句,將p+1—n—l(含n一1)之間的數(shù)組元素依次向前移動p+1個存儲單元,即w[j一1]=w[j];,同時將0~p個數(shù)組元素逐一賦給數(shù)組w[n一1],也就是通過語句w[n一1]=ch;來實現(xiàn)此操作的。國家二級C語言機試(操作題)模擬試卷第2套一、程序填空題(本題共1題,每題1.0分,共1分。)1、下列給定程序中,函數(shù)fun的功能是:在形參ss所指字符串?dāng)?shù)組中,將所有串長超過k的字符串中后面的字符刪除,只保留前面的k個字符。ss所指字符串?dāng)?shù)組中共有N個字符串,且串長小于M。請在程序的下畫線處填入正確的內(nèi)容并將下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<string.h>#defineN5#defineM10/*********found*********/voidfun(char(*ss)【1】,intk){inti=0;/*********found*********/while(i<【2】){/*********found*********/ss[i][k]=【3】;i++;}}main(){charx[N][M]={"Create","Modi.fy","Sort","skip","Delete");inti;printf("\nTheoriginalstring\n\n");for(i=0;i<N;i++)puts(x[i]);printf("\n");fun(x,4);printf("\nThestringafterdeleted:\n\n");for(i=0;i<N;i++)puts(x[i]);printf("\n");}標準答案:(1)[M](2)N(3)’\0’知識點解析:填空1:根據(jù)main函數(shù)中的函數(shù)調(diào)用語句,確定函數(shù)定義時的形式參數(shù),所以填入[M]。填空2:while循環(huán)語句需要對所有字符串進行操作,因此循環(huán)條件是i<N。填空3:字符串結(jié)尾加入字符串結(jié)束標識‘\0’。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun的功能是:根據(jù)以下公式求π值,并作為函數(shù)值返回。例如,當(dāng)給指定精度的變量eps輸入0.0005時,應(yīng)輸出Pi=3.140578。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<conio.h>#include<stdio.h>#include<math.h>doublefun(doubleeps){doubles,t;intn=1;s=0.0;/*********found*********/t=0;while(t>eps){s+=t;t=t*n/(2*n+1);n++;}/*********found*********/riturn(s);}voidmain(){doublex;printf("\nPleaseenteraprecision:");scar1f("%lf",&x);printi("\riPi=%1f\n”,fun(x));}標準答案:(1)t=1.0;(2)retum(s*2);知識點解析:該題中,首先檢查變量數(shù)據(jù)類型前后是否一致,因為變量t定義為double型,所以賦值時要賦以實型數(shù)值。return(s)是一個數(shù)學(xué)錯誤,應(yīng)該返回return(s*2);。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、規(guī)定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun,其功能是:使字符串的前導(dǎo)*號不得多于n個,若多于n個,則刪除多余的*號;若少于或等于n個,則不做處理。字符串中間和尾部的*號不刪除。例如,字符串中的內(nèi)容為“*******A*BC*DEF*G****”,若n的值為4,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是“****A*BC*DEF*G****”;若n的值為8,則字符串中的內(nèi)容仍為“*******A*BC*DEF*G****”。n的值在主函數(shù)中輸入。在編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>#include<conio.h>voidfun(char*a,intr1){}voidmair1(){chars[81];intn;printf("Enterastring:\n");gets(s);printf("Entern:");scar1f("%d",&n);fun(s,n);printf("TheStringafterdeleted:\n");puts(s);}標準答案:voidfun(char*a,intn){inti=0,k=0;char*p,*t;p=t=a;/*開始時,p與t同時指向數(shù)組的首地址*/while(*t==’*’)/*用k來統(tǒng)計前部星號的個數(shù)*/{k++;t++;}if(k>n)/*如果k大于n,則使p的前部保留n個星號,其后的字符依次存入數(shù)組a中*/{while(*p){a[i]=*(p+k—n);i++;p++;}a[i]=’\0’;/*在字符串最后加上結(jié)束標識*/}}知識點解析:字符串中前導(dǎo)*號不能多于n個,多余的應(yīng)刪除。首先需要通過while循環(huán)統(tǒng)計字符串前導(dǎo)*號的個數(shù),然后通過if條件語句完成前導(dǎo)*號的個數(shù)和n的比較,如果前導(dǎo)*號多于n個,需要把n個*號和其余字符重新保留。國家二級C語言機試(操作題)模擬試卷第3套一、程序填空題(本題共1題,每題1.0分,共1分。)1、函數(shù)fun的功能是:逆置數(shù)組元素中的值。例如:若a所指數(shù)組中的數(shù)據(jù)依次為:1、2、3、4、5、6、7、8、9,則逆置后依次為:9、8、7、6、5、4、3、2、1。形參n給出數(shù)組中數(shù)據(jù)的個數(shù)。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!1#include<stdio.h>2voidfun(inta[],intn)3{inti,t;4/**********found**********/5for(2=0;i<__1__;i++)6{7t=a[i];8/**********found**********/9a[i]=a[n-1-__2__];10/**********found**********/11__3__=t;12}13}14main()15{intb[9]={1,2,3,4,5,6,7,8,9},i;16printf(’’\nTheoriginaldata:\n’’);17for(i=0;i<9;i++)18printf(’’%4d’’,b[i]);19printf(’’\n’’);20fun(b,9);21printf(’’\nThedataafterinvert:\n’’);22for(2=0;i<9;i++)23printf(’’%4d’’,b[i]);24printf(’’\n’’);25}標準答案:(1)n/2(2)i(3)a[n-i-1]知識點解析:函數(shù)fun的功能是將數(shù)組中的元素倒置。第一空:由審題分析可知,總共交換n/2次,故循環(huán)的終止條件為i等于n/2,故第一空處應(yīng)為“n/2”。第二空:a[0]和a[n-1]交換,a[1]和a[n-2]交換…,因此a[i]和a[n-i-1]交換,故第二空處應(yīng)為“i”。第三空:“t=a[i];a[i]=a[n-1-i];”所以第三空處是把t值賦值a[n-1-i],故第三空處應(yīng)為“a[n-1-i]”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:計算S=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+…+f(n)的值。例如,當(dāng)n為5時,函數(shù)值應(yīng)為:10.407143。f(x)函數(shù)定義如下:請改正程序中的錯誤,使程序能輸出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!1#include<stdio.h>2#include<math.h>3/**********found**********/4f(doublex)5{6if(x==0.0||x==2.0)7return0.0;8elseif(x<0.0)9return(x-1)/(x-2);10else11return(x+1)/(x-2);12}13doublefun(intn)14{inti;doubles=0.0,y;15for(i=-n;i<=n;i++)16{y=f(1.0*i);s+=y;)17/**********found**********/18returns19}20main()21{22printf(’’%f\n’’,fun(5));23}標準答案:(1)doublef(doublex)(2)returns;知識點解析:(1)第一個標識下f函數(shù)的定義缺少返回值類型,所以將“f(doublex)”改為“doublef(doublex)”。(2)第二個標識下返回語句沒有分號結(jié)束。所以,第二個標識下“returns”應(yīng)該改為“returns;”。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、函數(shù)fun的功能是:將a、b中的兩個兩位正整數(shù)合并形成一個新的整數(shù)放在c中。合并的方式是:將a中的十位和個位數(shù)依次放在變量c的千位和十位上,b中的十位和個位數(shù)依次放在變量c的個位和百位上。例如,當(dāng)a=45,b=12。調(diào)用該函數(shù)后,c=4251。注意:部分源程序存在文件PROG1.C中。數(shù)據(jù)文件IN.DAT中的數(shù)據(jù)不得修改。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。1#include<stdio.h>2voidfun(inta,intb,long*c)3{4}5voidNONO()6{/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/7FILE*rf,*wf;8inti,a,b;longc;9rf=fopen(’’in.dat’’,’’r’’);10wf=fopen(’’out.dat’’,’’w’’);11for(i=0;i<10;i++){12fscanf(rf,’’%d,%d’’,&a,&b);13fun(a,b,&c);14fprintf(wf,’’a=%d,b=%d,c=%1d\n’’,a,b,c);15}16fclose(rf);17fclose(wf);18}19main()2{inta,b;longc;voidNONO();21printf(’’Inputa,b:’’);22scanf(’’%d%d’’,&a,&b);23fun(a,b,&c);24printf(’’Theresultis:%1d\n’’,c);25NONO();}標準答案:*c=(a/10)*1000+(b%10)*100+(a%10)*10+(b/10);知識點解析:(1)分解兩位數(shù)的正整數(shù)n的個位和十位數(shù),可用n%10和n/10實現(xiàn)。(2)設(shè)x0、x1、x2、x3為一位數(shù),則x0、x1×10、x2×100、x3×1000,可以分別使x0、x1、x2、x3構(gòu)成個、十、百、千帶權(quán)數(shù),而x0+x1×10+x2×100+x3×1000構(gòu)成四位數(shù)。本題最多只考慮四位數(shù)。國家二級C語言機試(操作題)模擬試卷第4套一、程序填空題(本題共1題,每題1.0分,共1分。)1、函數(shù)fun的功能是:將形參a所指數(shù)組中的前半部分元素中的值和后半部分元素中的值對換。形參n中存放數(shù)組中數(shù)據(jù)的個數(shù),若n為奇數(shù),則中間的元素不動。例如:若a所指數(shù)組中的數(shù)據(jù)依次為:1、2、3、4、5、6、7、8、9,則調(diào)換后為:6、7、8、9、5、1、2、3、4。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#defineN9voidfun(inta[],intn){inti,t,P;/**********found**********/p=(n%2==0)?n/2:n/2+____1____;for(i=0;i標準答案:(1)1(2)i(3)a[p+i]知識點解析:第一空:“p=(n%2=0)?n/2:n/2+__1__;”和“a[i]=a[p+__2__];”“n%2==0”判斷是否是偶數(shù),a[i]和a[p+__2__]交換,如果n是偶數(shù),a[0]和a[n/2]交換,如果n是奇數(shù),那么a[0]和a[n/2+1]交換,依此類推,故n為偶數(shù)時a[i]和a[i+n/2]交換,n為奇數(shù)時a[i]和a[i+n/2+1]交換。因此如果n是奇數(shù)的話,p應(yīng)該等于n/2+1,故第一空處應(yīng)為“1”。第二空:由上分析可知,a[i]和a[i+p]交換,故第二空應(yīng)為“i”。第三空:“t=a[i];a[i]=a[p+i];”,故第三處應(yīng)該是把a[i]賦值給a[p+i],a[i]保存在t中,故第三空應(yīng)為“a[p+i]”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODIl.C中函數(shù)fun的功能是:在字符串的最前端加入n個*號,形成新串,并且覆蓋原串。注意:字符串的長度最長允許為79。請改正函數(shù)fun中指定部位的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#inoludevoidfun(chars[],intn){chara[80],*p;inti;/**********found**********/s=p;for(i=0;i標準答案:(1)p=s;(2)while(*p++);知識點解析:(1)變量初始化應(yīng)是將形參數(shù)組地址s傳給工作指針p。因此,應(yīng)將“s=p;”改為“p=s;”。(2)dowhile循環(huán)的目的是把p指向的字符串內(nèi)容拷貝到a字符串的后面,但第二標識下while語句沒有使用分號技術(shù),故第二標識下應(yīng)改成“while(*p++);”。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、假定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun,它的功能是:刪除字符串中所有的木號。在編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。例如,字符串中的內(nèi)容為:****A*BC*DEF*G*******,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是:ABCDEFG。注意:部分源程序在文件PROGl.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#includevoidfun(char*a){}main(){chars[81];voidNONO();printf("Enterastring:\n");gets(s);fun(s);printf("Thestringafterdeleted:\n");puts(s);NONO();}voidNONO(){/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*in,*out;inti;chars[81];in=fopen("in.daL","r");out:fopen("out.dat","w");for(i=0;i<10;i++){fscanf(in,"%s",s);fun(s);fprintf(out,"%s\n",s);}fclose(in);fclose(out);}標準答案:intj=0;char*p=a;while(*p){if(*p!=’*’)a[j++]=*p;p++;}a[j]=’\0’;知識點解析:(1)首先利用工作指針指向字符串,當(dāng)指針不指向串尾時,就對字符串進行循環(huán)判斷。(2)在循環(huán)中利用if判斷表達式,判斷是字符是否為“*”,如果不是“*”將其拷貝到字符串,否則跳過“*”字符。(3)所有字符處理完后,記得在新串s的末尾加上結(jié)束符“’\0’”。國家二級C語言機試(操作題)模擬試卷第5套一、程序填空題(本題共1題,每題1.0分,共1分。)1、函數(shù)fun的功能是:把形參a所指數(shù)組中的最大值放在a[0]中,接著求出a所指數(shù)組中的最小值放在a[1]中;再把a所指數(shù)組元素中的次大值放在a[2]中,把a數(shù)組元素中的次小值放在a[3]中;其余以此類推。例如:若a所指數(shù)組中的數(shù)據(jù)最初排列為:1、4、2、3、9、6、5、8、7,則按規(guī)則移動后,數(shù)據(jù)排列為:9、l、8、2、7、3、6、4、5。形參n中存放a所指數(shù)組中數(shù)據(jù)的個數(shù)。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#defineN9voidfun(int____1____fintn){inti,j,max,min,px,pnct;for(i=0;ia[j]){min—a[j];pn=j;}if(px!=i){t=a[i];a[i]=max;a[px]=t;if(pn=i)pn=px;}if(pn!=i+1){t=a[i+1];a[i+1]min;a[pn]=t;}}}main(){intb[N]={1,4,2c3,9,6,5,8,7},1;printf("\nTheoriginaldata:\n");for(i=0;i標準答案:(1)*a(2)2(3)i+1知識點解析:本題中函數(shù)的功能是將數(shù)組中的元素下標為偶數(shù)的元素按照從大到小排序,下標為奇數(shù)的元素按照從小到大排序,相當(dāng)于2個排序過程。在fun函數(shù)中,采用選擇排序法進行排序,分別用max和min存儲每次尋找的最大值和最小值,px和pn記錄每次查找到的最大值和最小值的下標位置。第一空:主函數(shù)內(nèi)fun函數(shù)的調(diào)用“fun(b,N);”,其中b為整型數(shù)組名,故fun函數(shù)的第一參數(shù)為整型指針,又根據(jù)“max=a[j]”可知第一個參數(shù)名為a,故第一空處為“*a”。第二空:根據(jù)題意a所指數(shù)組中的最大值放在a[0]中,接著求出a所指數(shù)組中的最小值放在a[1]中;再把a所指數(shù)組元素中的次大值放在a[2]中,把a數(shù)組元素中的次小值放在a[3]中,升序排序和降序排序的下標變化是每次在前一次的基礎(chǔ)上+2,即a[0]、a[2]、a[4]...降序排序,a[1]、a[3],a[5]…升序排序,故第二空應(yīng)為“2”。第三空:選擇排序法中的升序排序,首先從數(shù)組中挑選一個最小的元素,把它和第一元素交換,接著從剩下的n—1個元素中再挑出一個最小的元素,把它和第二個元素交換,不斷重復(fù)以上過程,直到比較完最后兩個元素。故內(nèi)層循環(huán)變量j應(yīng)該從i+l開始,因此第三空處應(yīng)為“i+1”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:按順序給s所指數(shù)組中的元素賦予從2開始的偶數(shù),然后再按順序?qū)γ课鍌€元素求一個平均值,并將這些值依次存放在w所指的數(shù)組中。若s所指數(shù)組中元素的個數(shù)不是5的倍數(shù),多余部分忽略不計。例如,s所指數(shù)組有14個元素,則只對前10個元素進行處理,不對最后的4個元素求平均值。請改正程序中的錯誤,使它能得出正確結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。#include#defineSIZE20fun(double*s,double*w){intk,i;doublesum;for(k=2,i=0;i標準答案:(1)sum=0.0;(2)if((i+1)%5==0)知識點解析:本題函數(shù)的功能是對每5個元素求一個平均值。首先要依順序讀取每5個元素,并對這5個元素取平均值。(1)在第一標識下“sun=0.0;”,根據(jù)題意,這是給sum賦值,而sun沒有定義編譯時會提示錯誤,應(yīng)改為“sum=0.0,”。(2)錯誤標識下的if判斷語句是依順序取5個字符,if中的邏輯表達式語法有誤,由于1%5恒等于1,所以i+1%5也就等價于i+1了,所以將“if(1+1%5=0)”改為“if((i+1)%5==0)”,此處主要注意的是運算符的優(yōu)先級。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、學(xué)生的記錄由學(xué)號和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請編寫函數(shù)fun,它的功能是:把低于平均分的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,低于平均分的學(xué)生人數(shù)通過形參n傳回,平均分通過函數(shù)值返回。注意:部分源程序在文件PROG1.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#include#defineN8typedefstruct{charnum[10];doubles;}STREC;doublefun(STREC*a,STREC*b,int*n){}main(){STRECs[Nl={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85},{"GA01",91},STRECh[N],t;FILE*out;inti,j,n;doubleave;ave=fun(s,h,&n);printf("The%dstudentdatawhichislowerthan%7.3f:\n",n,ave);printf("%s%4.1f\n",h[i].num.printf("\n");out=fopen("out.dat","w");fprintf(out,"ood\n007.3f\n",n,ave);for(i=0;ih[jl.s)fprintf(out,"004.1f\n",h[i].s);fclose(out);}標準答案:1inti;2doubleave=0.0;3*n=0;4for(i=0;i知識點解析:該程序功能是把低于平均分的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,低于平均分的學(xué)生人數(shù)通過形參n傳回,平均分通過函數(shù)值返回。(1)首先,通過循環(huán)求總分,然后求得平均分。(2)在循環(huán)中,進行平均分與每個成績進行比較,并將滿足條件的數(shù)據(jù)存入數(shù)組及對其進行累加。國家二級C語言機試(操作題)模擬試卷第6套一、程序填空題(本題共1題,每題1.0分,共1分。)1、下列給定程序中,函數(shù)fun的功能是計算下式直到≤10一3,并將計算結(jié)果作為函數(shù)值返回。例如,若形參e的值為le一3,函數(shù)的返回值為2.985678。請在程序的下畫線處填入正確的內(nèi)容并將下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>doublefun(doublee){inti;doubles,x;/*********found*********/s=o;i=【1】;x=1.0;while(x>e){/*********found*********/【2】;/*********found*********/x=(2.0,*i一1)/((—[【3】),*(2.0*i));s=s+x;}Eeturns;}main(){doublee=1e一3;print:f("\nTheresultis:%f\n",fun(e));}標準答案:(1)0(2)i++或++i或i+=1或i=i+l(3)2.0*i知識點解析:填空1:循環(huán)變量i從1開始參加運算,但是在每次循環(huán)的開始i都進行自加1操作,故i應(yīng)賦初值為0。填空2:循環(huán)變量i自增1運算。填空3:根據(jù)公式確定表達式通項。注意x為double型,故應(yīng)將i變?yōu)閐ouble型再進行運算。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中函數(shù)fun的功能是:將s所指字符串的正序和反序進行連接,形成的新串放在t所指的數(shù)組中。例如,當(dāng)s所指字符串為“ABCD”時,t所指字符串中的內(nèi)容應(yīng)為“ABCDDCBA”。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<conio.h>#include<stdio.h>#include<string.h>/*********found*********/voidfun(chars,chart){inti,d;d=Str1en(s);for(i=0;i<d;i++)t[i]=s[i];for(i=0;i<d;i++)t[d+i]=s[d一1一i];/*********found*********/t[2*d一1]=’\0’;}main(){chars[100],t[100];printf("inPleaseenterstrings:");scanf("%s",s);fun(s,t);printf("\nTberesultis:%skn",t);}標準答案:(1)voidfun(char*s,char*t)(2)t[2*d]=’\0’;或t[d+i]=’\0’;或t[2*d]=0;或t[d+i]=0;知識點解析:(1)從調(diào)用函數(shù)來看,函數(shù)傳遞的是數(shù)組,所以函數(shù)的形參應(yīng)為指針。(2)循環(huán)結(jié)束后回文字符的個數(shù)為2*d個,因為數(shù)組下標是從0開始的,所以最后一個字符的下標為2*d一1,在最后一個字符的后面加上結(jié)束符’\0’,因此為t[2*d]=’\0’;。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、編寫函數(shù)fun,其功能是:將S所指字符串中除了下標為奇數(shù)同時ASCII碼值也為奇數(shù)的字符之外,其余的所有字符全部刪除,串中剩余字符所形成的一個新串放在t所指的數(shù)組中。例如,若S所指字符串的內(nèi)容為“ABCDEFGl2345”,其中字符A的ASCII碼值為奇數(shù),但所在元素的下標為偶數(shù),因此需要刪除;而字符1的ASCII碼值為奇數(shù),所在數(shù)組中的下標也為奇數(shù),因此不應(yīng)當(dāng)刪除,其他依此類推。最后t所指數(shù)組中的內(nèi)容應(yīng)為“135”。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>#include<string.h>voidfun(char*s,chart[]){}msin(){chars[100],t[100];printf("inPleaseenterstrings:");Scanf("%s",s);fun(s,t);printf("knTheresultis:%s\n",t);}標準答案:voidfun(char*s,chart[]){inti,j=0,n;n=str1en(s);for(i=0;i<n;i++)if((i%2)&&(s[i]%2)){t[j++]=s[i];/*將下標為奇數(shù)同時ASCII碼值為奇數(shù)的字符放入數(shù)組t中*/}t[j]=’\0’;/*最后加上結(jié)束標識符*/}知識點解析:本題要求除了下標為奇數(shù)同時ASCII碼值也為奇數(shù)的字符,其余的所有字符都刪除,即要留下下標為奇數(shù)同時ASCII碼值也為奇數(shù)的字符。所以if的條件語句應(yīng)為:if(i%21=0&&s[i]%2!=0)。國家二級C語言機試(操作題)模擬試卷第7套一、程序填空題(本題共1題,每題1.0分,共1分。)1、下列給定程序中,函數(shù)fun的功能是:把形參a所指數(shù)組中的最大值放在a[0]中,接著求出a所指數(shù)組中的最小值放在a[1]中,再把a所指數(shù)組元素中的次大值放在a[2]中,把a數(shù)組元素中的次小值放在a[3]中,依此類推。例如,若a所指數(shù)組中的數(shù)據(jù)最初排列為:1、4、2、3、9、6、5、8、7,按規(guī)則移動后,數(shù)據(jù)排列為:9、1、8、2、7、3、6、4、5。形參n中存放a所指數(shù)組中數(shù)據(jù)的個數(shù)。請在程序的下畫線處填入正確的內(nèi)容并將下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#inClude<Stdio.h>#defineN9/*********found*********/voidfun(int【1】,intn)(inti,j,max,vain,px,pn,t;/*********found*********/for(i=0;i<n一1;i+=【3】){max=min=a[i];px=pn=i;/*********found*********/for(j=【3】;j<n;j++){if(max<a[j]){max=a[j];px=j;}if(min>a[j]){min=a[j];pn=j;}}if(px!=i){t=a[i];a[i]=max;a[px]=t;if(pn==i)pn=px;}if(pn!=i+1){t=a[i+1];a[i+1]=rnin;a[pn]=t;}}}main(){Intb[N]=(1,4,2,3,9,6,5,8,7},i;printf("\nTheoriginaldata:\n");for(i=0;i<N;i++)printf("%4d",b[i]);printf("\n");fun(b,N);printf("\nThedataaftermoving:\n");for(i=0;i<N;i++)printf("%4d",b[i]);printf("\n");}標準答案:(1)a[](2)2(3)i+1知識點解析:填空1:由main中的函數(shù)調(diào)用語句確定函數(shù)定義的形式參數(shù)。填空2:for循環(huán)語句中,循環(huán)變量增值為2。填空3:確定for語句循環(huán)變量的初值。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列程序中,函數(shù)fun的功能是:按順序給s所指數(shù)組中的元素賦予從2開始的偶數(shù),然后再按順序?qū)γ?個元素求一個平均值,并將這些值依次存放在W所指的數(shù)組中。若s所指數(shù)組中元素的個數(shù)不是5的倍數(shù),則多余部分忽略不計。例如,s所指數(shù)組有14個元素,則只對前10個元素進行處理,不對最后的4個元素求平均值。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#defineSIZE20fun(double*s,double*w){intk,i;doublesum;for(k=2,i=0;i<SIZE;i++){s[i]=k;k+=2;1/*********found*********/sun=0.0;for(k=0,i=0;i<SIZE;i++)(SLIm+=s[i];/*********found*********/if(i+1%5==0){w[k]=sum/5;SLIm=0;k++;}}returnk;}main()(doublea[SIZE],b[SIZE/5];inti,k;k=fun(a,b);printf("Theoriginaldata:\n");for(i=0;i<SIZlg;i++){if(i%5==0)printf("\n");printf("%4.Of",a[i]);}printf("\n\nTheresult:\n");for(i=0;i<k;i++)printf("%6.2f",b[i]);printf("\n\n");}標準答案:(1)sum=0.0;(2)if((i+1)%5==0)知識點解析:本題考查:if語句條件表達式,需注意其格式是否正確;變量定義和變量使用。(1)變量sum書寫錯誤。(2)循環(huán)條件if(i+l%5==0)是一個運算邏輯錯誤,應(yīng)先計算i+1,再對5求余。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、學(xué)生的記錄由學(xué)號和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請編寫函數(shù)fun,其功能是:把低于平均分的學(xué)生數(shù)據(jù)放入b所指的數(shù)組中,低于平均分的學(xué)生人數(shù)通過形參n傳回,平均分通過函數(shù)值返回。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>#defineN8typedefstruct{charFlilm[10];doubles;}STREC;doublefun(STREC*a,STREC*b,int*n){}voidmain(){STRECS[N]=({"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85),{"GA01",91},{"GA07",72},{"GA08",64),{"GA06",87}};STRECh[N];inti,n;doubleave;ave=fun(s,h,&n);printf("The%dstudentdatawhichislowerthan%7.3f:\n",n,ave);for(i=0;i<n;i++)/*輸出成績低于平均值的學(xué)生記錄:*/printf("%s%4.1f\n",h[i].nHm,h[i].s);printf("\n");}標準答案:doublefun(STREC*a,STREC*b,int*n){inti,j=0;doubleav=0.0;for(i=0;i<N;i++)av=av+a[i].s;av=av/N;/*求平均值*/for(i=0;i<N;i++)if(a[i].s<av)b[j++]=a[i];/*將低于平均值的學(xué)生記錄存入結(jié)構(gòu)體數(shù)組b中*/*n=j;/*指針傳回低于平均值的學(xué)生人數(shù)*/retUrnav;/*返回平均值*/}知識點解析:本題使用循環(huán)語句和條件判斷語句來實現(xiàn)程序操作,第1個循環(huán)語句的作用是求出總分,然后求出平均分av。第2個循環(huán)的作用是將分數(shù)低于平均分的學(xué)生記錄存入結(jié)構(gòu)體數(shù)組b中。國家二級C語言機試(操作題)模擬試卷第8套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:將N×N矩陣主對角線元素中的值與反向?qū)蔷€對應(yīng)位置上元素中的值進行交換。例如,若N=3,有下列矩陣:123456789交換后為;321456987請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)1#include#defineN4/**********found**********/voidfun(int___1___,intn){inti,s;/**********found**********/for(___2___;i++){s=t[i][i];t[i][i]=t[i][n-i-1];/**********found**********/t[i][h-1-i]=___3___;}}main(){intt[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},i,j;printf("\nTheoriginalarray:\n");for(i=0;i標準答案:(1)t[][N](2)i=0;i知識點解析:第一空:在主函數(shù)中fun函數(shù)的調(diào)用形式是“fun(t,N);”,t是二維數(shù)組名,故fun函數(shù)的第一個參數(shù)為指針,因此第一空處應(yīng)為“t[][N]”。第二空:fun函數(shù)的第二個參數(shù)n指明了矩陣的大小為n,對角線元素與反向?qū)蔷€元素有n個,故循環(huán)有n次,因此變量i從0開始,到n-1結(jié)束,因此第一空處應(yīng)為“i=0;i二、程序修改題(本題共1題,每題1.0分,共1分。)2、由N個有序整數(shù)組成的數(shù)列已放在一維數(shù)組中,給定程序MODI1.C中函數(shù)fun的功能是:利用折半查找算法查找整數(shù)m在數(shù)組中的位置。若找到,返回其下標值-反之,返回1。折半查找的基本算法是:每次查找前先確定數(shù)組中待查的范圍:low和high(lowhigh,查找結(jié)束。請改正程序中的錯誤,使它能得出正確結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。#include#defimeN10/**********found**********/voidfun(inta[],intm){intlow=0,high=N-1,mid;while(low<=high){mid=(10w+high)/2;if(ma[mid])10w=mid+1;elsereturn(mid);}return(-1);}mein(){inti,a[N]={-3,4,7,9,13,45,67,89,100,180}k,m;printf("a數(shù)組中的數(shù)據(jù)如下:");for(i=0;i=0)printf("m=%d,index=%d\n",m,k);elseprintf("Notbefound!\n");}標準答案:(1)intfun(inta[],intm)(2)elseif(m>a[mid])知識點解析:(1)根據(jù)主函數(shù)中“k=fun(a,m);”,知道函數(shù)fun應(yīng)該是返回int型的函數(shù),所以第一個標識下面定義的“voidfun(inta[],intm)”應(yīng)該改為“imfun(inta[],intm)”。(2)第二個標識下的“elseIf(m>a[mid])”是判斷m是否比a[mid]大,在while循環(huán)中采用的是if-elseif-else語句,顯然“elseIf”當(dāng)中“If”應(yīng)當(dāng)小寫,故第二標識下“elseIf(m>a[mid])”應(yīng)改為“elseif(m>a[mid])”。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、假定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun,它的功能是:除了尾部的*號之外,將字符串中其他*號全部刪除。形參P已指向字符串中最后的一個字母。在編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。例如,字符串中的內(nèi)容為:****A*BC*DEF*G*******,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是:ABCDEFG*******。注意:部分源程序在文件PROG1.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#includevoidfun(char*a,char*P){}main(){chars[81],*t;voidNONO();printf("Enterastring:\n");gets(s);t=s;while(*t)t++;t--;while(*t==’*’)t--;fun(s,t);printf("Thestringafterdeleted:\n");puts(s);NONO();}voidNONO(){/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*in,*out;inti;chars[81],*t;in=fopen("in.dat","r");out=fopen("out.dat","w"),for(i=0;i<10;i++){fscanf{in,"%s",s};t=s;while(*t)t++;t--;while(*t==’*’)t--;fun(s,t);fprintf(out,"%s\n",s);}fciose(in);fciose(out);}標準答案:char*q=a;intj=0;while(*q&&q知識點解析:(1)首先,主函數(shù)中使指針移到字符串的最后一個字符,對字符串由串尾開始進行操作。(2)然后,指針由尾開始向頭移動,查找第一個非“*”號字
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年《價值為綱》學(xué)習(xí)心得范例(3篇)
- 課題申報參考:接受美學(xué)視野下的卞之琳莎學(xué)研究
- 課題申報參考:教育強國進程中高校繼續(xù)教育高質(zhì)量發(fā)展的保障機制和推進路徑研究
- 2025版房地產(chǎn)銷售代理授權(quán)委托合同3篇
- 二零二五年度物流倉儲中心臨時搬運工勞動合同書4篇
- 2025版學(xué)校游泳池配套設(shè)施租賃與管理承包合同示范2篇
- 二零二五版藝術(shù)品拍賣師傭金分成合同3篇
- 個性化離婚合同與起訴狀套裝2024版版B版
- 二零二五年度健康管理與養(yǎng)老服務(wù)業(yè)合作協(xié)議3篇
- 二零二五年度圖書封面及插圖設(shè)計合同4篇
- 山東鐵投集團招聘筆試沖刺題2025
- 真需求-打開商業(yè)世界的萬能鑰匙
- 2025年天津市政集團公司招聘筆試參考題庫含答案解析
- GB/T 44953-2024雷電災(zāi)害調(diào)查技術(shù)規(guī)范
- 2024-2025學(xué)年度第一學(xué)期三年級語文寒假作業(yè)第三天
- 2024年列車員技能競賽理論考試題庫500題(含答案)
- 心律失常介入治療
- 6S精益實戰(zhàn)手冊
- 展會場館保潔管理服務(wù)方案
- 監(jiān)理從業(yè)水平培訓(xùn)課件
- 廣東省惠州市實驗中學(xué)2025屆物理高二第一學(xué)期期末綜合測試試題含解析
評論
0/150
提交評論