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

下載本文檔

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

文檔簡介

國家二級C語言機試(操作題)模擬試卷5(共9套)(共27題)國家二級C語言機試(操作題)模擬試卷第1套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:統(tǒng)計形參s所指字符串中數(shù)字字符出現(xiàn)的次數(shù),并存放在形參t所指的變量中,最后在主函數(shù)中輸出。例如,形參s所指的字符串為:abcdef35adgh3kjsdf7。輸出結果為:4。請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結構!#includevoidfun(char*s,int*t){inti,n;n=0;/**********found**********/for(i=0;【1】!=0;i++)/**********found**********/if(s[i]>=’0’&&s[i]<=【2】)n++;/**********found**********/【3】;}main(){chars[80]="abcdef35adgh3kjsdf7";intt;printf("\nTheoriginalstringis:%s\n",s);fun(s,&t);printf("\nTheresultis:%d\n",t);}標準答案:(1)s[i](2)’9’(3)*t=n知識點解析:搜索整個字符串,判斷s[i]>=’0’且s[i]<=’9’,滿足該條件后,計數(shù)變量加1,因此,第一空:循環(huán)終止條件是達到了字符串的尾部,字符串以“\0”(或NULL)結束,故第一空處應為s[i]。第二空:數(shù)字字符的判斷是s[i]>=’0’且s[i]<=’9’,故第二空處應為“’9’”。第三空:這里是將數(shù)字字符出現(xiàn)的次數(shù)存放在形參t里,n記錄了數(shù)字字符的個數(shù),而形參t是指針變量,故第三處應為“*t=n”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:通過某種方式實現(xiàn)兩個變量值的交換,規(guī)定不允許增加語句和表達式。例如變量a中的值原為8,b中的值原為3,程序運行后a中的值為3,b中的值為8。請改正程序中的錯誤,使它能得出正確的結果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!#includeintfun(int*x,inty){intt;/**********found**********/t=x;x=y;/**********found**********/return(y);}main(){inta=3,b=8;printf("%d%d\n",a,b);b=fun(&a,b);printf("%d%d\n",a,b);}標準答案:(1)t=*x;*x=y;(2)return(t);知識點解析:(1)根據(jù)fun中x變量的定義,x為指針型變量,所以第一個錯誤標識下的“t=x;x=y;”改為“t=*x;*x=y;”。(2)交換之后t中存放原來x的值,x存放原來y的值,這里應該是返回原來x的值,所以第二個標識下的“return(y);”應該改為“return(t);”或者“returnt;”。三、程序設計題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,它的功能是:求出1到1000之間能被7或11整除、但不能同時被7和11整除的所有整數(shù)并將它們放在a所指的數(shù)組中,通過n返回這些數(shù)的個數(shù)。注意:部分源程序在文件PROG1.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#includevoidfun(int*a,int*n){}main(){intaa[1000],n,k;voidNONO();fun(aa,&n);for(k=0;k<n;k++)if((k+1)%10==0)printf("\n");elseprintf("%5d",aa[k]);NONO();}voidNONO(){/*本函數(shù)用于打開文件,輸入測試數(shù)據(jù),調用fun函數(shù),輸出數(shù)據(jù),關閉文件。*/intaa[1000],n,k;FILE*fp;fp=fopen("out.dat","w");fun(aa,&n);for(k=0;k<n;k++)if((k+1)%10==0)fprintf(fp,"\n");elsefprintf(fp,"%5d",aa[k]);fclose(fp);}標準答案:inti;*n=0;for(i=7;i<1000;i++)if(((i%7)==0‖(i%11)==0)&&(i%77)!=0)a[(*n)++]=i;知識點解析:進入fun函數(shù),判斷是否被7整除→判斷是否被11整除→并且不被77整除→按要求返回計算結果。首先,*n置0,設置為累計器,計算符合條件的數(shù)的個數(shù)。然后,通過循環(huán),判斷小于1000的每一個整數(shù)是否符合題干中的要求。其中的判斷條件能否被7或者被11整除為:i%7==0‖i%11==0,不能被11和7同時整除為:i%77!=0,它們之間的并關系就用&&連接,最后結果即為:(i%7=0‖i%11=0)&&i%77!=0。最后,將符合條件的整數(shù)存入數(shù)組a中,同時對*n進行自加,返回結果。國家二級C語言機試(操作題)模擬試卷第2套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:把形參s所指字符串中最右邊的n個字符復制到形參t所指字符數(shù)組中,形成一個新串。若s所指字符串的長度小于n,則將整個字符串復制到形參t所指字符數(shù)組中。例如,形參s所指的字符串為:abodefgh,n的值為5,程序執(zhí)行后t所指字符數(shù)組中的字符串應為:defgh。請在程序的下畫線處填入正確的內容并把下畫線刪除,使程序得出正確的結果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdio.h>#include<string.h>#defineN80voidfun(char,*s,intn,char*t){intfen,i,j=0;len=str1en(s);/*********found*********/if(n>=1en)strcpy(【1】);else{/*********found*********/for(i=1en一n;i<=1en一1;i++)t[j++]=【2】;/*********found*********/t[j]=【3】;}}main(){chars[N],t[N];intn;printf("Enterastring:");gets(s);printf("Entern:");scanf("%d",&n);fun(s,n,t);printf("Thestringt:");puts(t);}標準答案:(1)t,s(2)s[i](3)0或’\0’知識點解析:填空1:當給定的長度n大于該字符串s的長度,那么把該字符串直接拷貝到t就可以了,所以應填t,s。填空2:使用for循環(huán)語句,把最右邊n個字符依次添加到t中,所以應填s[i]。填空3:字符串操作結束,需要給t加一個字符串結束符,所以應填0或’\0’。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun的功能是:找出一個大于給定整數(shù)m且緊隨m的素數(shù),并作為函數(shù)值返回。請改正程序中的錯誤,使它能得出正確的結果。注意:部分源程序在文件NOD11.C中,不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>intfun(intm){inti,k;for(i=m+1;;i++){for(k=2;k<i;k++)/*********found*********/if(i%k!=0)break;/*********found*********/if(k<i)return(i);}}voidmain(){intn;system("CLS");printf("\nPleaseentern:");scanf("%d",&n);printf("%d\n",fun(n));}標準答案:(1)if(i%k==0)(2)if(k==i)知識點解析:(1)判斷當前數(shù)是否為素數(shù),若存在一個數(shù)(除1和其自身)能整除當前數(shù),則跳出本次循環(huán),所以if條件應為i%k==0。(2)如果i是素數(shù),則循環(huán)結束時k==i,將該值返回。三、程序設計題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)voidfun(intx,intpp[],int*n),它的功能是:求出能整除x且不是偶數(shù)的各整數(shù),并按從小到大的順序放在pp所指的數(shù)組中,這些除數(shù)的個數(shù)通過形參n返回。例如,若x中的值為30,則有4個數(shù)符合要求,它們是1、3、5、15。注意:部分源程序在文件PROG1.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>#include<stdlib.h>v02dfun(intx,intpp[],int,*n){)voidmain(){FILE*wf;intx,aa[1000],n,i;system("CLS");printf("\nPleaseenteranintegernumber:\n");Scanf("%d",&x);fun(x,aa,&n);for(i=0;i<n;i++)printf("%d",aa[i]);printf("\n");/*********found*********/wf=fopen("out.dat","w");fun(30,aa,&n);for(i=0;i<n;i++)fprintf(wf,"%d",aa[i]);fclose(wf);/*********found*********/}標準答案:voidfun(intx,intpp[],int*n){inti,j=0;for(i=1;i<=x;i=i+2)/*1的初始值為1,步長為2,確保i為奇數(shù)*/if(x%i==0)/*將能整除x的數(shù)存入數(shù)組pp中*/pp[j++]=i;*n=j;/*傳回滿足條件的數(shù)的個數(shù)*/}知識點解析:本題考查:偶數(shù)的判定方法;整除的實現(xiàn)。本題題干信息是:能整除x且不是偶數(shù)的所有整數(shù)。循環(huán)語句中變量i從1開始且每次增2,所以i始終是奇數(shù)。整除的方法,已經講過多次,這里就不再贅述了。對于本題目要求的不是偶數(shù)的判定方法,即該數(shù)對2求余不為0。除本題描述的方法外,還可以通過for循環(huán)語句直接把偶數(shù)篩出去,確保參與操作的數(shù)均為奇數(shù)。國家二級C語言機試(操作題)模擬試卷第3套一、程序填空題(本題共1題,每題1.0分,共1分。)1、程序通過定義學生結構體變量,存儲了學生的學號、姓名和三門課的成績。所有學生數(shù)據(jù)均以二進制方式輸出到文件中。函數(shù)fun的功能是重寫形參flename所指文件中最后一個學生的數(shù)據(jù),即用新的學生數(shù)據(jù)覆蓋該學生原來的數(shù)據(jù),其他學生的數(shù)據(jù)不變。請在程序的下畫線處填入正確的內容并把下畫線刪除,使程序得出正確的結果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結構!試題程序:#inclucle<stctio.h>#defineN5typeclefstructstudent{longsno;charname[10];floatscore[3];}STU;voidfun(char*filename,STUn){FTLE*fp;/*********found*********/fp=fopen(【1】,"rb+");/*********found*********/fseek(【2】,一(long)sizeof(STU),SEEK_END);/*********found*********/fwrite(&n,sizeof(STU),【3】);fclose(fp);}main(){STUt[N]={{10001,"MaChao",91,92,77},{10002,"CaoKai",75,60,88},{10003,"LiSi",85,70,78),{10004,"FangFang",90,82,87},{10005,"ZhangSan",95,80,88)};STUn={10006,"ZhaoSi",55,70,68),ss[N];inti,j;FILE*fp;fp=fopen("student.clat","wb");fwrite(t,sizeof(STU),N,fp);fclose(fp);fp=fopen("student.dat","rb");fread(Ss,sizeof(STU),N,fp);fclose(fp);printf("\nTheoriginaldata:\n\n");for(j=0;j<N;j++){printf("\nNo:%ldName:%一8SScores.",ss[j].sno,ss[j].name);for(i=0;i<3;i++)print:f("%6.2f",ss[j].score[i]);printf("\n");}fun("student.dat",n);printf("\nThedataafterroodif-ing:\n\n");fp=fopen("student.dat","rb");fread(ss,sizeof(STU),N,fp);fclose(fp);for(j=0;j<N;j++){print:f("\nNo:%ldName:%一8SScores:",ss[j].sno,ss[j].name);for(i=0;i<3;i++)printf("%6.2f",ss[j].score[i]);print:f("\n");}}標準答案:(1)filename(2)fp(3)fp知識點解析:填空1:本空是對文本文件的打開,filename所指的文件中的最后數(shù)據(jù)要進行重寫,因此首先是要打開,因而本空填寫filename。填空2:fseek功能是重定位流上的文件指針。用法:intfseek(FILE*stream,longoffset,intfrom-where);本空應該填寫fp。填空3:因為題目中要對所有學生數(shù)據(jù)均以二進制方式輸出到文件中,因此本空填寫fp。知識點講解:函數(shù)名:fseek功能:重定位流上的文件指針。用法:intfseek(FILE*stream,longoffset,intfromwhere)。描述:函數(shù)設置文件指針stream的位置。如果執(zhí)行成功,stream將指向以fromwhere為基準(從文件的哪里開始偏移)、偏移offset個字節(jié)的位置。正數(shù)表示正向偏移,負數(shù)表示負向偏移。如果執(zhí)行失?。ū热鏾ffset超過文件自身大?。?,則不改變stream指向的位置。返回值:成功,返回0;否則返回非0值。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中函數(shù)Creatlink的功能是:創(chuàng)建帶頭結點的單向鏈表,并為各結點數(shù)據(jù)域賦0到m-1的值。請改正函數(shù)Creatlink中指定部位的錯誤,使它能得出正確的結果。注意:部分源程序在文件MODI1.C中,不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdio.h>#include<stdlib.h>typedefstructaa{intdata;structaa*nextf}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<=nfi++){s=(NODE*)malloc(sizeofs一>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);}標準答案:(1)p=(NODE*)malloc(sizeof(NODE));(2)returnh;知識點解析:(1)由變量定義可知p為指向結點的指針。指向剛分配的結構指針,所以應改為p=(NODE*)malloc(sizeof(NODE)).(2)在動態(tài)分配內存的下一行語句是,使用臨時結構指針變量h保存p指針的初始位置,最后返回不能使用p,是因為p的位置已經發(fā)生了變化,所以應改為returnh。三、程序設計題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,該函數(shù)的功能是:統(tǒng)計一行字符串中單詞的個數(shù),作為函數(shù)值返回。字符串在主函數(shù)中輸入,規(guī)定所有單詞由小寫字母組成,單詞之間有若干個空格隔開,一行的開始沒有空格。注意:部分源程序在文件PROG1.C中。請勿改動main函數(shù)和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。試題程序:#include<string.h>#include<stdio.h>#defineN80intfun(char*s){}voidmain(){FILE*wf;charline[N];intnum=0;printf("Enterastring:\n");gets(line);num=fun(line);printf("Thenumberofwordis:%d\n\n",num);wf=fopen"out.dat","w");fprintf(wf,"%d",fun("abigcar"));fclose(wf);/*********found*********/}標準答案:intfun(char*s){inti,j=0;for(i=0;s[i]!=’\0’;i++)if(s[i]!=’’&&(s[i+1]==’’||s[i+1]==’\0’))/*如果一個字母的下一個字符為空格或者結束標記,則表示一個單詞結束*/j++;returnj;/*返回單詞個數(shù)*/}知識點解析:要判斷單詞的個數(shù),首先想到的是程序怎樣識別出一個單詞,如果一個字母的下一個字符為空格或者結束標記,則表示一個單詞結束,因此程序使用for循環(huán)語句遍歷整個字符串,用if條件語句判斷當前字符是否表示一個單詞的結束,如果當前字符表示一個單詞結束,則存放單詞個數(shù)的變量加1,最后返回單詞的個數(shù)。國家二級C語言機試(操作題)模擬試卷第4套一、程序填空題(本題共1題,每題1.0分,共1分。)1、圍繞山頂一圈有N個山洞,編號為0、1、2、3、……、N—1,有一只狐貍和一只兔子在洞中居住。狐貍總想找到兔子并吃掉它,它的尋找方法是先到第一個洞(即編號為0的洞)中找;再隔1個洞,即到編號為2的個洞中找;再隔2個洞,即到編號為5的洞中找;下次再隔3個洞;即到編號為9的洞中找;……。若狐貍找一圈,請為兔子指出所有不安全的洞號。程序中用a數(shù)組元素模擬一個洞,數(shù)組元素的下標即為洞號,數(shù)組元素中的值為0時,表示該洞安全,為1時表示該洞不安全。若形參n的值為30時,不安全的洞號是0、2、5、9、14、20、27。請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdio.h>#defineN100voidfun(int*a,intn){inti,t;for(i=0;i<n;i++)/*********found*********/a[i]=【1】;i=0;/*********found*********/【2】=1;while(i<n){a[i]=1;t++;/*********found*********/i=【3】;}}main(){inta[N],i,n=30;fun(a,n);for(i=0;i<n;i++)if(a[i]==1)printf("不安全的洞號是:%d\n",i);}標準答案:(1)0(2)t(3)i+t知識點解析:首先為數(shù)組所有元素賦初值0,利用循環(huán)為符合條件的數(shù)組賦值為1,并計算下一個數(shù)據(jù)的下標。設置一個變量存放間隔數(shù),每次循環(huán)間隔數(shù)加1。本次下標加間隔數(shù)加1為下一個下標。填空1:利用循環(huán)為數(shù)組所有元素賦值為0。填空2:變量t為間隔數(shù),在循環(huán)過程中每次加1,設定初始值為11。填空3:下一個數(shù)組下標為本次的下標加間隔數(shù)加1的值。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序的功能是:讀入一個英文文本行,將其中每個單詞的第一個字母改成大寫,然后輸出此文本行(這里”單詞”是指由空格隔開的字符串)。例如,若輸入"Iamastudenttotaketheexamination",則應輸出"IAmAStudentToTakeTheExamination"。請改正程序中的錯誤,使程序能得出正確的結果。注意:部分源程序在文件MODI1.C中,不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!試題程序:1#include<stdlib.h>2#include<string.h>3#include<conio.h>4#include<ctype.h>5#include<stdio.h>6#include<string.h>7/*********found*********/8voidupfst(charP)9{10intk=0;11for(;*P;P++)12if(k)13{14if(*P==’’)15k=0;16}17else18{19if(*P!=’’)20{21k=1;22*P=toupper(*P);23}24}25}26voidmain()27{28charchrstr[81]j29System("CLS");30printf("\nPleaseenteranEnglishtext;lihe:");31gets(chrstr);32printf("\nBoforechanging:\n%s",chrstr);33upfst(chrstr);34printf("\nAfterchanging:\n%s\n",chrstr);35}標準答案:voidupfst(char*p)知識點解析:主函數(shù)中fun函數(shù)的調用方式說明函數(shù)fun的參數(shù)應為指針類型。三、程序設計題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,其功能是:計算并輸出下列多項式的值。例如,當n=10時,函數(shù)值為0.909091。注意:部分源程序在文件PROG1.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>#include<stdlib.h>doublefun(intn){}voidmain(){FILE*wf;system("CLS");printf("%f\n",fun(10));/******************/wf=fopen("out.dat","w");fprintf(wf,"%f",fun(10));fclose(wf);/******************/}標準答案:doublefun(intn){inti;doubles=0.0;for(i=1;i<=n;i++)s=s+1.0/(i*(i+1));/*求級數(shù)的和*/returnS;}知識點解析:本題要求級數(shù)的和,由多項式的形式可知,應使用循環(huán)語句實現(xiàn),循環(huán)的通項為1/n(n+1)。本程序首先定義了和變量及循環(huán)變量,然后運用一個for語句求出級數(shù)的和,最后將和變量s返回。國家二級C語言機試(操作題)模擬試卷第5套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:判定形參a所指的NxN(規(guī)定N為奇數(shù))的矩陣是否是“幻方”,若是,函數(shù)返回值為1;不是,函數(shù)返回值為0。“幻方”的判定條件是:矩陣每行、每列、主對角線及反對角線上元素之和都相等。例如,以下3x3的矩陣就是一個“幻方”:492357816請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結構!#inolude#defitieN3intfun(int(*a)[N]){inti,j,m1,m2,row,colum;m1=m2=0;for(i=0;i標準答案:(1)0(2)||(3)1知識點解析:函數(shù)fun的功能是判定形參a所指的N×N的矩陣是否是”幻方”。第一空:由“row+=a[i][j];colum+=a[j][i];”可知row是計算行和,colum是計算列和,故第一空處的初始化應將行和與列和初始化為0,即第一空處應為“0”。第二空:“if(row!=colum)__2__(row!=m1))retum0;”如果行和不等于列和,那么矩陣不是幻方,如果行和不等對角線和,那么矩陣也不是幻方,即兩者是或的關系,故第二空處應為“||”第三空:不是幻方的情況在前面都會返回0,所有不是幻方的情況都已經考慮到了,剩下的就是幻方,故第三空處為“1”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數(shù)fun的功能是:計算并輸出high以內最大的10個素數(shù)之和。high的值由主函數(shù)傳給fun函數(shù)。若high的值為:100,則函數(shù)的值為:732。請改正程序中的錯誤,使程序能輸出正確的結果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!#include#includeintfun(inthigh){intsum=0,n=0,j,yes;/**********found***********/while((high>=2)&&(n<10){yes=1;for(j=2;j<=high/2;j++)if(high%j==0){/**********found***********/yes=0;break}if(yes){sum+=high;n++;)high一一;}returnsum;}main(){printf(“%d\n”,fun(100));}標準答案:(1)while((2<=high)&&(n<10))(2)yes=0;break;知識點解析:函數(shù)的功能是計算并輸出high以內最大的10個素數(shù)之和。(1)C語言中左右括弧必須成對出現(xiàn),在第一個標識下“while((high>=2)&&(n<10)”中,顯然缺少一個右括弧,應改為“while((2<=high)&&(n<10))”。(2)在判斷素數(shù)的循環(huán)過程中,只要被判斷的數(shù)能被某數(shù)整除就不是素數(shù),就會跳出判斷循環(huán),在C語言中使用break語句跳出循環(huán),并且C語言中的語句使用分號為結尾。所以“break”應改為“break;”。三、程序設計題(本題共1題,每題1.0分,共1分。)3、假定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun,它的功能是:除了尾部的*號之外,將字符串中其他*號全部刪除。形參P已指向字符串中最后的一個字母。在編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。例如,字符串中的內容為:****A*BC*DEF*G*******,刪除后,字符串中的內容應當是:ABCDEFG*******。注意:部分源程序在文件PROGl.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(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ù),調用函數(shù),輸出數(shù)據(jù),關閉文件。*/FTLE*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);}fclose(in);fclose(out);}標準答案:char*q=a;intj=0;while(*q&&q知識點解析:該程序功能是除了尾部的*號之外,將字符串中其他“*”號全部刪除。其中,實現(xiàn)刪除指定元素的功能,一般是使用循環(huán)語句,通過指針變量在字符串中前后的移動,判斷其是否為要刪除的元素。若足,則進行相應的操作。還要注意的是,刪除字符后,要將其后的字符依次移動。[解題思路](1)首先,主函數(shù)中使指針移到字符串的最后一個字符,對字符串由串尾開始進行操作。(2)然后,指針由尾開始向頭移動,查找第一個非“*”號字符,指針t指向后一個非“*”,即從最后一個非“*”,字符開始的字符都不需要刪除,將前面的其他“*”號全部刪除后,將尾部的“*”字符往前移動即可。(3)確定了字符數(shù)組的最后一一個字符非“*”后,調用fun函數(shù),在fun函數(shù)中,將原串中由起始位置的字符開始到最后一個非“*”逐個查詢該字符是否是“*”字符,如果是則刪除,并將后面的字符往前移動;然后將t之后的字符移動到前面,最后在字符串的后面添加“‘\0’”即可。國家二級C語言機試(操作題)模擬試卷第6套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,甬數(shù)fun的功能是:將參數(shù)給定的字符串、整數(shù)、浮點數(shù)寫到文本文件中,再用字符串方式從此文本文件中逐個讀入,并調用庫函數(shù)atoi和atof將字符串轉換成相應的整數(shù)、浮點數(shù),然后將其顯示在屏幕上。請存程序的下畫線處填入正確的內容并把下畫線刪除,使程序得出正確的結果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結構!試題程序:1#include<stdio.h>2#include<stdlib.h>3voidfun(char*s,inta,doublef)4{5/*********found*********/6【1】fp;7chatsir[100],str1[100],sir2[100];8inta1;doublef1;9fp=fopen(’’file1.txt’’,’’w’’);10fprintf(fp,’’%s%d%f\n’’,s,a,f);11/*********found*********/12【2】;13fp=fopen(’’file1.txt’’,’’r’’);14/*********found*********/15fscanf(【3】,’’%s%s%s’’,str,str1,str2);16fclose(fp);17a1=atoi(str1);18f1=atof(str2);19printf(’’\nTheresult:\n\n%s%d%f\n’’,str,a1,f1);20}21main()22{chara[10]=’’Hello!’’;23intb=12345;24doublec=98.76;25fun(a,b,c);26}標準答案:(1)FILE*(2)fclose(fp)(3)fp知識點解析:填空1:從使用fp=fopen(’’filel.txt’’,’’w’’)可知fp應該是文件類型指針,因此本空應該填寫FILE*。填空2:當對fp作打開操作的時候,并進行不同的操作前,應該對其關閉,因為在第一次打開時是對fp進行寫操作,而在第二次打開后進行的是讀操作,因此應該先對fp進行關閉,本空填fclose(fp)。填空3:fscanf()是把文本文件輸出,因此本空只能填寫fp。二、程序修改題(本題共1題,每題1.0分,共1分。)2、已知一個數(shù)列從0項開始的前3項:0、0、1,以后的各項都是其相鄰的前3項之和。下列給定的程序中,函數(shù)fun的功能是:計算并輸出該數(shù)列前n項的平方根之和sum。n的值通過形參傳入。例如,當n=10時,程序的輸出結果應為23.197745。請改正程序中的錯誤,使它能得出正確的結果。注意:部分源程序在文件MODI1.C中,不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!試題程序:1#include<stdlib.h>2#include<conio.h>3#include<stdio.h>4#include<math.h>5/*********found*********/6fun(intn)7{doublesum,s0,s1,s2,s;8intk;9sum=1.0;10if(n<=2)sum=0.0;11s0=0.0;s1=0.0;s2=1.0;12for(k=4;k<=njk++)13{s=s0+s1+s2;14sum+=sqrt(s);15s0=s1;s1=s2;s2=s;16}17/*********found*********/18returnsum19}20voidmain()21{intn;22system(’’CLS’’);23printf(’’InputN=’’);24scanf(’’%d’’,&n);25printf(’’%f\n’’,fun(n));26}標準答案:(1)doublefun(int11)(2)returnsum;知識點解析:(1)根據(jù)函數(shù)的返回值可知函數(shù)fun應定義為double類型。(2)語法錯誤,缺分號。三、程序設計題(本題共1題,每題1.0分,共1分。)3、編寫函數(shù)fun,其功能是:求Fi-bonacci數(shù)列中大于t的最小的數(shù),結果由函數(shù)返回。Fibonacci數(shù)列F(n)的定義為:F(0)=0,F(xiàn)(1)=1F(n)=F(n-1)+F(n-2)例如,當t=1000時,函數(shù)值為1597。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:1#include<conio.h>2#include<math.h>3#include<stdio.h>4intfun(intt)5{67}8main()9{10intn;11n=1000;12printf(’’n=%d,f=%d\n’’,n,fun(n));13}標準答案:1intfun(intt)2{3intf0=0,f1=1,f;4do{5/*根據(jù)Fiborlacci數(shù)列的定義求數(shù)值*/6f=f0+f1;7f0=f1;f1=f;8}while(f知識點解析:根據(jù)所給數(shù)列定義不難發(fā)現(xiàn),該數(shù)列最終的結果是由兩個數(shù)列之和組成,所以可以在循環(huán)內部始終把f看成是前兩項之和,而f0始終代表第n-2項,f1代表第n-1項。退出循環(huán)時得到的數(shù)f,就是大于指定數(shù)的最小的數(shù)。國家二級C語言機試(操作題)模擬試卷第7套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:將形參n中,各位上為偶數(shù)的數(shù)取出,并按原來從高位到低位的順序組成一個新的數(shù),并作為函數(shù)值返回。例如,從主函數(shù)輸入一個整數(shù):27638496,函數(shù)返回值為:26846。請在程序的下劃線處填入正確的內容并把下劃線刪除,。使程序得出正確的結果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結構!#includeunsignedlongfun(unsignedlongn){unsignedlongx=0,s,i;intt;s=n;/**********found**********/i=___1___;/*********found**********/while(___2___){t=s%10;if(t%2==0){/**********found**********/x=x+t*i;i=___3___;}s=s/10;)returnx;}main(){unsignedlongn=-1;while(n>99999999||n<0){printf("Pleaseinput(0標準答案:(1)1(2)s(3)i*10知識點解析:函數(shù)fun的功能是將形參n中,各位上為偶數(shù)的數(shù)取出,組成新數(shù)。第一空:由“if(t%2==0){x=x+t*i;i__3__;}”可知,如果t是偶數(shù),那么t添加到返回值里面,比如第一次得到t=2,那么x=0+2*1;下一次得到了t=4,那么此時x的值應該是2+2*10;再下一次得到t=2,那么x=22+2*100,即x的值是在上一次值的基礎上加上新得到的值乘以其權值,因此i是代表權值。第一空處是初始化,i,第一次進入if語句時,x是個1位數(shù),此時權值i應為1,故第一空處應為“1”.第二空:第二空處是填循環(huán)的終止條件,在循環(huán)體內,s每次縮小10倍,在最后一次進入循環(huán)的時候,s是一個一位數(shù),s/10之后s變成0,下次就不應該進入while循環(huán),因此while循環(huán)的終止條件是s不為0,故第二空處為“s”或“s!=0”。第三空:由第一空的分析可知權值i是在上一次的基礎上增加10倍,故第三空處應為“i*10”二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:輸出M行M列整數(shù)方陣,然后求兩條對角線上元素之和,返回此和數(shù)。請改正程序中的錯誤,使它能得出正確的結果。,注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!#inclucte#defineM5/**********found**********/intfun(intn,intXX[][]){inti,j,sum=0;printf("\nThe%dx%dmatrix:\n",M,M);for(i=0;i標準答案:(1)intfun(intn,intxx[][M])(2)printf("%4d",xx[i][j]);知識點解析:函數(shù)的功能是求兩條對角線上各元素之和。(1)第一個標識下fun函數(shù)的定義中對于二維數(shù)組的定義在原題中并沒有給出空間,所以將“intfun(intn,int)xx[][])”改為“intfun(intn,intxx[][M])”。(2)fun函數(shù)中n是int型,C語言輸出語句中整型應該是%d,所以第二個標識下“printf("%f",xx[i][j]);”應該改為“printf("%4d",xx[i][j];”。三、程序設計題(本題共1題,每題1.0分,共1分。)3、函數(shù)fun的功能是:將a、b中的兩個兩位正整數(shù)合并形成一個新的整數(shù)放在c中。合并的方式是:將a中的十位和個位數(shù)依次放在變量c的千位和十位上,b中的十位和個位數(shù)依次放在變量c的個位和百位上。例如,當a=45,b=12。調用該函數(shù)后,c=4251。注意:部分源程序存在文件PROG1.C中。數(shù)據(jù)文件IN.DAT中的數(shù)據(jù)不得修改。請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#includevoidfun(inta,intb,long*C){}voidNONO,(){/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調用函數(shù),輸出數(shù)據(jù),關閉文件。*/FILE*rf,*wf;inti,a,b;longc;rf=fopen("in.dat","r");wf=fopen("out;.dat","w");for(i=0;i<10;i++){fscanf(rf,"%d,%d",&a,&b);fun(a,b,&c);fprint:f(wf,"a=%d,b=%d,c=%ld\n",a,b,c);}fclose(rf);fclose(wf);}main(){inta,b;longc,voidNONO();printf("Input:a,b:");scanf("%d%d",&a,&b);fun(a,b,&c);printf("Theiresultis:%1d\n",c);NONO();}標準答案:*c=(a/10)*1000+(b%10)*100+(a%10)*10+(b/10);知識點解析:(1)分解兩位數(shù)的正整數(shù)n的個位和十位數(shù),可用n%10和n/10實現(xiàn)。(2)設x0、x1、x2、x3為一位數(shù),則x0、x1×10、x2×100、x3×1000,可以分別使x0、x1、x2、x3構成個、十、百、千帶權數(shù),而x0+x1×10+x2×100+x3×1000構成四位數(shù)。本題最多只考慮四位數(shù)。國家二級C語言機試(操作題)模擬試卷第8套一、程序填空題(本題共1題,每題1.0分,共1分。)1、程序通過定義學生結構體變量,存儲了學生的學號、姓名和3門課的成績。所有學生數(shù)據(jù)均以二進制方式輸出到文件中。函數(shù)fun的功能是重寫形參filename所指文件中最后一個學生的數(shù)據(jù),即用新的學生數(shù)據(jù)覆蓋該學生原來的數(shù)據(jù),其他學生的數(shù)據(jù)不變。請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結構!#include#defineN5typedefstructstudent{longsno;charname[10];floatscore[3];}STU;VOidfun(char*filename,STUn){FILE*fp;/**********found***********/fp=fopen(___1___,“rb+”);/**********found***********/fseek(___2___,一(long)sizeof(STU),SEEKEND);/**********found***********/fwrite(&n,sizeof(STU),1,___3___);fclose(fp);}main(){STUt[N]=({10001,“NaChao”,91,92,77),{10002,“CaoKai”,75,60,88),{10003,“LiSi”,85,70,78},{10004,“FangFang”,90,82,87),{10005,“ZhangSan”,95,80,88}};STUn={10006,“ZhaoSi”,55,70,68},SS[N];inti,j;FILE*fp;fp=fopen(“student.dat”,“wb”);fwrite(t,sizeOf(STU),N,fp);fclose(fp);fp=fopen(“student.dat”,“rb”);fread(ss,siZeOf(STU),N,fp);fclose(fp);printf(“\nTheoriginaldata:\n\n”);for(j=0;j標準答案:(1)filename(2)fp(3)fp知識點解析:本題中函數(shù)fun的功能是重寫形參filename所指文件中最后一個學生的數(shù)據(jù),即用新的學生數(shù)據(jù)覆蓋該學生原來的數(shù)據(jù),本題主要考察文件的讀寫。[解題思路]第一空:“fp=fopen(___1___,“rb+”);”補充fopen的參數(shù),fopen的調用形式是:fp=fopen(文件名,文件使用方式),因此第一空處應填文件名“filename”。第二空:此處是補充fseek函數(shù)的參數(shù),fseek的調用形式是:fseek(fp,offset,position,),其中第一個參數(shù)是文件型指針,故第二空處應填文件型指針變量“fp”。第三空:fwrite的調用形式是(buffer,size,count,fp),最后一個參數(shù)是文件型指針,故第三空處應填“fp”,將新的學生數(shù)據(jù)寫在最后一個學生數(shù)據(jù)位置。二、程序修改題(本題共1題,每題1.0分,共1分。)2、已知一個數(shù)列從第0項開始的前三項分別為0,0,1,以后的各項都是其相鄰的前三項之和。給定程序MODll.C中函數(shù)fun的功能是:計算并輸出該數(shù)列前n項的平方根之和。n的值通過形參傳入。例如,當n=10時,程序的輸出結果應為:23.197745。請改正程序中的錯誤,使程序能輸出正確的結果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!#include#include/**********found***********/fun(intn){doublesumfs0,s1,s2,s;intk;sum=1.0;if(n<=2)sum=0.0;s0=0.0;s1=0.0;s2=1.0;for(k=4;k<=n;k++){s=s0+s1+s2;sum+=sqrt(s);s0=s1;s1=s2;s2=s;}/**********found***********/returnsum}main(){intn;printf(”InputN=”);scanf("%d",&n);printf(“%f\n”,fun(n));}標準答案:(1)doublefun(intn)(2)returnsum;知識點解析:本題中函數(shù)的功能是計算并輸出該數(shù)列前n項的平方根之和sum。解題思路首先根據(jù)題干求得每一項的值,然后再計算數(shù)列前n項的平方根之和。[解題思路](1)第一個錯誤標識下fun函數(shù)的定義根據(jù)題干要返回前n項的平方根之和,函數(shù)具有返回值,所以“fun(intn)”應改為“doublefun(intn)”,其中double為雙精度型變量。(2)第二個標識符下返回平方根之和,根據(jù)C語言語法每一句C語言后面應該以“:”為結尾,所以“retumsum”改為“retumsum:”。三、程序設計題(本題共1題,每題1.0分,共1分。)3、請編寫一個函數(shù)fun,它的功能是:將SS所指字符串中所有下標為奇數(shù)位置上的字母轉換為大寫(若該位置上不是字母,則不轉換)。例如,若輸入“abc4EFg”,則應輸出“aBc4EFg”。注意:部分源程序存在文件PROGl.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#include#includevoidfun(char*ss){}main(){chartt[81];voidNONO();printf(“\nPleaseenteranstringwithin80characters:\n”);gets(tt);printf(“\n\nAfterchanging,thestring\n\”%S\“”,tt);fun(tt);printf(“\nbecomes\n\”%s\“\n”,tt);NONO();}voidNONO(){/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調用函數(shù),輸出數(shù)據(jù),關閉文件。*/FILE*fp,*wf;chartt[81];inti;fp=fopen(“in.dat”,“r”);wf=fopen(“out.dat”,“W”);for(i=0;i<10;i++){fscanf(fp,“%S”,tt);fun(tt);fprintf(wf,“%S\n”,tt);}fclose(fp);fclose(wf);}標準答案:inti;for(i=1;i=‘a’&&ss[i]<=‘z’)ss[i]一=3

溫馨提示

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

評論

0/150

提交評論