版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
國家二級C語言機試(操作題)模擬試卷44(共9套)(共27題)國家二級C語言機試(操作題)模擬試卷第1套一、程序填空題(本題共1題,每題1.0分,共1分。)1、下列給定程序中,函數(shù)fun的功能是:計算N×N矩陣的主對角線元素和反向?qū)蔷€元素之和,并作為函數(shù)值返回。要求先累加主對角線元素中的值,再累加反向?qū)蔷€元素中的值。例如,若N=3,有下列矩陣:123456789首先累加1、5、9,然后累加3、5、7,函數(shù)返回值為30。請在程序的下畫線處填入正確的內(nèi)容并將下畫線刪除,使程序得出正確的結果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdio.h>#defineN4fun(intt[][N],intn){inti,sum;/*********found*********/【1】;for(i=0;i<n;i++)/*********found*********/sum+=【2】;for(i=0;i<n;i++)/*********found*********/sum+=t[i][n—i一【3】];returnsum;}main(){inti,j,t[]IN]={21,2,13,24,25,16,47,38,29,11,32,54,42,21,3,10};printf("\nfheoriginalclata:\n");for(i=0;i<N;i++){for(j=0;j<N;j++)printf("%4d",t[i][j]);printf("\n");}printf("Theresultis:%d",fun(t,N));}標準答案:(1)sum=0(2)t[i][i](3)1知識點解析:填空1:變量sum用來儲存“和”結果,所以將其初始化為0。填空2:從題目中可以了解到,主對角線元素的行和列下標是相同的,所以應填入t[i][i]。填空3:對于反向?qū)蔷€元素的行和列的下標,它們的關系是相加和為n一1,所以應填入1。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun的功能是:先將s所指字符串中的字符按逆序存放到t所指字符串中,然后把s所指串中的字符按正序連接到t所指串之后。例如,當s所指的字符串為“ABCDE”時,t所指的字符串應為“EDCBAABCDE”。請改正程序中的錯誤,使它能得出正確的結果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#include<string.h>voidfun(char*s,char*t){/*********found*********/inti;s1=strlen(s);for(i=0;i<s1;i++)/*********found*********/t[i]=s[s1一i];for(i=0;i<=S1;i++)t[s1+i]=s[i];t[2*s1]=’\0’;}voidmain(){chars[100],t[100];system("CLS");printf("\nPleaseenterstrings:");scanf("%s",s);fun(s,t);printf("Theresultis:%s\n",t)7}標準答案:(1)inti,sl;(2)t[i]=s[sl—i一1];知識點解析:(1)變量sl沒有定義。(2)該循環(huán)實現(xiàn)將s串中的字符逆序存入t串中,t[i]對應s串中的s[sl—i一1]。三、程序設計題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,其功能是:將一組得分中,去掉一個最高分和一個最低分,然后求平均值,并通過函數(shù)返回。函數(shù)形參a指向存放得分的數(shù)組,形參n中存放得分個數(shù)(n>2)。例如,若輸入9.98.57.68.59.39.58.97.88.68.4十個得分,則輸出結果為:8.687500。注意:部分源程序存在PROG1.C中,請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。試題程序:#include<stdio.h>voidNONO();doublefun(doublea[],intn){}main(){doubleb[10],r;inti;printf("輸入10個分數(shù)放入b數(shù)組中:");for(i=0;i<10;i++)scanf("%lf",&b[i]);printf("輸入的10個分數(shù)是:");for(i=0;i<10;i++)printf("%4.1lf",b[i]);printf("\n");r=fun(b,10);printf("去掉最高分和最低分后的平均分:%f\n",r);NONO();}voidNONO(){/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關閉文件。*/FILE*fp,*wf;inti,j;doubleb[10],r;fp=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){for(j=0;j<10;j++){fscanf(fp,"%lf",&b[j]);}r=fun(b,10);fprintf(wf,"%f\n",r);}fclose(fp);fclose(wf);}標準答案:doublefun(doublea[],intn){doublesum=0,max,min;inti;max=min=a[0];for(i=0;i<n;i++){sum=sum+a[i];if(max<a[i])max=a[i];if(min>a[i])min=a[i];}sum=sum—max—min;return(sum/(n一2));}知識點解析:設定三個變量sum存放合值,max存放最大值,min存放最小值。max和min都賦為數(shù)組中第一個元素的值。利用循環(huán)將數(shù)組中元素累加到sum中,并找出最大值和最小值,sum值減去最大值和最小值。函數(shù)返回sum除以元素個數(shù)一2得平均值。國家二級C語言機試(操作題)模擬試卷第2套一、程序填空題(本題共1題,每題1.0分,共1分。)1、人員的記錄由編號和出生年、月、日組成,N名人員的數(shù)據(jù)已在主函數(shù)中存入結構體數(shù)組std中,且編號唯一。函數(shù)fun的功能是:找出指定編號人員的數(shù)據(jù),作為函數(shù)值返回,由主函數(shù)輸出,若指定編號不存在,返回數(shù)據(jù)中的編號為空串。請在程序的下畫線處填入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdio.h>#include<string.h>#defineN8typedefstruct{charnum[10];intyear,month,day;}STU;/*********found*********/【1】fun(STU*std,char*num){inti;STUa={"",9999,99,99};for(i=0;i<N;i++)/*********found*********/if(strcmp(【2】,num)==0)/*********found*********/return(【3】);returna;}main(){STUstd[N]={{"111111",1984,2,15},{"222222",1983,9,21},{"333333",1984,9,1},{"444444",1983,7,15},{"555555”,1984,9,28},{"666666",1983,11,15),{"777777",1983,6,22),{"888888",1984,8,19}};STUp;charn[10]="666666";p=fun(stct,n);if(p.rlLlm[0]_=0){printf("\nNotfound!\n");}else{print:f("\nSucceed!\n");printf("%s%d一%d一%d\n",p.num,p.year,p.month,p.day);}}標準答案:(1)STU(2)std[i].num(3)std[i]知識點解析:本題考查:if條件表達式;比較字符串函數(shù)strcmp;指針變量的使用;函數(shù)定義及函數(shù)返回值。strcmp函數(shù)用來比較兩個字符數(shù)組的大小,其格式為:strcmp(字符數(shù)組1,字符數(shù)組2)。若字符數(shù)組1>字符數(shù)組2,函數(shù)值大于0(正數(shù));若字符數(shù)組1=字符數(shù)組2,函數(shù)值等于0;若字符數(shù)組1<字符數(shù)組2,函數(shù)值小于0(負數(shù))。填空1:根據(jù)函數(shù)fun的返回值類型可知,函數(shù)類型標識符應該是結構體類型的,所以填入STU。填空2:根據(jù)題目說明,找出指定編號人員,并將其數(shù)據(jù)返回。通過strcmp函數(shù)比較編號,若相同則函數(shù)值為0,所以填入std[i].num。填空3:由題目可知,假如編號對應,則返回其編號對應數(shù)據(jù),所以填入數(shù)據(jù)std[i]。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun的功能是:從s所指字符串中,找出t所指字符串的個數(shù)作為函數(shù)值返回。例如,當s所指字符串中的內(nèi)容為“abcdabfab”,t所指字符串的內(nèi)容為“ab”,則函數(shù)返回整數(shù)3。請改正程序中的錯誤,使它能得出正確的結果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#include<string.h>intfun(char*s,char*t){intn;char*p,*r;n=0;while(*s){p=s;r=t;while(*r)/*********found*********/if(*r==*p){r++;p++}elsebreak;/*********found*********/if(r==’\0’)n++;s++;}returnn;}voidmain(){chars[100],t[100];intm;system("CLS");printf("\nPleaseenterstrings:");Scanf("%s",s);prJ_ntf("\nPleaseentersubstringt:");Scanf("%s",t);m=fun(s,t);printf("\nTlaeresultis:m=%d\n",m);}標準答案:(1)if(*r==*p){r++;p++;}(2)if(*r==’\0’)知識點解析:本題考查:if語句,考生需要根據(jù)題意確定if語句的判斷條件;字符串結束標識,所有的字符串都要以’\0’結尾,上機考試??贾R點,考生一定要牢記;復合賦值運算,常用于循環(huán)控制和變量的累加、累乘。從字符串s中找出子串t的方法是:從第1個字符開始,對字符串進行遍歷,若s串的當前字符等于t串的第1個字符,兩個字符串的指針自動加1,繼續(xù)比較下一個字符;若比較至字符串t的結尾,則跳出循環(huán);若s串的字符與t串的字符不對應相同,則繼續(xù)對s串的下一個字符進行處理。三、程序設計題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,該函數(shù)的功能是:將s所指字符串中ASCII碼值為偶數(shù)的字符刪除,串中剩余字符形成一個新串放在t所指的數(shù)組中。例如,若s所指字符串中的內(nèi)容為“ABCDEFGl2345”,其中字符B的ASCII碼值為偶數(shù),字符2的ASCII碼值為偶數(shù),都應當刪除,其他依此類推。最后t所指的數(shù)組中的內(nèi)容應是“ACEGl35”。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<stdlib.h>#include<stdio.h>#include<string.h>#include<conio.h>voidfun(char*s,chart[]){}voidmain(){chars[100],t[100];system("CLS");printf("\nPleaseenterstrings:");Scanf("%s",s);fun(s,t);print:f("\nTheresult:is:%s\n",t);}標準答案:voidfun(char*s,chart[]){inti=0;for(;*s!=’\0’;s++)/*找出ASCII值為奇數(shù)的字符依次存入數(shù)組t中*/if(*s%2==1)t[i++]=*s;t[i]=’\0’;/*在字符串的末尾加上串結束符*/}知識點解析:本題要求將s所指字符串中ASCII碼值為偶數(shù)的字符刪除,因此本題要求采用一個for循環(huán)來找出ASCII碼值為奇數(shù)的字符依次存入數(shù)組t中,并使用if條件句來判斷s所指字符串中ASCII碼值是否為奇數(shù)。用’\0’加在字符串的末尾來表示字符串的結束。要刪除ASCII碼值為偶數(shù)的字符,也就是要留下ASCII碼值為奇數(shù)的字符。由于最終是要求出剩余字符(即ASCII碼值為奇數(shù))形成的新串,所以本題程序的算法是對原字符串從頭到尾掃描,并找出ASCII碼值為奇數(shù)的字符并將其依次存入數(shù)組t中。此外,還要注意數(shù)組t的下標變化和下標的初值(初值必須為0,即i-0),t[i++]的作用是先使用t[i],然后再使i自增1。國家二級C語言機試(操作題)模擬試卷第3套一、程序填空題(本題共1題,每題1.0分,共1分。)1、程序通過定義學生結構體變量,存儲了學生的學號、姓名和三門課的成績。所有學生數(shù)據(jù)均以二進制方式輸出到文件中。函數(shù)fun的功能是重寫形參filename所指文件中最后一個學生的數(shù)據(jù),即用新的學生數(shù)據(jù)覆蓋該學生原來的數(shù)據(jù),其他學生的數(shù)據(jù)不變。請在程序的下畫線處填入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdio.h>#defineN5typedefstructstudent{longsno;charname[10];floatscore[3];}STU;voidfun(char*filename,STUn){FILE*fp;fp=fopen(【1】,"rb+");fseek(【2】,一(long)sizeof(STU),SEEK_END);/*********found*********/fwrite(&n,sizeof(STU),1,【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,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");{printf("\nNo:%ldName:%一8sscores:",ss[j].sno,ss[j].name);printf("%6.2f",ss[j].score[i]);printf"\n");}fun("student.dat",n);printf("\nThedataaftermodifing:\n\n");fp=fopen("student.dat","rb");fread(ss,sizeof(STU),N,fp);fclose(fp);{printf("\nNo:%ldName:%一8sScores:",ss[j].sno,ss[j].name);printf("%6.2f",ss[j].score[i]);printf("\n");}}標準答案:(1)filename(2)fp(3)fp知識點解析:填空1:本空是對文本文件的打開,filename所指的文件中的最后數(shù)據(jù)要進行重寫,因此首先是要打開,因而本空填寫filename。填空2:fseek功能是重定位流上的文件指針。用法:intfseek(FILE*stream,longoffset,intfromwhere);本空應該填寫fp。填空3:因為題目中要對所有學生數(shù)據(jù)均以二進制方式輸出到文件中,因此本空填寫fp。知識點講解:函數(shù)名:fseek功能:重定位流上的文件指針。用法:intfseek(FILE*stream,longoffset,intfromwhere)。描述:函數(shù)設置文件指針stream的位置。如果執(zhí)行成功,stream將指向以fromwhere為基準(從文件的哪里開始偏移)、偏移offset個字節(jié)的位置。正數(shù)表示正向偏移,負數(shù)表示負向偏移。如果執(zhí)行失?。ū热鏾ffset超過文件自身大?。瑒t不改變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*next;}NODE;NODE*Creatlink(intn,intm){NODE*h=NULL,*p,*s;inti;/*********found*********/p=(NODE)malloc(sizeof(NODE));h=p;p一>next=NULL;{s=<NODE*)maiioc(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);}標準答案:(1)p=(NODE*)malloc(sizeof(NODE));(2)returnh;知識點解析:(1)由變量定義可知p為指向結點的指針。指向剛分配的結構指針,所以應改為p=(NODE*)malloc(sizeof(NODE)).(2)在動態(tài)分配內(nèi)存的下一行語句是,使用臨時結構指針變量h保存p指針的初始位置,最后返回不能使用p,是因為p的位置已經(jīng)發(fā)生了變化,所以應改為returnh。三、程序設計題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,該函數(shù)的功能是:統(tǒng)計一行字符串中單詞的個數(shù),作為函數(shù)值返回。字符串在主函數(shù)中輸入,規(guī)定所有單詞由小寫字母組成,單詞之間有若干個空格隔開,一行的開始沒有空格。注意:部分源程序在文件PROG1.C中。請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。試題程序:#include<string.h>#include<stdio.h>#defineN80intfun(char*s){}voidmain(){FILE*wf;charline[N];inttnum=0:printf"Enterastring:\n");gets(line);num=fun(line);printf("Thenumberofwordwf=fopen("out.dat","w"),fprintf(wf,"%d",fun("abigfclose(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、下列給定程序中,函數(shù)fun的功能是:在形參ss所指字符串數(shù)組中,將所有串長超過k的字符串中后面的字符刪除,只保留前面的k個字符。ss所指字符串數(shù)組中共有N個字符串,且串長小于M。請在程序的下畫線處填入正確的內(nèi)容并將下畫線刪除,使程序得出正確的結果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結構!試題程序:#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:字符串結尾加入字符串結束標識’\0’。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun的功能是:根據(jù)以下公式求π值,并作為函數(shù)值返回。例如,當給指定精度的變量eps輸入0.0005時,應輸出Pi=3.140578。請改正程序中的錯誤,使它能得出正確的結果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!試題程序:#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);rl++;}/*********found*********/return(s);}voidmain(){doublex;printf("\nPleaseenteraprecision:");scarlf("%lf",&x);printf("\nPi=%lf\n",fun(x));}標準答案:(1)t=1.0;(2)return(s*2);知識點解析:該題中,首先檢查變量數(shù)據(jù)類型前后是否一致,因為變量t定義為double型,所以賦值時要賦以實型數(shù)值。return(s)是一個數(shù)學錯誤,應該返回return(s*2);。三、程序設計題(本題共1題,每題1.0分,共1分。)3、規(guī)定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun,其功能是:使字符串的前導*號不得多于n個,若多于n個,則刪除多余的*號;若少于或等于n個,則不做處理。字符串中間和尾部的*號不刪除。例如,字符串中的內(nèi)容為“*******A*BC*DEF*G****”,若n的值為4,刪除后,字符串中的內(nèi)容應當是“****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<stctio.h>#include<conio.h>voidfun(char*a,intn){}voidmain(){chars[81];intn;printf("Enterastring:\n");gets(s);print;f("Entern:");Scanf("%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==’c’)/*用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’;/*在字符串最后加上結束標識*/}}知識點解析:字符串中前導*號不能多于n個,多余的應刪除。首先需要通過while循環(huán)統(tǒng)計字符串前導*號的個數(shù),然后通過if條件語句完成前導*號的個數(shù)和n的比較,如果前導*號多于n個,需要把n個*號和其余字符重新保留。國家二級C語言機試(操作題)模擬試卷第5套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:對形參ss所指字符串數(shù)組中的M個字符串按長度由短到長進行排序。SS所指字符串數(shù)組中共有M個字符串,且串長#include#defineM5#defineN20voidfun(char(*ss)[N]){inti,j,k,n[M];chart[N];for(i=0;in[j])____2____;{strcpy(t,ss[i]);strcpy(ss[i],ss[k]);strcpy(ss[k],____3____);}}}main(){charss[M]IN]={"shanghai","guangzhou","beijing"’"tianjing","cchongqing"};inti;printf("\nTheoriginalstringsare:\n");for(i=0;i標準答案:(1)i+1(2)k=j(3)t知識點解析:函數(shù)fun的功能是用是選擇排序?qū)個字符串由短到長進行排序。第一空:由審題分析可知,外循環(huán)i=0時,內(nèi)循環(huán)變量從i+l到M—1(下標從0開始),從M—1個字符串中再挑出一個最短的字符串,故第一空處應為“i+l”。第二空:k記錄最短字符串的下標,內(nèi)循環(huán)開始前k賦初值i,內(nèi)循環(huán)從剩下的M—i個字符串里面找最短的,比較k字符串和j字符串的長度大小,如果n[k]>nD],則把j賦給k,即第二空處應為“k=j”。第三空:if[k!=i)說明找到了新的更短的字符串,那么把它和第i個字符串交換,因此第三空處應為“t”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:判斷ch中的字符是否與str所指串中的某個字符相同;若相同,什么也不做,若不同,則將其插在串的最后。請改正程序中的錯誤,使它能進行正確的操作。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!#include#include/*********found**********/voidfun(charstr,charch){while(*str&&*str!=ch)str++;/*********found**********/if(*str==ch){str[0]=ch;/*********found**********/{str[1]=ch;}}main(){chars[81],c;printf("\nPleaseenterastring:printf("\nPleaseenterthecharactertosearch:");c=getchar();fun(s,c);printf("\nTheresultis%s\n",s);}標準答案:(1)voidfun(char*str,charch)(2)if(*str!=ch)(3)str[1]=’\0’;知識點解析:函數(shù)功能首先是查找子串再判斷。(1)第一個標識下,“voidfun(charstr,charch)”根據(jù)主函數(shù)中的fun函數(shù)的調(diào)用“fun(s,c)”,知道s為數(shù)組名,所以傳的應該是數(shù)組地址,所以應改為“voidfun(char*str,charch)”。(2)while循環(huán)中對ch與str進行匹配檢查,第二個標識下,是當不同時執(zhí)行連接操作,那么判斷*str與ch是否不同的表達式應該是“if(*str!=ch)”。(3)第三個標識下,連接后的新串要添加結尾符,所以正確的表達是將“str[1]=’0’;”改為“str[1]=’\0’;”。三、程序設計題(本題共1題,每題1.0分,共1分。)3、請編一個函數(shù)fun(char*s),函數(shù)的功能是把s所指字符串中的內(nèi)容逆置。例如:字符串中原有的字符串為:abcdefg,則調(diào)用該函數(shù)后,串中的內(nèi)容為:gfedcba。注意:部分源程序存在文件PROG1.C中。請勿改動主函數(shù)mam和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#include#include#defineN81fun(char*s){}NONO(){/*請在此函數(shù)內(nèi)打開文件,輸入測試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關閉文件。*/inti;chara[N];FILE*rf,*wf;rf=fopen("in.dat","r");wf=fopen("out.dat","w");fscanf(rf,"%s",a);fun(a);fprintf(wf,"%s\n",a);}fclose(rf);fclose(wf);}main(){chara[N];printf("Enterastring:");gets(a);printf("Theoriginalstringis:fun(a);printf("\n");printf("Thestringaftermodified:");puts(a);NONO();}標準答案:1charb[N];2inti=0,j;3memset(b,0,N);4for(j=strlen(s)—1;j>=0;j——)b[i++]=s[j];5strcpy(s,b);知識點解析:該程序功能是字符串中的內(nèi)容逆置。把字符串中字符逆置,就是把字符串中的第一個元素和最后一個元素交換,第二個元素和倒數(shù)第二個元素交換,直到所有元素交換完成為止。國家二級C語言機試(操作題)模擬試卷第6套一、程序填空題(本題共1題,每題1.0分,共1分。)1、下列給定程序中,函數(shù)fun的功能是:在形參ss所指字符串數(shù)組中,將所有串長超過k的字符串中后面的字符刪除,只保留前面的k個字符。ss所指字符串數(shù)組中共有N個字符串,且串長小于M。請在程序的下畫線處填入正確的內(nèi)容并將下畫線刪除,使程序得出正確的結果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結構!試題程序:#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","Modify","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:字符串結尾加入字符串結束標識’\0’。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序的功能是:建立一個帶頭結點的單向鏈表,并用隨機函數(shù)為各結點數(shù)據(jù)域賦值。函數(shù)fun的作用是求出單向鏈表結點(不包括頭結點)數(shù)據(jù)域中的最大值,并且作為函數(shù)值返回。請改正函數(shù)fun中的錯誤,使它能得出正確的結果。注意:部分源程序在文件MODI1.C中,不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdio.h>#include<conio.h>#include<stdlib.h>typedefstructaa{intdata;structaa*next;}NODE;fun(NODE*h){intmax=-1;NODE*P;/*********found*********/P=h;while(P){if(P->data>max)max=P->data;/*********found*********/P=h->next;}returnmax;}outresult(ints,F(xiàn)ILE*pf){fprintf(pf,"\nThemaxinlink:%d\n",s);}NODE*creatlink(intn,intm){NODE*h,*p,*s;inti;h=P=(NODE*)malloc(sizeof(NODE));h->data=9999;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;}p->next=NULL;returnh;}outlink(NODE*h,F(xiàn)ILE*Pf){NODE*P;p=h->next;fprintf(pf,"\nTheLIST:\n\nHEAD");while(P){fprintf(pf,"->%d",P->data);P=P->next;)fprintf(pf,"\n");}main(){NODE*head;intm;system("CLS");head=creatlink(12,100);outlink(head,stdout);m=fun(head);printf("\nTheRESULT:\n");outresult(m,stdout);}標準答案:(1)p=h->next;(2)p=p->next;知識點解析:(1)因為鏈表的頭結點沒有數(shù)據(jù)域,所以對指針p進行初始化時,要將p指向頭結點的下一個結點。(2)通過指針p的移動遍歷鏈表,因此此處應改為p=p->next;。三、程序設計題(本題共1題,每題1.0分,共1分。)3、編寫函數(shù)fun,其功能是:計算n門課程的平均分,結果作為函數(shù)值返回。例如,若有5門課程的成績是:90.5,72,80,61.5,55,則函數(shù)的值為71.80。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>floatfun(float*a,intn){}voidmain(){floatScore[30]={90.5,72,80,61.5,55},aver;aver=fun(score,5);printf("\nAveracjescoreis:%5.2f\n",aver),}標準答案:floatfun(float*a,intn){floatav=0.0;inti;for(i=0;i<n;i++)/*求分數(shù)的總和*/av=av+a[i];return(av/n);/*返回平均值*/}知識點解析:本題考查:如何通過指針來實現(xiàn)計算平均分。本題較簡單,只需用一個循環(huán)語句就可完成數(shù)組元素的求和,再將和除以課程數(shù)即可。需要注意的是本題對指針的操作,當指針變量指向一個數(shù)組時,用該指針變量引用數(shù)組元素,引用方式與數(shù)組的引用方式相同。例如,本題中a指向了score,所以通過a引用score中的元素時可以用下標法,也可以用指針運算法,a[i]和*(a+i)具有相同的作用。下標運算實際上是從當前地址開始往后取出地址中的第幾個元素,當前地址下標為0。例如,若有intcc[10],*p=cc+5;,即p指向了cc的第5個元素,則p[0]的作用與cc[5]相同;p[3]的作用是取出從當前地址(即p所指地址)開始往后的第3個元素,它與cc[8]相同;p[-2]的作用是取出從當前地址開始往前的第2個元素,它與cc[3]相同,但不提倡使用“負”的下標。計算平均分方法。掌握以下語句。for(i=0;i<n;i++)/*求分數(shù)的總和*}av=av+a[i];return(av/n);/*返回平均值*/國家二級C語言機試(操作題)模擬試卷第7套一、程序填空題(本題共1題,每題1.0分,共1分。)1、函數(shù)fun的功能是:將一副撲克牌編號為1,2,3,…,53,54,以某種特定的方式洗牌,這種方式是將這副牌分成兩半,然后將它們交叉,并始終保持編號為1的牌在最上方,如第一次這樣洗牌后的結果為:1,28,2,29,…,53,27,54。兩次洗牌后的結果為:1,41,28,15,2,42…,53,40,27,14,54。程序的功能是:輸出經(jīng)過11次這樣洗牌后的結果。請在程序的下畫線處填入正確的內(nèi)容,并把下畫線刪除,使程序得出正確的結果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdio.h>voidfun(inta[55],intn){inti,k;/*********found*********/int【1】[55];for(i=0;i<n;i++){for(k=1;k<=27;k++){b[2*k一1]=a[k];/*********found*********/b[【2】*k]=a[k+27];}for(k=1;k<=54;k++)/*********found*********/a[k]=【3】;}}main(){intm,a[55],i;for(i=1;i<55;i++)a[i]=i;printf("請輸入洗牌次數(shù):");scanf("%d",&m);fun(a,m);for(i=1;i<55;i++)printf("%d,",a[i]);printf("\n");}標準答案:(1)b(2)2(3)b[k]知識點解析:填空1:for循環(huán)中使用了一個數(shù)組b,用來臨時存放交換位置后的撲克牌,C語言中變量需要先聲明后使用,所以填空(1)處需要聲明一個數(shù)組b。答案為b。填空2:第二個for循環(huán)是將數(shù)組a中前一半元素(即1~27編號的撲克牌)放入數(shù)組b的奇數(shù)位置,將數(shù)組a中的后一半元素(即28—54編號的撲克牌)放入數(shù)組b的偶數(shù)位置,實現(xiàn)撲克牌的交叉洗牌。所以填空(2)處是數(shù)組b的起始值為2的偶數(shù)下標2k,答案為2。填空3:由于數(shù)組b屬于函數(shù)中的臨時變量,所以將數(shù)組a的元素交叉存儲到數(shù)組b后,還需要將數(shù)組b的元素依次賦值給數(shù)組a,第三個for循環(huán)實現(xiàn)的功能是將數(shù)組b賦值給數(shù)組a,所以填空(3)處需要填入對應下標為k的數(shù)組b的元素,答案為b[k]。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中函數(shù)fun的功能是:將tt所指字符串中的小寫字母全部改為對應的大寫字母,其他字符不變。例如,若輸入“Ab,cD”,則輸出“AB,CD”。請改正程序中的錯誤,使它能得出正確的結果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!試題程序:#include<conio.h>#include<stdio.h>#include<string.h>char*fun(chartt[]){int;i;for(i=0;tt[i];i++)/*********found*********/if((tt[i]>=’a’)‖(tt[i]<=’z’))/*********found*********/tt[i]+=32;return(tt);}main(){chartt[81];printf("\nPleaseenterastring:");gets(tt);printf("\nTheresultstringis:\n%s",fun(tt));}標準答案:(1)if((tt[i]>=’a’)&&(tt[i]<=’z’))(2)tt[i]-=32;知識點解析:(1)分析本題可知,要判斷字符是否為小寫字母,即判斷其是否在‘a(chǎn)’~‘z’之間,所以這里需要進行連續(xù)的比較,用&&。(2)從ASCII碼表中可以看出,小寫字母的ASCII碼值比對應大寫字母的ASCII值大32。將字符串中的小寫字母改為大寫字母的方法是:從字符串第—個字符開始,根據(jù)ASCII碼值判斷該字母是不是小寫字母,若是,則ASCII碼值減32。三、程序設計題(本題共1題,每題1.0分,共1分。)3、編寫函數(shù)fun,其功能是:將s所指字符串中ASCII碼值為奇數(shù)的字符刪除,剩余字符形成的新串放在t所指數(shù)組中。例如,若s所指字符串中的內(nèi)容為“ABCDEFG12345”,其中字符A的ASCII碼值為奇數(shù),字符1的ASCII碼值也為奇數(shù),都應當刪除,其他依此類推。最后t所指的數(shù)組中的內(nèi)容應是“BDF24”。注意:部分源程序給出如下。請勿改動主函數(shù)nmin和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>#include<string.h>voidfun(char*s,chart[]){}main(){chars[100],t[100],Msg[]="Pleaseenterstrings:";printf(Msg);Scanf("%s",s);fun(s,t);printf("\nTheresuitis:%s\n",t);}標準答案:Voidfun(char*s,chart[]){inti,j=0,n;n=strlen(s);/*遍歷整個數(shù)組*/for(i=0;i<n;i++)/*如果元素的ASCI工碼值為偶數(shù)*/if(s[i]%2==0){/*將元素保存到t中*/t[j]=s[i];j++;}t[j]=’\0’;}知識點解析:要刪除ASCII碼值為奇數(shù)的字符,也就是要保留ASCII碼值為偶數(shù)的字符,由于最終是要求出剩余字符形成的新串,所以本題的算法是對原字符串從頭到尾掃描,找出ASCII碼值為偶數(shù)的字符并依次存入數(shù)組。國家二級C語言機試(操作題)模擬試卷第8套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序的功能是:調(diào)用函數(shù)fun將指定源文件中的內(nèi)容復制到指定的目標文件中,復制成功時函數(shù)返回值為1,失敗時返回值為0。在復制的過程中,把復制的內(nèi)容輸出到終端屏幕。主函數(shù)中源文件名放在變量sfname中,目標文件名放在變量tfname中。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結構!1#include<stdoo.h>2#include<stdlib.h>3intfun(char*source,char*target)4{FILE*fs,*ft;charch;5/**********found**********/6if((fs=fopen(source,___1___))==NULL)7return0;8if((ft=fopen(target,’’w’’))==NULL}9return0;10prontf(’’\nThedatainfile:\n’’);11ch=fgetc(fs);12/**********found**********/13while(!feof(__2___))14(put:char(ch);15/**********found**********/16fputc(ch,___3___);17ch=fgetc(fs);18}19fclose(fs);fclose(ft);20printf(’’\n\n’’);21return1;22}23main()24{charSfname[20]=’’myfile1’’,tfname[20]=’’myfile2’’;25FILE*myf;inti;charc;26myf=fopen(sfname,’’w’’);27printf(’’\nTheoriginaldata:\n’’);28for(i=1;i<30;i++)29{c=’A’+rand()%25;30fprintf(myf,’’%c’’,c);31printf(’’%c’’,c);)32fclose(myf);printf(’’\n\n’’);33if(fun(Sfname,tfname))34printf(’’Succeed!’’);35elseprintf(”Fail!”);36}標準答案:(1)’’r’’(2)fs(3)ft知識點解析:fun函數(shù)要求實現(xiàn)的功能是將指定源文件中的內(nèi)容復制到指定的目標文件中,即以只讀方式打開源文件,以只寫方式打開目標文件,然后將源文件內(nèi)的內(nèi)容復制到目標文件中。第一空:將指定源文件中的內(nèi)容復制到指定的目標文件中,源文件只需讀,因此,以只讀方式打開即可,故第一空處應該是“if((fs=fopen(source,"r"))==NULL)”。第二空:“while(!feof(__2__))”循環(huán)的目的是不斷讀取源文件直至到達源文件的末尾,循環(huán)結束標志是已達到文件的末尾。用feof()函數(shù)來檢查是否已經(jīng)到了文件末尾,文件狀態(tài)檢測函數(shù)feof()的調(diào)用形式是:feof(fs),如果已經(jīng)到達文件尾函數(shù)返回非零值,否則返回0,故第二空處應該是“while(!feof(fs))”。第三空:考察fputc函數(shù)的使用方法,fputc函數(shù)的調(diào)用形式是:fputc(ch,ft),ch是要輸出的字符,由“ch=fgetc(fs)”從源文件讀到字符ch,然后將ch寫到目標文件中,故第三空處應該是“fputc(ch,ft);”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:將長整型數(shù)s中每一位上為偶數(shù)的數(shù)依次取出,構成一個新數(shù)放在t中。高位仍在高位,低位仍在低位。例如,當S中的數(shù)為:87653142時,t中的數(shù)為:8642。請改正程序中的錯誤,使它能得出正確的結果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!1#include<stdio.h>2voidfun(longs,long*t)3{intd;4longs1=1;5*t=0;6while(s>0)7{d=s%10;8/**********found**********/9if(d%2=0)10{*t=d*s1+*t;11s1*=10;12}13/**********found**********/14s\=10;15}}16main()17{longs,t;18printf(’’\nPleaseenters:’’);scanf(’’%id’’,&s);19fun(s,&t);20printf(’’Theresultis:%id\n’’,t);21}標準答案:(1)if(d%2==0)(2)s/=10;知識點解析:本題中函數(shù)的功能是將長整型數(shù)s中每一位上為偶數(shù)的數(shù)依次取出,構成一個新數(shù)放在t中。首先在函數(shù)中對長整型數(shù)的每一位來進行截取,然后對其進行判斷,最后根據(jù)判斷結果進行操作。(1)第一個標識是判斷d是否是偶數(shù),即比較“d%2”是否等于0,在C語言中,“==”表示的是“等于”,而“=”是賦值,因此,第一個標識下“if(d%2=0)”應改為“if(d%2==0)”。(2)第二個標識下的“s\=10;”是對a的截取,這里的“\”本意應該是除號,但這個在C語言中是不可識別的,所以第二個標識下“s\=10;”應該改為“s/=10;”。三、程序設計題(本題共1題,每題1.0分,共1分。)3、函數(shù)fun的功能是:將S所指字符串中除了下標為偶數(shù)、同時ASCII值也為偶數(shù)的字符外,其余的全都刪除;串中剩余字符所形成的一個新串放在t所指的數(shù)組中。例如,若S所指字符串中的內(nèi)容為:’’ABCDEFGl23456’’,其中字符A的ASCII碼值為奇數(shù),因此應當刪除;其中字符B的ASCII碼值為偶數(shù),但在數(shù)組中的下標為奇數(shù),因此也應當刪除;而字符2的ASCII碼值為偶數(shù),所在數(shù)組中的下標也為偶數(shù),因此不應當刪除,其他依此類推。最后t所指的數(shù)組中的內(nèi)容應是:’’246’’。注意:部分源程序存在文件PROG1.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。1#include<stdio.h>2#include<string.h>3voidfun(char*s,chart[])4{5}6main()7{8chars[100],t[100];9voidNONO();10printf(’’\nPleaseenterstrings:’’);scanf(’’%s’’,s);11fun(s,t);12printf(’’\nTheresultis:%s\n’’,t);13NONO();}14voidNONO()15{/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關閉文件。*/16chars[100],t[100];17FILE*rf*wf;18inti;19rf=fopen(’’in.dat’’,’’r’’);20wf=fopen(’’out.dat’’,’’w’’);21for(i=0;i<10;i++){22fscanf(rf,’’%s’’,s);23fun(s,t);24fprintf(wf,’’%s\n’’,t);25}26fclose(rf);27fclose(wf);}標準答案:1inti,j=0;2for(i=0;i<strlen(s);i+=2)3if(s[i]%2==0)t[j++]=s[i];4t[j]=’\0’;知識點解析:該程序功能是將字符串中除了下標為偶數(shù)、ASCII值也
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學年高中生物 第四章 生物化學與分子生物學技術 第2節(jié) 分子生物學技術說課稿 蘇教版選修1
- 2024新教材高中地理 第三章 產(chǎn)業(yè)區(qū)位選擇 第三節(jié) 服務業(yè)的區(qū)位選擇說課稿 湘教版必修第二冊
- 2023七年級語文下冊 第六單元 綜合性學習 我的語文生活配套說課稿 新人教版
- 2024年春八年級道德與法治下冊 第一單元 堅持憲法至上 第二課 保障憲法實施 第1框 堅持依憲治國說課稿 新人教版
- 2023-2024學年大連理工版5小學信息技術五年級下冊奇妙的編碼(說課稿)1001
- 2024秋四年級英語上冊 Module 10 Unit 2 Merry Christmas說課稿 外研版(三起)001
- 哈爾濱委托協(xié)議翻譯
- 浙江嘉興租房合同(2篇)
- 污水處理廠監(jiān)理合同(2篇)
- 沒有房產(chǎn)證買賣房屋合同(2篇)
- 《中國心力衰竭診斷和治療指南(2024)》解讀完整版
- 《檔案管理課件》課件
- 2024年度中國共產(chǎn)主義共青團團課課件版
- 2025年中考物理終極押題猜想(新疆卷)(全解全析)
- 脛骨骨折的護理查房
- 抽水蓄能電站項目建設管理方案
- 電動工具培訓課件
- 《智能網(wǎng)聯(lián)汽車智能傳感器測試與裝調(diào)》電子教案
- 視頻會議室改造方案
- 【中考真題】廣東省2024年中考語文真題試卷
- GB/T 32399-2024信息技術云計算參考架構
評論
0/150
提交評論