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

下載本文檔

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

文檔簡介

國家二級(C語言)機試模擬試卷40(共9套)(共27題)國家二級(C語言)機試模擬試卷第1套一、程序填空題(本題共1題,每題1.0分,共1分。)1、請補充main函數,該函數的功能是:輸出一個NXN矩陣,要求非周邊元素賦值0,周邊元素賦值1。注意:部分源程序給出如下。請勿改動主函數main和其他函數中的任何內容,僅在main函數的橫線上填入所編寫的若干表達式或語句。試題程序:#include<stdio.h>#defineN10main(){intbb[N]IN];ihti,j,n;clrscr0;printf("\nInputn:\n");scanf("%d",&n);for(i=0;i<n;i++)for(j=0;j<n;j++){if(【】)bb[i][j]=l;else【】;}printf("\n***theresult***\n");for(i=0;i<n;i++){printf("\n\n");for(j=0;j<n;j++)printf("%4d",bb[i][j]);}}標準答案:i==0‖i==n-1‖j==0‖j==n-1bb[i][j]=0知識點解析:第一空:用二維數組表示n×n矩陣時,周邊元素是行下標為0或n-1,列下標為?;騨-1的元素,判斷時四個條件中只要有一個條件滿足,則該元素就是周邊元素,所以用“‖”運算符。第二空:題目要求將非周邊元素賦值為0。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數fun()的功能是:刪除字符串s中所有空白字符(包括Tab字符、回車符及換行符)。輸入字符串時用’#’結束輸入。請改正程序中的錯誤,使它能得出正確的結果。注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構.試題程序:#include<string.h>#include<stdio.h>#include<ctype.h>fun(char*p){int!i,t;charc[80];for(i=0,t=0;p[i];i++)if(!isspace(*(p+i)))c[t++]=p[i];/**********************************/c[t]=’\0’;strcpy(p,c);}main(){charc,s[80];inti=0;printf("Inputastring:");c=getchar();while(c!=’#’)(s[i]=c;i++;c=getchar();}s[i]="\0";fun(s);puts(s);}標準答案:錯誤:c[t]="\0",正確:c[t]=’\0’知識點解析:注意,該程序的if條件中應用了isspace函數,該函數的功能是檢查ch是否空格、跳格符(制表符)或換行符。三、程序設計題(本題共1題,每題1.0分,共1分。)3、假定輸入的字符串中只包含字母和*號。請編寫函數fun(),它的功能是:將字符串尾部的*號全部刪除,前面和中間的*號不刪除。例如,若字符串中的內容為****A*BC*DEF*G*******刪除后,字符串中的內容則應當是****A*BC*DEF*G。注意:部分源程序給出如下。請勿改動主函數main和其他函數中的任何內容,僅在函數6ln的花括號中填入所編寫的若干語句。試題程序:#include<stdio,h>#include<conio.h>voidfun(char*a){}main(){chars[81];printf("Enterastring:\n");gets(s);fun(s);printf("Thestringafterdeleted:\n");puts(s);}標準答案:voidfun(char*a){while(*a!=’\0’)a++;a--;/*指針a指向字符串的尾部*/while(*a==’*’)a--/*指針a指向最后一個字母*/*(a+l)=’\0’;/*在字符串最后加上結束標志位*/}知識點解析:前面我們遇到類似將字符串頭部的’*’號全部刪除,其實解題思路是一樣的,請參照前面試題解析及參考答案。國家二級(C語言)機試模擬試卷第2套一、程序填空題(本題共1題,每題1.0分,共1分。)1、函數fun的功能是:把形參a所指數組中的偶數按原順序依次存放到a[0]、a[1]、a[2]、……中,把奇數從數組中刪除,偶數個數通過函數值返回。例如:若a所指數組中的數據最初排列為:9、1、4、2、3、6、5、8、7,刪除奇數后a所指數組中的數據為:4、2、6、8,返回值為4。請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結構!#include#defineN9intfun(inta[],intn){inti,j;j=0;for(i=0;i標準答案:a[i]%2a[j]j知識點解析:第一空:由“___2___=a[i];j++;”是將偶數元素保存起來并且計數變量加1,可知j記錄了偶數元素的個數,第一空處是判斷a[i]是否是偶數,因此第一空處應為“a[i]%2”。第二空:a所指數組中的偶數按原順序依次存放到a[0]、a[1]、a[2]….,j初始化為0,a[j]就可以將偶數元素存放在a中,故第二空處應為“a[j]”。第三空:fun函數的返回值是偶數個數,故第三空處應為“j”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數fun的功能是:用選擇法對數組中的n個元素按從小到大的順序進行排序。請修改程序中的錯誤,使它能得出正確的結果。注意:不要改動main函數,不得增行和刪行,也不得更改程序的結構!#include#defineN20voidfun(inta[],intn){inti,j,t,p;for(j=0;j<n-1;j++){/************found************/p=jfor(i=j;i<n;i++)if(a[i]<a[p])/************found************/p=j;t=a[p];a[p]=a[j];a[j]=t;}}main(){inta[N]={9,6,8,3,-1},i,m=5;printf("排序前的數據:");for(i=0;i<m;i++)printf("%d",a[i]);printf("\n");fun(a,m);printf("排序后的數據:");for(i=0;i<m;i++)printf("%d",a[i]);printf("\n");}標準答案:p=j;p=i;知識點解析:(1)第一個標識下面“p=j”,根據C語言的語法,不難發(fā)現(xiàn)語句結束缺少分號,因此改為“p=j;”。(2)第二個標識下面的“p=j;”上兩句是以i作為循環(huán)和判斷條件,其中語句“for(i=j;i三、程序設計題(本題共1題,每題1.0分,共1分。)3、請編寫函數fun,它的功能是:求出ss所指字符串中指定字符的個數,并返回此值。例如,若輸入字符串:123412132,輸入字符為:1,則輸出:3。注意:部分源程序在文件PROGI.C中。請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。#include#include#defineM81intfun(char*ss,charc){}main(){chara[M],ch;voidNONO();printf("\nPleaseenterastring:");gets(a);printf("\nPleaseenterachar:");ch=getchar();printf("\nThenumberofthecharis:%d\n",fun(a,ch));NONO();}voidNONO(){/*本函數用于打開文件,輸入測試數據,調用fun函數,輸出數據,關閉文件。*/inti;FILE*rf,*wf;chara[M],b[M],ch;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%s",a);fscanf(rf,"%s",b);ch=*b;fprintf(wf,"%c=%d\n",ch,fun(a,ch));}fclose(rf);fclose(wf);}標準答案:{intcnt=0;char*p=ss;while(*p){if(*p==c)cnt++;p++;}returncnt;}知識點解析:如果不是串尾就進入while循環(huán),在循環(huán)過程中利用if條件表達式判斷當前字符是否為指定的字符,如果符合條件,那么對統(tǒng)計計數變量進行加1操作。國家二級(C語言)機試模擬試卷第3套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數fun的功能是:在形參ss所指字符串數組中,查找含有形參substr所指子串的所有字符串并輸出,若沒找到則輸出相應信息。ss所指字符串數組中共有N個字符串,且串長小于M。程序中庫函數substr(s1,s2)的功能是在s1串中查找s2子串,若沒有,函數值為0,若有,為非0。請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結構!#include#include#defineN5#defineM15voidfun(char(*ss)[M],char*substr){inti,find=0;/***************found**************/for(i=0;i<【1】;i++)/***********found**************/if(strstr(ss[i],【2】)!=NULL){find=1;puts(ss[i]);printf("\n");}/************found************/if(find==【3】)printf("\nDon’tfound!\n");}main()(charx[N][M]=("BASIC","Clangwage","Java","QBASIC","Access"},str[M];int1;printf("\nTheoriginalstring\n\n");for(i=0;i標準答案:(1)N(2)substr(3)0知識點解析:第一空:“for(i=0;i<【1】;i++)"補充循環(huán)的結束條件,fun的參數(*ss)[M]是指向N行M列的字符串數組,循環(huán)是逐行字符串是否含有substr所指的子串,因此循環(huán)次數是N次,故第一空處應為“N"。第二空:“if(strsr(ss[i],【2】)!=NULL)"是判斷字符串ss[i]是否含有substr所指的子串,故第二空處為"substr"。第三空:“if(find==【3】)printf("\nDon’tfound!\n");"說明沒有找到輸出提示信息,如果找到了“find=1;puts(ss[i]);printf("\n");"可知find會變成1,在沒有找到的情況下find為初值0。故第三空處判斷find是否等于0便可知是否找到了符合要求的字符串,因此第三空為“0"。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數fun的功能是:將p所指字符串中的所有字符復制到b中,要求每復制三個字符之后插入一個空格。例如,在調用fun函數之前給a輸入字符串:ABCDEFGHIJK,調用函數之后,字符數組b中的內容則為:ABCDEFGHIJK。請改正程序中的錯誤,使它能得出正確結果。注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構。#includevoidfun(char*p,char*b){inti,k=0;while(*p){i=1;while(i<=3&&*p){/***************found****************/b[k]=p;k++;p++;i++;}if(*p){/***************found****************/b[k++]="";}}b[k]=’\0’;}main(){chara[80],b[80];printf("Enterastring:");gets(a);printf("Theoriginalstring:");puts(a);fun(a,b);printf("\nThestringafterinsertspace:");puts(b);printf("\n\n");}標準答案:(1)b[k]=*p;(2)b[k++]=’’;知識點解析:(1)p是指針。p存放的內容是地址值,第一標識下“b[k]=p;"含義是將p存放的地址內容賦給b[k],而不是把p指向豹字符拷貝到b[k],顯然不符合題意,應改成“b[k]=*p;",*p是取p指向的字符的內容。(2)第二個標識符下是復制三個字符后在b中插入空格,原題中給出的"b[k++]="";",在c語言中字符常量是由單引號括起的單個字符,即空格字符應為“’’",而“"""是表示字符串常量且該字符串中只有一個空格字符。第二標識下是將空格字符復制給b[k++],因此第二標識下應改為“b[k++]=“;"。三、程序設計題(本題共1題,每題1.0分,共1分。)3、請編寫程序fun,函數的功能是:實現(xiàn)B=A+A’,即把矩陣A加上A的轉置,存放在矩陣B中。計算結果在main函數中輸出。例如,輸入下面的矩陣:其轉置矩陣為:程序輸出:注意:部分源程序在文件PROGl.C中。請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。#includevoidfun(inta[3][3],intb[3][3]){}main()/*主程序*/{inta[3][3]=({1,2,3},{4,5,6},{7,8,9}},t[3][3];inti,j;voidNONO();fun(a,t);for(i=0;i<3;i++){for(j=0;j<3;j++)printf("%7d",t[i][j]);printf("\n");}NONO();}voidNONO(){/*本函數用于打開文件,輸入測試數據,調用fun函數,輸出數據,關閉文件。*/inti,j,k,a[3][3],t[3][3];FILE*rf,*wf;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(k=0;k<5;k++){for(i=0;i<3;i++)fscanf(rf,"%cl%d%d",&a[i][0],&a[i][1],&a[i][2]);fun(a,t);for(i=0;i<3;i++){for(j=0;j<3;j++)fprintf(wf,"%7d",t[i][j]);fprintf(wf,"\n");}}fclose(rf);fclose(wf);}標準答案:intc[3][3];inti,j;for(i=0;i<3;i++)for(j=0;j<3;j++){c[i][j]=a[j][i];//矩陣的轉置b[i][j]=a[i][j]+c[i][j];}知識點解析:(1)首先,將a所指數組元素中的值進行轉置并放到c所指數組中。(2)矩陣相加是指把兩個矩陣中下標相同的元素的值一一對應相加。國家二級(C語言)機試模擬試卷第4套一、程序填空題(本題共1題,每題1.0分,共1分。)1、請補充main函數,該函數的功能是:從鍵盤輸入學生的成績(用回車鍵作為分隔符),并統(tǒng)計各分數段學生的人數。具體要求為:A類為90~100分,B類為80~89分,C類為70~79分,D類為60~69分,59分以下的為E類。當成績?yōu)?時結束成績的輸入,并且最后輸入的0不進行統(tǒng)計。例如,輸入89,99,45,64,56,78,88,74,66,55,0。結果為A:1B:2C:2D:2E:3注意:部分源程序給出如下。請勿改動主函數main和其他函數中的任何內容,僅在main函數的橫線上填入所編寫的若干表達式或語句。試題程序:#include<stdio.h>#include<conio.h>#defineN100main(){floatscore[N];intbb[5];intgrade,i=-1,n=0;charch=’A’;clrscr();printf("Inputascore(0~100);\n");do{i++;n++;printf("score[%d]=",i);scanf(【】);}while(score[i]!=0);for(i=0;i<5;i++)【】;for(i=0;i<n-1;i++){grade=【】;switch(grade){case10:case9:bb[0]++;break;case8:bb[1]++;break;case7:bb[2]++;break;case6:bb[3]++;break;default:bb[4]++;}}for(i=0;i<5;i++)printf("\n%c:%d",ch+i,bb[i]);}標準答案:"%f",&score[i]bb[i]=0score[i]/10知識點解析:第一空;本題考查標準輸入函數scanf()的調用格式,注意score[i]為實型變量,并且score[i]的前面要記住加上取址符&。第二空:數組bb[5]中存放各分數段學生的人數,程序中只對數組bb[5]進行了聲明,并沒有給予初始化,此處將數組各元素初始化為0。第三空:通過switch語句可以看出,grade等于將分數整除10后的值。注意,運算符‘/’兩邊都是整型數時,結果仍然是整型數。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數fun()的功能是:依次取出字符串中所有的數字字符,形成新的字符串,并取代原字符串。請改正函數fun()中的錯誤,使它能得出正確的結果。注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構。試題程序:#include<stdio.h>#include<conio.h>voidfun(char*s){inti,j;for(i=0,j=0;s[i]!=’\0’;i++)if(s[i]>=’0’&&s[i]<=’9’)/*************found**************/s[j]=s[i];/*************found**************/s[j]="\0";}main(){charitem[80];clrscr();printf("\nEnterastring:");gets(item);printf("\n\nThestringis:\%s\n",item);fun(item);printf("\n\nThestringofchangingis:\%s\n",item);}標準答案:(1)錯誤;s[j]=s[i];正確:s[j++]=s[i];(2)錯誤:s[j]="\0";正確:s[j]=’\0’;知識點解析:有循環(huán)條件if(s[i]>=’0’&&s[i]<=’9’)以及題目要求“依次取出字符串中所有的數字字符”可知,s[j]=s[i];表述錯誤。s[j]="\0";中是一個常識性語法錯誤,學習者只要在平時訓練的時候注意一下就可以了。三、程序設計題(本題共1題,每題1.0分,共1分。)3、請編寫函數voidfun(intx,intpp[],int*n),它的功能是:求出能整除x且不是偶數的各整數,并按從小到大的順序放在即所指的數組中,這些除數的個數通過形參n返回。例如,若x中的值為30,則有4個數符合要求,它們是1,3,5,15。注意:部分源程序給出如下。請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>voidfun(intx,intpp[],int*n){}main(){intx,aa[1000],n,i;clrscr();printf("\nPleaseenteranintegernumber:\n");scanf("%d",&x);fun(x,aa,&n);for(i=0;i<n;i++)printf("%d",aa[i]);printf("\n");}標準答案:voidfun(intx,intpp[],int*n){inti,j=0;for(i=1;i<x;i=i+2)/*i的初始值為1,步長為2,確保i為奇數*/if(x%i==0)/*將能整除x的數存入數組pp中*/pp[j++]=i;*n=j;/*傳回滿足條件的數的個數*/}知識點解析:本題題干信息是:能整除x且不是偶數的所有整數。循環(huán)語句中i從1開始且每次增2,所以i始終是奇數。國家二級(C語言)機試模擬試卷第5套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數fun的功能是將帶頭節(jié)點的單向鏈表結點數據域中的數據從小到大排序。即若原鏈表結點數據域,從頭至尾的數據為:10、4、2、8、6,排序后鏈表結點數據域從頭至尾的數據為:2、4、6、8、10。請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結果。注意:源程序存放在考生文件夾下的BLANKI.C中。不得增行或刪行,也不得更改程序的結構!#include#include#defineN6typedefstructnode{intdata;structnode*next;}NODE;voidfun(NODE*h){NODE*p,*q;intt;/**********found**********/p=【1】;while(p){/**********found**********/q=【2】;while(q){/**********found**********/if(p->data【3】q->data){t=p->data;p->data=q->data;q->data=t;}q=q->next;}p=p->next;}}NODE*creatlist(inta[]){NODE*h,*p,*q;inti;h=(NODE*)malloc(sizeof(NODE));h->next=NULL;for(i=0;idata=a[i];q->next=NULL;if(h->next==NULL)h->next=p=q;else{p->next=q;p=q;}}returnh;}voidoutlist(NODE*h){NODE*p;p=h->next;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("\nThelistaftersorting:\n");outlist(head);}標準答案:h->nextp->next>=知識點解析:第一空:由審題分析可知,q從h的下一個元素開始尋找最小值,故第一空為“h->next”。第二空:由審題分析可知,while循環(huán)是在剩下的元素當中找最小值,剩下的結點是由q指向的鏈表,q從p的后一個結點開始,故第二空處應為“p->next”。第三空:“if(p->data__3__q->data)”是比較p結點和p結點數據的大小,如果p結點的數據比q結點的數據大,那么應該將p結點和q結點的數據進行交換,故第三空處應為“>=”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數fun的功能是:將s所指字符串中出現(xiàn)的與t1所指字符串相同的子串全部替換成t2所指字符串,所形成的新串放在w所指的數組中。在此處,要求t1和t2所指字符串的長度相同。例如,當s所指字符串中的內容為:”abcdabfab”,t1所指子串中的內容為:”ab”,t2所指子串中的內容為:”99”時,結果在W所指的數組中的內容應為:”99cd99f99”。請改正程序中的錯誤,使它能得出正確的結果。注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構!#include#includevoidfun(char*s,char*t1,char*t2,char*w){char*p,*r,*a;strcpy(w,s);while(*w){p=w;r=t1;/************found************/while(r)if(*r==*p){r++;p++;}elsebreak;if(*r==’\0’){a=w;r=t2;while(*r){/************found************/*a=*r;a++;r++}w+=strlen(t2);}elsew++;}}main(){chars[100],t1[100],t2[100],w[100];printf("\nPleaseenterstringS:");scanf("%s",s);printf("\nPleaseentersubstringt1:");scanf("%s",t1);printf("\nPleaseentersubstringt2:");scanf("%s",t2);if(strlen(t1)==strlen(t2)){fun(s,t1,t2,w);printf("\nTheresultis:%s\n",w);}elseprintf("Error:strlen(t1)!=strlen(t2)\n");}標準答案:while(*r)*a=*r;a++;r++;知識點解析:(1)函數通過while語句比較r所指字符串是否和p所指的子串相同,若有相同,會一直循環(huán)到*r是’\0’才退出循環(huán)。所以第二個標識下的“while(r)”改為“while(*r)”。(2)C語言中,語句應該以“;”結束,在第二個標識處,“r++”語句沒有以“;”結束,因此第二個標識處應該是“*a=*r;a++;r++;”。三、程序設計題(本題共1題,每題1.0分,共1分。)3、請編寫函數fun,它的功能是:求出能整除形參x且不是偶數的各整數,并按從小到大的順序放在pp所指的數組中,這些除數的個數通過形參n返回。例如,若x中的值為:35,則有4個數符合要求,它們是:1,5,7,35。注意:部分源程序在文件PROGI.C文件中。請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。#includevoidfun(intx,intpp[],int*n){}main(){intx,aa[1000],n,i;voidNONO();printf(”\nPleaseenteranintegernumber:\n”);scanf(”%d”,&x);fun(x,aa,&n);for(i=0;i標準答案:{inti;*n=0;for(i=1;i<=x;i++)if((x%i==0)&&(i%2))pp[(*n)++]=i;}知識點解析:進入fun函數,根據前面的分析:首先,初始化變量*n;定義i,作為循環(huán)變量。然后,每判斷一次i的值是否能整除形參x,且i不為偶數,滿足題干條件的話存儲到pp所指數組中,*n記錄找到整數的個數,不斷循環(huán)此過程,直到i的值等于m。國家二級(C語言)機試模擬試卷第6套一、程序填空題(本題共1題,每題1.0分,共1分。)1、程序通過定義學生結構體變量,存儲了學生的學號、姓名和3門課的成績。所有學生數據均以二進制方式輸出到文件中。函數fun的功能是重寫形參filename所指文件中最后一個學生的數據,即用新的學生數據覆蓋該學生原來的數據,其他學生的數據不變。請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結果。注意:源程序存放在考生文件夾下的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),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,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標準答案:filenamefpfp知識點解析:第一空:“fp=fopen(__1__,"rb+");”補充fopen的參數,fopen的調用形式是:fp=fopen(文件名,文件使用方式),因此第一空處應填文件名“filename”。第二空:此處是補充fseek函數的參數,fseek的調用形式是:fseek(fp,offset,position),其中第一個參數是文件型指針,故第二空處應填文件型指針變量“fp”。第三空:fwrite的調用形式是(buffer,size,count,fp),最后一個參數是文件型指針,故第三空處應填“fp”,將新的學生數據寫在最后一個學生數據位置。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數fun的功能是:根據整型形參m,計算如下公式的值。例如,若m=2000,則應輸出:0.000160。請改正程序中的語法錯誤,使它能計算出正確的結果。注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構!#inclucle/****************found**************/fun(intm){doubley=0,d;inti;/****************found**************/for(i=100,i<=m,i+=100){d=(double)i*(double)i;y+=1.0/d;}return(y);}mein(){intn=2000;printf("\nTheresultis%lf\n",fun(n));}標準答案:(1)doublefun(in七m)(2)for(i=100;i<=m;i+=100)知識點解析:(1)第一個標識下的fun函數的定義,根據題干中給出的公式中的分數部分??芍獞摼哂衐ouble類型返回值。所以應將“。fun(intm)"改為“doublefun(intm)"。(2)第二個標識下的for循環(huán)過程是實現(xiàn)對公式的求解,C語句中for循環(huán)中的多個循環(huán)條件表達式是以分號為分隔符,所以第二個標識下“for(,凈100,i<=m,i+=100)"改為“for(i=100;i<=m;i+=100)"。三、程序設計題(本題共1題,每題1.0分,共1分。)3、假定輸入的字符串中只包含字母和·號。請編寫函數fun,它的功能是:使字符串的前導·號不得多于n個;若多于n個,則刪除多余的*號:若少于或等于n個,則什么也不做,字符串中間和尾部的*號不刪除。例如,字符串中的內容為:*********A*BC*DEF*G****,若n的值為4,刪除后,字符串中的內容應當是:****A*BC*DEF*G****;若n的值為8,則字符串中的內容仍為********A*BC*DEF*G****。n的值在主函數中輸入。在編寫函數時,不得使用C語言提供的字符串函數。注意:部分源程序在文件PROGl.C文件中。請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。#includevoidfun(char*a,intn){}main(){chars[81];intn;voidNONO();printf("Enterastring:\n");gets(s);printf("Entern:");scanf("%d",&n);fun(s,n);printf("Thestringafterdeleted:\n");puts(s);NONO();}voidNONO(){/*本函數用于打開文件,輸入數據,調用函數,輸出數據,關閉文件。*/FILE*in,*out;inti,n;chars[81];in=fopen("in.dat","r");out=fopen("out.dat","w");for(i=0,i<10;i++){fscanf(in,"%s",s);fscanf(in,"%d",&n),fun(s,n),fprintf(out,"%s\n",s);}fclose(in);fclose(out);}標準答案:inti=0,k=0;char*t=a;while(*t==’*’){k++;t++;}t=a;if(k>n)t=a+k—n;while(*t){a[i]=*t;i++;t++;}a[i]=’\0’;知識點解析:(1)首先由字符串頭開始判斷字符是否為"*"號字符,如果字符是符號"*",則對"*"號進行統(tǒng)計。(2)根據統(tǒng)計的"*"號數目結合題目中對"*"號個數的要求,判斷是執(zhí)行對"*"號的截取操作,還是什么都不用做。(3)然后將其他的所有字符拷貝到字符串,最后記得在新串s的末尾加上結束符"’\n’"。國家二級(C語言)機試模擬試卷第7套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數fun的功能是:對形參s所指字符串中下標為奇數的字符按ASCⅡ碼大小遞增排序,并將排序后下標為奇數的字符取出,存入形參p所指字符數組中,形成一個新串。例如,形參s所指的字符串為:baawrskjghzlicda,執(zhí)行后p所指字符數組中的字符串應為:aachjlsw。請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結果。注意:源程序存放在考生文件夾下的BLANKI.C中。不得增行或刪行,也不得更改程序的結構!#includevoidfun(char*s,char*p){inti,j,n,x,t;n=0;for(i=0;s[i]!=’\0’;i++)n++;for(i=l,is[j])t=j;if(t!=i){x=s[i];s[i]=s[t];s[t]=X;}}for(i=l,j=0;i標準答案:(1)t=i(2)i(3)0或“\0"知識點解析:第一空:由審題分析可知,t記錄開始的字符,數組中挑選一個最小的元素和t位置的字符交換,故第一空處應為“t=1"。第二空:“for(j=【2】+2;j二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數fun的功能是:根據整型形參m,計算如下公式的值。例如,若m中的值為:5,則應輸出:1.463611。請改正程序中的錯誤,使它能得出正確的結果。注意:不要改動main函數,不得增行或刪行。也不得更改程序的結構!#includedoublefun(intm){doubley=1.0;inti;/******************found*******************/for(i=2;i標準答案:(1)for(i=2;i<=m;i++)(2)y+=1.0/(i*i);知識點解析:(1)根據題干中給出的公式,可以看到循環(huán)是從2到m,所以第一個標識下的“for(i=2;i三、程序設計題(本題共1題,每題1.0分,共1分。)3、已知學生的記錄由學號和學習成績構成,N名學生的數據已存入結構體數組a中。請編寫函數fun,函數的功能是:找出成績最高的學生記錄,通過形參指針傳回主函數(規(guī)定只有一個最高分)。已給出函數的首部,請完成該函數。注意:部分源程序存在文件PROGI.C中。請勿改動主函數mare和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。#include#include#defineN10typedefstructss{charnum[10];ints;}STU;fun(STUa[],STU*s){}main(){STUa[N]={{"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A05",77},{"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71}},m;inti;printf("*****Theoriginaldata*****\n");for(i=0;i<N;i++)printf("No=%sMark=%d\n",a[i].num,a[i].s);fun(a,&m);printf("*****THERESULT*****\n");printf("Thetop:%s,%d\n",m.num,m.s);NONO();}NONO(){/*本函數用于打開文件,輸入數據,調用函數,輸出數據,關閉文件。*/FILE*rf,*wf;STUa[N],m;inti;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++)fscanf(rf,"%s%d",a[i].num,&a[i].s);fun(a,&m);fprintf(wf,"Thetop:%s,%d\n",m.num,m.s);fclose(rf);fclose(wf);}標準答案:{inti,max=a[0].s,j=0;for(i=1;i知識點解析:(1)首先指定第一個成績?yōu)樽罡叻謹?。?)再使用一個for循環(huán)把所有的成績進行比較,找出最高的分數來。國家二級(C語言)機試模擬試卷第8套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中已建立一個帶有頭結點的單向鏈表,在main函數中將多次調用fun函數,每調用一次fun函數,輸出鏈表尾部結點中的數據,并釋放該結點,使鏈表縮短。請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結構!標準答案:(1)next(2)t->data(3)t知識點解析:fun函數的功能是輸出鏈表尾部結點中的數據,并釋放該結點,使鏈表縮短。由于鏈表是單向的,找到鏈表尾部結點需要利用循環(huán)從頭結點開始查找,直至找到最后一個,找到之后輸出尾部結點的數據,然后刪除尾結點。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.c中函數fun的功能是;由形參給定n個實數,輸出平均值,并統(tǒng)計在平均值以上(含平均值)的實數個數。例如,n=8時,輸入:193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763所得平均值為:195.838745,在平均值以上的實數個數應為:5請改正程序中的錯誤,使程序能輸出正確的結果。注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構!標準答案:(1)intj-c=0;doublexa=0.0;(2)if(x[j]>=xa)知識點解析:本題中函數的功能是輸出平均值,并統(tǒng)計在平均值以上(含平均值)的實數個數。本題中的函數實現(xiàn)過程首先求解平均值,然后將所有值與平均值進行比較,統(tǒng)計高于平均值的實數個數。三、程序設計題(本題共1題,每題1.0分,共1分。)3、請編寫函數fun,其功能是:計算并輸出給定數組(長度為9)中每相鄰兩個元素之平均值的平方根之和。例如,給定數組中的9個元素依次為12.0、34.0、4.0、23.0、34.0、45.0、18.0、3.0、11.0,輸出應為:s=35.951014。注意:部分源程序在文件PROGl.C中。請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。標準答案:知識點解析:該程序功能是計算并輸出給定數組(長度為9)中每相鄰兩個元素之平均值的平方根之和。在循環(huán)中,首先確定相鄰元素之間的關系,然后對其進行平均值平方根之和的操作。國家二級(C語

溫馨提示

  • 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

提交評論