2025年全國計算機等級考試二級c語言上機題庫(共55套)_第1頁
2025年全國計算機等級考試二級c語言上機題庫(共55套)_第2頁
2025年全國計算機等級考試二級c語言上機題庫(共55套)_第3頁
2025年全國計算機等級考試二級c語言上機題庫(共55套)_第4頁
2025年全國計算機等級考試二級c語言上機題庫(共55套)_第5頁
已閱讀5頁,還剩191頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

2025年全國計算機等級考試二級c語言上機精選題庫(共55套)第1套題填空題請補充main函數,該函數的功能是:計算每個學生科目的平均分,并把結果保存在數組bb中。例如,當score[N][M]={{78.5,84,83,65,63},{88,91.5,89,93,95},{72.5,65,56,75,77}}時,三個學生的平均分為:74.791.369.1。僅在橫線上填入所編寫的若干表達式或語句,勿改動函數中的其他任何內容。#include<stdio.h>#defineN3#defineM5main(){ inti,j; staticfloatscore[N][M]= { {78.5,84,83,65,63}, {88,91.5,89,93,95}, {72.5,65,56,75,77} }; floatbb[N]; for(i=0;i<N;i++) ___1___; for(i=0;i<N;i++) { for(j=0;j<M;j++) ___2___; bb[i]/=M; } for(i=0;i<N;i++) printf("\nstudent%d\taverage=%5.1f",i+1,bb[i]);}改錯題下列給定程序中,函數fun的功能是:根據整型行參m,計算如下公式的值。y=例如,若m=2000,則應該輸出:0.000160。請改正程序中的錯誤,使它能得出正確的結果。#include<conio.h>#include<stdio.h>/********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);}main(){ intn=2000; printf("\nTheresultis%lf\n",fun(n));}編程題請編寫函數fun,該函數的功能是:統計個年齡段的人數。N個年齡通過調用隨機函數獲得,并放在主函數的age數組中;要求函數把0至9歲年齡段的人數放在d[0]中,把10至19歲年齡段的人數放在d[1]中,把20至29歲年齡段的人數放在d[2]中,其余依此類推,把100歲(含100)以上年齡的人數都放在d[10]中。結果在主函數中輸出。請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。#include<stdio.h>#defineN50#defineM11voidfun(int*a,int*b){}doublernd(){ statict=29,c=217,m=1024,r=0; r=(r*t+c)%m; return((double)r/m);}main(){ intage[N],i,d[M]; FILE*out; for(i=0;i<N;i++) age[i]=(int)(115*rnd()); printf("Theoriginaldata:\n"); for(i=0;i<N;i++) printf((i+1)%10==0?"%4d\n":"%4d",age[i]); printf("\n\n"); fun(age,d); out=fopen("out.dat","w"); for(i=0;i<10;i++) { printf("%4d---%4d:%4d\n",i*10,i*10+9,d[i]); fprintf(out,"%4d---%4d:%4d\n",i*10,i*10+9,d[i]); } printf("Over100:%4d\n",d[10]); fprintf(out,"Over100:%4d\n",d[10]); fclose(out);}答案:一、1、bb[i]=0或*(bb+i)=02、bb[i]+=score[i][j]或bb[i]=b[i]+score[i][j]或bb[i]=score[i][j]+bb[i]二、1、fun(intm)應改為doublefun(intm)2、for(i=100,i<=m,i+=100)應改為for(i=100;i<=m;i+=100)三、voidfun(int*a,int*b){inti,j;for(j=0;j<M;j++)b[j]=0;for(i=0;i<N;i++)if(a[i]>=0&&a[i]<=9)b[0]+=1;elseif(a[i]>=10&&a[i]<=19)b[1]+=1;elseif(a[i>=20&&a[i]<=29)b[2]+=1;elseif(a[i]>=30&&a[i]<=39)b[3]+=1;elseif(a[i>=40&&a[i]<=49])b[4]+=1;elseif(a[i]>=50&&a[i]<=59)b[5]+=1;elseif(a[i]>=60&&a[i]<=69)b[6]+=1;elseif(a[i]>=70&&a[i]<=79)b[7]+=1;elseif(a[i]>=80&&a[i]<=89)b[8]+=1;elseif(a[i]>=90&&a[i]<=99)b[9]+=1;elseb[10]+=1;}第2套:填空題請補充main函數,該函數的功能是:從鍵盤輸入一組字符串,以’*’結束輸入,并顯示出這個字符串。例如,輸入abcdef*,結果顯示abcdef。僅在橫線上添入所編寫的若干表達式或語句,勿改動函數中的其他任何內容。#include<stdio.h>#defineN80main(){ inti=-1,j=0; charstr[N]; printf("\nInputastring\n"); do { i++; scanf(_1_); }while(_2_); printf("\n*******displaythestring*******\n"); while(j<i) { printf(_3_); j++; }}答案:(1)“%c”,&str[i](2)str[i]!=’*’(3)”%c”,str[j]改錯題:下列給定程序中,函數fun的功能是:計算并輸出high以內最大的10個素數之和。High由主函數傳給fun函數。若high的值為100,則函數的值為732。#include<conio.h>#include<stdio.h>#include<math.h>intfun(inthigh){ intsum=0,n=0,j,yes; while((high>=2)&&(n<10)) { yes=1; for(j=2;j<=high/2;j++) /********found********/ if(high%j==0) { yes=0; break } if(yes) { sum+=high; n++; } high--; } returnsum;}main(){ printf("%d\n",fun(100));}答案:break改為break;程序設計:請編寫函數fun,該函數的功能是:統計一行字符串中單詞的個數,作為函數值返回。一行字符串在主函數中輸入,規定所有單詞由小寫字母組成,單詞之間由若干個空格隔開,一行的開始和結束都沒有空格。#include<stdio.h>#include<string.h>#defineN80intfun(char*s){}main(){ charline[N]; intnum=0; FILE*out; char*test[]={"HelloWorld!","Thisisateststring.","ab","cdefg,sfl"}; printf("Enterastring:\n"); gets(line); num=fun(line); printf("Thenumberofwordis:%d\n\n",num); out=fopen("out.dat","w"); for(num=0;num<4;num++) printf(out,"%d\n",fun(test[num])); fclose(out); }第3套第一題:已知學生的記錄由學號和學習成績構成,N名學生的數據已存入a結構體中,給定程序的功能是找出成績最低的學生記錄,通過形參返回函數。請勿改動主函數main和其他函數中的任何內容,僅在fun函數的橫線上填入所編寫的若干表達式或語句。#include<stdio.h>#include<string.h>#defineN10typedefstructss{ charnum[10]; ints;}STU;fun(STUa[],STU*s){ stuh; inti; h=a[0]; for(i=1;i<N;i++) if(a[i].s<h.s) h=a[i]; *s=h;}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("Thelowest:%s,%d\n",m.num,m.s);}第二題:下列給定程序中,函數fun的功能是:將字符串p中的所有字符復制到字符串b中,要求每復制三個字符之后插入一個空格。例如,在調用fun函數之前給字符串a輸入ABCDEFGHIJK,調用函數之后,字符串之后,字符串b中的內容則為ABCDEFGHIJK。請改正程序中的錯誤,使它能得出正確的結果。注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構!#include<stdio.h>voidfun(char*p,char*b){ inti,k=0; while(*p) { /********found********/ i=0; /********found********/ while(i<3&&*p) { b[k]=*p; k++; p++; i++; } /********found********/ if(*p) 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");}第三題:請編寫一個函數fun,它的功能是:計算并輸出給定整數n的所有因子(不包括1與自身)之和。規定n的值不大于1000。例如,若主函數從鍵盤給n輸入的值為856,則輸出為sum=763。請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。#include<stdio.h>intfun(intn){}main(){ intn,sum; FILE*out; printf("Inputn:"); scanf("%d",&n); sum=fun(n); printf("sum=%d\n",sum); out=fopen("out.dat","w"); fprintf(out,"%d\n",fun(123)); fprintf(out,"%d\n",fun(456)); fprintf(out,"%d\n",fun(789)); fprintf(out,"%d\n",fun(147)); fprintf(out,"%d",fun(258)); fclose(out);}intfun(intn) { ints=0,i; for(i=2;i<=n-1;i++) if(n%i==0) s+=i; returns; } 第4套填空題請補充main函數,該函數的功能是:把字符串str1中的非空格字符拷貝到字符串str2中.例如,若str1=”nicetomeetyou!”,則str2=”nicetomeetyou!”僅在橫線上填入所編寫的若干表達式或語句,勿改動函數中的其他任何內容.#include<stdio.h>#defineN80main(){ staticcharstr1[N]="nicetomeetyou!"; charstr2[N]; inti=0,j=0; printf("\n******str1******\n"); puts(str1); while(str1[i]) { if(___1___) str2[j++]=str1[i]; ___2___; } printf("\n******str2******\n"); for(i=0;i<j;i++) printf("%c",str2[i]);}改錯題下列給定程序中,函數fun的功能是:將大寫字母轉換為對應小寫字母之后的第五個字母;若小寫字母為v~z,使小寫字母的值減21.轉換后的小寫字母作為函數值返回.例如,若形參是字母A,則轉換字母為小寫字母f;若形參是字母W,則轉換為小寫字母b.請改正函數fun中的錯誤,使它能得出正確的結果。注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構!#include<stdio.h>#include<ctype.h>charfun(charc){ /********found********/ if(c>='A'&&c<='Z') c=c-32; /********found********/ if(c>='a'&&c<='u') c=c-5; elseif(c>='v'&&c<='z') c=c-21; returnc;}main(){ charc1,c2; printf("\nEnteraletter(A-Z):"); c1=getchar(); if(isupper(c1)) { c2=fun(c1); printf("\n\nTheletter%cchangeto%c\n",c1,c2); } else { printf("\nEnter(A-Z)!\n"); }}編程題請編寫函數fun,其功能是:將s所指字符串中ASCII值為奇數的字符刪除,串中剩余字符形成一個新串放在t所指的數組中。例如,若s所指字符串中的內容為ABCDEFG12345,其中字符A的ASCII碼值為奇數、……、字符1的ASCII碼值也為奇數、……都應當刪除,其他依次類推。最后t所指的叔祖中的內容應是BDF24。請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。#include<conio.h>#include<stdio.h>#include<string.h>voidfun(char*s,chart[]){}main(){ chars[100],t[100],Msg[]="PleaseenterstringS:"; FILE*out; printf(Msg); scanf("%s",s); fun(s,t); printf("\nTheresultis:%s\n",t); out=fopen("out.dat","w"); fun(Msg,t); fprintf(out,"%s",t); fclose(out);}答案:第一題:第1處填空str1[i]!=’’或’’!=str1[i]第2處填空i++或++i或i+=1或i=i+1第二題:第1處:c=c-32;應改為c=c+32;第2處:c=c-5;應改為c=c+5;第三題:voidfun(char*s,chart[]){intI,j=0,n;n=strlen(s);for(i=0;i<n;i++)if(s[i]%2==0){t[j]=s[i];j++;}t[j]=’\0’}第5套填空題請補充main函數,該函數的功能是:輸出一個N*N矩陣,要求非周邊元素賦值0,周邊元素賦值1。僅在橫線上填入所編寫的若干表達式或語句,勿改動函數中的其他內容。#include<stdio.h>#defineN10main(){ intbb[N][N]; inti,j,n; printf("\nInputn:\n"); scanf("%d",&n); for(i=0;i<n;i++) for(j=0;j<n;j++) { if(i==0||i==n-1||j==0||j==n-1) ___1___; else ___2___; } printf("\n*****theresult*******\n"); for(i=0;i<n;i++) { printf("\n\n"); for(j=0;j<n;j++) printf("%4d",bb[i][j]); }}改錯題下列給定程序中函數fun的功能是:從低位開始取出長整型變量s中奇數位上的數,依次構成一個新數放在t中,例如,當s中的數為7654321時,t中的數為7531。請改正程序中的錯誤,使它能得出正確的結果。注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構!#include<conio.h>#include<stdio.h>/********found********/voidfun(longs,longt){ longs1=10; *t=s%10; while(s>0) { s=s/100; *t=s%10*s1+*t; /********found********/ s1=s1*100; }}main(){ longs,t; printf("\nPleaseenters:"); scanf("%ld",&s); fun(s,&t); printf("Theresultis:%ld\n",t);}編程題請編寫函數fun,其功能是:將兩個兩位數的正整數a、b合并形成一個整數放在c中。合并的方式是:將a數的十位和個位數依次放在c數的百位和個位上,b數的十位和個位數依次放在c數的十位和千位上。例如,當a=45,b=12,調用該函數后,c=2415。請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。#include<conio.h>#include<stdio.h>voidfun(inta,intb,long*c){}main(){ inta,b; longc; FILE*out; printf("Inputa,b;"); scanf("%d%d",&a,&b); fun(a,b,&c); printf("Theresultis:%ld\n",c); out=fopen("out.dat","w"); for(a=20;a<50;a+=3) { fun(a,109-a,&c); fprintf(out,"%ld\n",c); } fclose(out);}答案第一題(填空題)第1處填空:bb[i][j]=1第2處填空:bb[i][j]=0第二題(改錯題)第1處:voidfun(longs,longt)應改為voidfun(longs,long*t)第2處:s1=s1*100;應改為s1=s1*10;第三題(編程題)voidfun(inta,intb,long*c){*c=(b%10)1000+(a/10)*100+(b/10)*10+a%10;}第6套填空題給定程序的功能是計算并輸出下列級數的前N項之和,直到大于Q為止,Q的值通過形參傳入。例如,若Q的值為50.0,則函數值為50.416687。請勿改動主函數main和其他函數中的任何內容,僅在fun函數的橫線上填入所編寫的若干表達式或語句。試題程序:#include<stdio.h>doublefun(doubleq){ intn; doubles; n=2; s=2.0; while(s___1___q) { s=s+(double)(n+1)/n; ___2___; } printf("n=%d\n",n); ___3___;}main(){ printf("%f\n",fun(50));}第1處填空:<=第2處填空:n++或n+=1或n=n+1第3處填空:returns或return(s)改錯題下列給定程序中,函數fun的功能是:根據整型參m的值,計算如下公式的值。例如,若m中的值為5,則應輸出:0.536389請改正程序中的錯誤,使程序能得出正確的結果。注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構!試題程序:#include<conio.h>#include<stdio.h>doublefun(intm){ doubley=1.0; inti; /********found********/ for(i=2;i<m;i++) /********found********/ y-=1/(i*i); return(y);}main(){ intn=5; printf("\nTheresultis%1f\n",fun(n));}第1處:for(i=2;i<m;i++)應改為for(i=2;i<=m;j++)第2處:y-=1/(i*i);應改為y-=1.0/(i*i)編程題請編寫一個函數voidfun(chara[],charb[],intn),其功能是:刪除一個字符串中指定下標的字符。其中,a指向原字符串,刪除后的字符串存放在b所指的數組中,n中存放指定的下標。 例如,輸入一個字符串World,然后輸入3,則調用該函數后的結果為Word。 注意:部分源程序給出如下。 請勿改動主函數main和其他函數中的任何內容,僅在函數

fun的花括號中填入所編寫的若干語句。 試題程序:#include<stdio.h>#include<conio.h>#defineLEN20voidfun(chara[],charb[],intn){ }main(){ charstr1[LEN],str2[LEN]; intn; FILE*out; printf("Enterthestring:\n"); gets(str1); printf("Enterthepositionofthestringdeleted:"); scanf("%d",&n); fun(str1,str2,n); printf("Thenewstringis:%s\n",str2); fun("HelloWorld!",str2,9); out=fopen("out.dat","w"); fprintf(out,"%s",str2); fclose(out); }答案是:voidfun(chara[],charb[],intn){intI,j=0;for(i=0;i<LEN;i++)if(i!=n){b[j]=a[i];j++;}b[j]=’\0’;}第7套填空題函數fun的功能是:統計長整數n的各個位上出現數字1,2,3的次數,并通過外部(全局)變量c1,c2,c3返回主函數。例如,當=123114350時,結果應該為:c1=3,c2=1,c3=2.注意:部分源程序給出如下。請勿改動主函數main和其他函數中的任何內容,僅在fun函數的橫線上填入所編寫的若干表達式或語句。試題程序如下:#include<stdio.h>intc1,c2,c3;voidfun(longn){ c1=c2=c3=0; while(n) { switch(___1___) { case1: c1++; ___2___; case2: c2++; ___3___; case3: c3++; } n/=10; }}main(){ longn=123114350L; fun(n); printf("\nTheresult:\n"); printf("n=%ldc1=%dc2=%dc3=%d\n",n,c1,c2,c3);}第1處填空:n%10第2處填空:break第3處填空:break改錯題下列給定程序中函數fun的功能是:用選擇法對數組中的n個元素按從小到大的順序進行排序。請改正程序中的錯誤,使程序能得出正確的結果。注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdio.h>#defineN20voidfun(inta[],intn){ inti,j,t,p; for(j=0;j<n-1;j++) { /********found********/ p=j for(i=j;i<n;i++) if(a[i]<a[p]) { /********found********/ p=i; t=a[p]; a[p]=a[i]; a[i]=t; } }}main(){ inta[N]={9,6,8,3,-1},i,m=5; printf("??Dò?°£o"); for(i=0;i<m;i++) printf("%d,",a[i]); printf("\n"); fun(a,m); printf("??Dòoó£o"); for(i=0;i<m;i++) printf("%d,",a[i]); printf("\n");}第1處:p=j應改為p=j;第2處:p=i應改為p=j;編程題請編寫一個函數intfun(int*s,intt,int*k),用來求出數組的最大元素在數組中的下標并存放在k所指的存儲單位中。例如,輸入如下整數:675896101301401980431451777則輸出結果為:6,980。注意:部分源程序給出如下。請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>voidfun(int*s,intt,int*k){ }main(){ inta[10]={876,675,896,101,301,401,980,431,451,777},k; FILE*out; fun(a,10,&k); printf("%d,%d\n",k,a[k]); out=fopen("out.dat","w"); fprintf(out,"%d\n%d",k,a[k]); fclose(out); }答案是:voidfun(int*s,intt,int*k){intI,max;max=s[0];for(i=0;i<t:i++)if(s[i]>max){max=s[i];*k=I;}}第8套填空題請補充main函數,該函數的功能是:從鍵盤輸入一組整數,使用條件表達式找出最大的整數。當輸入的整數為0時結束。例如,輸入123540時,最大的數為5。請勿改動主函數main和其他函數中的任何內容,僅在fun函數的橫線上填入所編寫的若干表達式或語句。試題程序:#include<stdio.h>#include<conio.h>#defineN100main(){ intnum[N]; inti=-1; intmax=0; printf("\nInputintegernumber:\n"); do { i++; printf("num[%d]=",i); scanf("%d",___1___); max=___2___num[i]:max; }while(___3___); printf("max=%d\n",max);}第1處填空:&num[i]或num+i第2處填空:max<num[i]?或num[i]>max?第3處填空:num[i]!=0或0!=num[i]改錯題下列給定程序中,函數fun的功能是:在字符串str中找出ASCII碼值最大的字符,將其放在第一個位置上;并將該字符前的原字符向后順序移動。例如,調用fun函數之前給字符串輸入:ABCDeFGH,調用后字符串中的內容為eABCDFGH請改正程序中的錯誤,使程序能得出正確的結果。注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdio.h>/********found********/voidfun(char*p);{ charmax,*q; inti=0; max=p[i]; while(p[i]!=0) { if(max<p[i]) { /********found********/ max=p[i]; p=q+i; } i++; } while(q>p) { *q=*(q-1); q--; } p[0]=max;}main(){ charstr[80]; printf("Enterastring:"); gets(str); printf("\nTheoriginalstring:"); puts(str); fun(str); printf("\nThestringaftermoving:"); puts(str); printf("\n\n");}第1處:voidfun(char*p);應改為voidfun(char*p)第2處:p=q+I;應改為q=p+i;編程題編寫函數fun,函數功能是:根據以下公式計算s,計算結果作為函數值返回;n通過型參傳入。S=1+例如:若n的值為11時,函數的值為1.833333。注意:部分源程序給出如下。請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>#include<string.h>floatfun(intn){ }main(){ intn; floats; FILE*out; printf("\nPleaseenterN:"); scanf("%d",&n); s=fun(n); printf("Theresultis:%f\n",s); s=fun(28); out=fopen("out.dat","w"); fprintf(out,"%f",s); fclose(out); }答案是:floatfun(intn){inti;floats=1.0,t=1.0;for(i=2;i<=n;i++){t=t+i;s=s+1/t;}returns;}第9套填空題給定程序的功能是分別統計字符串中大寫字母和小寫字母的個數。例如,給字符串SS輸入:AaaaBBb123CCccccd,則輸出結果應為:upper=5,lower=9。請勿改動主函數main和其他函數中的任何內容,僅在fun函數的橫線上填入所編寫的若干表達式或語句。試題程序:#include<stdio.h>voidfun(char*s,int*a,int*b){ while(*s) { if(*s>='A'&&*s<='Z') ___1___; if(*s>='a'&&*s<='z') ___2___; s++; }}main(){ chars[100]; intupper=0,lower=0; printf("\nPleaseastring:"); gets(s); fun(s,&upper,&lower); printf("\nupper=%dlower=%d\n",___3___);}第1處填空:(*a)++或++(*a)或*a=*a+1或*a+=1第2處填空:(*b)++或++(*b)或*b=*b+1或*b+=1第3處填空:upper,lower改錯題下列給定程序中,函數fun的功能是:從n個學生的成績中統計出低于平均分的學生人數,此人數由函數值返回,平均分存放在行參aver所指的存儲單元中。例如,若輸入8名學生的成績: 80.5607290.59851.58864 則低于平均分的學生人數為4(平均分為:75.5625). 請改正程序中的錯誤,使程序能統計出正確的結果。 注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構! 試題程序:#include<conio.h>#include<stdio.h>#defineN20intfun(float*s,intn,float*aver){ floatave,t=0.0; intcount=0,k,i; /********found********/ for(k=0;k<n;k++) t=s[k]; ave=t/n; for(i=0;i<n;i++) if(s[i]<ave) count++; /********found********/ *aver=&ave; returncount;}main(){ floats[30],aver; intm,i; printf("\nPleaseenterm:"); scanf("%d",&m); printf("\nPleaseenter%dmark:\n",m); for(i=0;i<m;i++) scanf("%f",s+i); printf("\nThenumberofstudents:%d\n",fun(s,m,&aver)); printf("Ave=%f\n",aver);}第1處:t=s[k];應改為t+=s[k];第2處:*aver=&ave;應改為*aver=ave;編程題編寫函數fun,它的功能是:根據以下公式求p的值,結果由函數值帶回。M與n為兩個正整數且要求m>n。P=例如:m=12,n=8時,運行結果為495.000000注意:部分源程序給出如下。請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>floatfun(intm,intn){}main(){ FILE*out; printf("P=%f\n",fun(12,8)); out=fopen("out.dat","w"); fprintf(out,"%f",fun(12,6)); fclose(out); }答案是:floatfun(intm,intn){floatp,t=1.0;inti;for(i=1;i<=m;i++)t=t*i;p=t;for(t=1.0,i=1;i<=n;i++)t=t*i;p=p/t;for(t=1.0,i=1;i<=m-n;i++)t=t*i;p=p/t;returnp;}第10套填空題請補充main函數,該函數的功能是:從鍵盤鍵盤輸入3個整數然后找出最大的數并輸出。 例如,輸入:124543,輸出為45 注意:部分源程序給出如下。 僅在橫線上填入所編寫的若干表達式或語句,勿改動函數中的其他任何內容。 試題程序:#include<stdio.h>#include<conio.h>main(){ inta,b,c,max; printf("\nInputthreenumbers:\n"); scanf("%d,%d,%d",&a,&b,&c); printf("Thethreenumbersare:%d,%d,%d\n",a,b,c); if(a>b) ___1___; else ___2___; if(max<c) ___3___; printf("max=%d\n",max);}第1處填空:max=a第2處填空:max=b第3處填空:max=c改錯題下列給定程序中,函數fun的功能是:將s所指字符串出現的t1所指子串全部替換成t2所指子字符串,錯形成的新串放在w所指的數組中。在此處,要求t1和t2所指字符串的長度相同。例如,當s所指字符串的內容為abcdabfab,t1所指子串中的內容為ab,t2所指子串中的內容為99時,結果,在w所指的數組中的內容為99cd99f99。請改正程序中的錯誤,使程序能得出正確的結果。注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構!試題程序:#include<conio.h>#include<stdio.h>#include<string.h>/********found********/voidfun(char*s,*t1,*t2,*w){ inti; char*p,*r,*a; strcpy(w,s); while(*w) { p=w; r=t1; /********found********/ while(r) if(*r==*p) { r++; p++; } else { break; } if(*r=='\0') { a=w; r=t2; while(*r) { *a=*r; a++; r++; } w+=strlen(t2); } else { w++; } }}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); } else { printf("Error:strlen(t1)!=strlen(t2)\n"); }}第1處:voidfun(char*s,*t1,*t2,*w)應改為voidfun(char*s,char*t1,char*t2,char*w)第2處:while(r)應改為while(*r)編程題編寫函數fun,它的功能是:利用以下所示的簡單迭代方法求方程式cos(x)-x=0的一個實根。=cos()迭代步驟如下:(1)取x1初值為0.0;(2)x0=x1,把x1的值賦給x0;(3)x1=cos(x0),求出一個新的x1;(4)若x0-x1,的絕對值小于0.000001,則執行步驟(5),否則執行步驟(2);(5)所求x1就是方程cos(x)-x=0的一個實根,作為函數值返回。程序將輸出結果Root=0.739085。注意:部分源程序給出如下。請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。試題程序:#include<conio.h>#include<math.h>#include<stdio.h>floatfun(){ }main(){ FILE*out; floatf=fun(); printf("Root=%f\n",f); out=fopen("out.dat","w"); fprintf(out,"%f",f); fclose(out);}答案是:floatfun(){floatx1=0.0,x0;do{x0=x1;x1=cos(x0);}while(fabs(x0-x1)>=le-6);returnx1;}第11套填空題給定程序中,涵數fun的功能是:把形參s所指字符串中下標為奇數的字符右移到下一個奇數位置,最右邊被移出字符串的字符串的字符繞回放到第一個奇數位置,下標為偶數的字符不動(注:字符串的長度大于等于2)例如,形參s所指的字符串為:abcdefgh,執行結果為:ahcbedgf. 注意:部分源程序給出如下。 僅在橫線上填入所編寫的若干表達式或語句,勿改動函數中的其他任何內容。 試題程序:#include<stdio.h>voidfun(char*s){ inti,n,k; charc; n=0; for(i=0;s[i]!='\0';i++) n++; if(n%2==0) k=n-___1___; else k=n-2; c=___2___; for(i=k-2;i>=1;i=i-2) s[i+2]=s[i]; s[1]=___3___;}main(){ chars[80]="abcdefgh"; printf("\nTheoriginalstringis:%s\n",s); fun(s); printf("\nTheresultis:%s\n",s);}第1處填空:1第2處填空:s[k]或*(s+k)第3處填空:c改錯題下列給定程序中,函數FUN的功能是:將一個由八進制數字字符組成的字符串轉換為與其面值相等的十進制整數。規定輸入的字符串最多只能包含5位8進制數字。例如,若輸入77777,則輸出將是32767。請改正程序中的錯誤,使它能得出正確結果。注意:不要改動MAIN函數,不得增行或刪行,也不要更改程序的結構!試題程序:#include<stdio.h>#include<stdlib.h>#include<string.h>intfun(char*p){ intn; /********found********/ n=*p-'o'; p++; /********found********/ while(*p!=0) { n=n*7+*p-'o'; p++; } returnn;}main(){ chars[6]; inti; intn; printf("Enterastring(octaldigits):"); gets(s); if(strlen(s)>5) { printf("Error:stringtoolonger!\n\n"); exit(0); } for(i=0;s[i];i++) if(s[i]<'0'||s[i]>'7') { printf("Error:%cnotisoctaldigits!\n\n",s[i]); exit(0); } printf("Theoriginalstring:"); puts(s); n=fun(s); printf("\n%sisconveredtointegenumber:%d\n\n",s,n);}第1處:n=*p-‘o’;應改為n=*p-‘0’;第2處:n=n*7+*p-‘o’;應改為n=n*8+*p-‘0’;編程題下列程序定義了N×N的而維數組,并在主函數中自動賦值。請編寫函數fun(inta[][N]),該函數的功能是:使數組左下半三角元素的值會全部置成0。例如:a數組中的值為a=,則返回主程序后a數組中的值應為。注意:部分源程序給出如下。請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。試題程序:#include<stdio.h>#include<conio.h>#include<stdlib.h>#defineN5voidfun(inta[][N]){ }main(){ inta[N][N],i,j; FILE*out; printf("*****Thearray*****\n"); for(i=0;i<N;i++) { for(j=0;j<N;j++) { a[i][j]=rand()%10; printf("%4d",a[i][j]); } printf("\n"); } fun(a); printf("THERESULT\n"); for(i=0;i<N;i++) { for(j=0;j<N;j++) printf("%4d",a[i][j]); printf("\n"); } for(i=0;i<N;i++) for(j=0;j<N;j++) a[i][j]=i*N+j+1; fun(a); out=fopen("out.dat","w"); for(i=0;i<N;i++) { for(j=0;j<N;j++) fprintf(out,"%4d",a[i][j]); fprintf(out,"\n"); } fclose(out);}答案是:intfun(inta[][N]){inti,j;for(i=0;i<N;i++)for(j=0;j<=I;j++)a[i][j]=0;}第12套填空題請補充fun函數,該函數的功能是字符串tt中的大寫字母都改為對應的小寫字母,其它字符不變.例如,若輸入"AreyoucomefromSichuan?則輸出","areyoucomefromsichuan?" 注意:部分源程序給出如下。 僅在橫線上填入所編寫的若干表達式或語句,勿改動函數中的其他任何內容。 試題程序:#include<stdio.h>#include<string.h>#include<conio.h>char*fun(chartt[]){ inti; for(i=0;tt[i];i++) { if((tt[i]>='A')&&(___1___)) tt[i]+=___2___; } return(___3___);}main(){ chartt[81]; printf("\nPleaseenterastring:"); gets(tt); printf("\nTheresultstringis:\n%s",fun(tt));}第1處填空:tt[i]<=’z’或’z’>=tt[i]第2處填空:32或’a’-‘A’第3處填空:tt改錯題下列給定程序中函數FUN的功能是:求出在字符串中最后一次出現的子符串的地址,通過函數值返回,在主函數中輸出從此開始的字符串;若未找到,則函數值為NULL。例如,當字符串中的內容為abcdabfabcdx,t中的內容為ab時,輸出結果應是:abcdx。當字符串中的內容為abcdabfabcdx,t中的內容為abd時,則程序輸出未找到信息:notbefound!。請改正程序中的錯誤,使它能得出正確結果。注意:不要改動MAIN函數,不得增行或刪行,也不要更改程序的結構!試題程序:#include<conio.h>#include<stdio.h>#include<string.h>char*fun(char*s,char*t){ char*p,*r,*a; /********found********/ a=NuLL; while(*s) { p=s; r=t; while(*r) /********found********/ if(r==p) { r++; p++; } else { break; } if(*r=='\0') a=s; s++; } returna;}main(){ chars[100],t[100],*p; printf("\npleaseenterstrings:"); scanf("%s",s); printf("\npleaseentersubstringt:"); scanf("%s",t); p=fun(s,t); if(p) printf("\ntheresultis:%s\n",p); else printf("\nnotfound!\n");}第1處:a=NULL;應改為a=NULL;第2處:if(r==p)應改為if(*r==*p)編程題下列程序定義了N×N的而維數組,并在主函數中自動賦值。請編寫函數fun,函數的功能是:求出數組周邊元素的平均值并作為函數值返回給主函數中的s則返回主程序后s的值應為3.375.注意:部分源程序給出如下。請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。試題程序:#include<stdio.h>#include<conio.h>#include<stdlib.h>#defineN5doublefun(intw[][N]){ }main(){ inta[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,1,4,1}; inti,j; FILE*out; doubles; printf("*****Thearray*****\n"); for(i=0;i<N;i++) { for(j=0;j<N;j++) { printf("%4d",a[i][j]); } printf("\n"); } s=fun(a); printf("*****THERESULT*****\n"); printf("Thesumis%lf\n",s); out=fopen("out.dat","w"); fprintf(out,"%lf",s); fclose(out); }答案是:doublefun(intw[][N]){inti,j,k=0;doubles=0.0;for(j=0;j<N;j++){s+=w[0][j];k++;}for(j=0;j<N;j++){s+=w[N-1][j];k++;}for(i=1;i<=N-2;i++){s+=w[i][0];k++;}for(i=1;i<=N-2;i++){s+=w[i][N-1];k+;}rturns/=k;}第13套填空題請補充fun函數,該函數的功能是判斷一個數是否為素數.該數是素數時,函數返回字符串:yes!,否則函數返回字符串:no!,并在主函數中輸出. 注意:部分源程序給出如下。 僅在橫線上填入所編寫的若干表達式或語句,勿改動函數中的其他任何內容。 試題程序:#include<conio.h>#include<stdio.h>___1___{ inti,m; m=1; for(i=___2___;i<n;i++) if(___3___) { m=0; break; } if(m==1&&n>1) return("yes!"); else return("no!");}main(){ intk=0; printf("Input:"); scanf("%d",&k); printf("%s\n",fun(k));}第1處填空:char*fun(intn)第2處填空:2第3處填空:n%i==或!(n%i)或0==n%i改錯題下列給定程序中,FUN函數的功能是:根據形參M,計算如下公式的值。

T=1+例如,若輸入5,則應輸出2.283333.請改正程序中的錯誤或在橫線處填上適當的內容并把橫線刪除,使它能計算出正確的結果。注意:不要改動MAIN函數,不得增行或刪行,也不要更改程序的結構!試題程序:#include<conio.h>#include<stdio.h>doublefun(intm){ doublet=1.0; inti; /********found********/ for(i=2;i<=m;i++) t+=1.0/k; /********found********/ ___ì???___}main(){ intm; printf("\npleaseenter1integernumbers:\n"); scanf("%d",&m); printf("\n\ntheresultis%lf\n",fun(m));}第1處:t+=1.0/k;應改為t+=1.0/i;第2處:應填returnt;編程題請編寫一個函數voidfun(inttt[M][N]),tt提向一個M行N列的二維數組,求出二維數組每列中最小元素,并依次放入pp所指的一維數組中。二維數組中的數已在主函數中賦予。注意:部分源程序給出如下。請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>#defineM3#defineN4voidfun(inttt[M][N],intpp[N]){ }main(){ intt[M][N]={{22,45,56,30}, {19,33,45,38}, {20,22,66,40}}; intp[N],i,j,k; FILE*out; printf("Theoriginaldatais:\n"); for(i=0;i<M;i++){ for(j=0;j<N;j++) printf("%6d",t[i][j]); printf("\n"); } fun(t,p); printf("\nTheresultis:\n"); for(k=0;k<N;k++) printf("%4d",p[k]); printf("\n"); out=fopen("out.dat","w"); for(k=0;k<N;k++) fprintf(out,"%d\n",p[k]); fclose(out); }答案是:vidfun(inttt[M][N],intpp[N]){inti,j,min;for(j=0;j<N;j++){min=tt[0][j];for(i=0;i<M;i++){if(tt[i][j]<min)min=tt[i][j];}pp[j]=min;}}第14套填空題請補充fun函數,該函數的功能是:依次取出字符串中所有小寫字母,形成新的字符串,并取代原字符串. 注意:部分源程序給出如下。 僅在橫線上填入所編寫的若干表達式或語句,勿改動函數中的其他任何內容。 試題程序:#include<stdio.h>#include<conio.h>voidfun(char*s){ inti=0; char*p=s; while(___1___) { if(*p>='a'&&*p<='z') { s[i]=*p; ___2___; } p++; } s[i]=___3___;}main(){ charstr[80]; printf("\nEnterastring:"); gets(str); printf("\n\nThestringis:%s\n",str); fun(str); printf("\n\nThestringofchangingis:%s\n",str);}第1處填空:*p或*p!=’\0’或*p!=0第2處填空:i++或++i或i+=1或i=i+1第3處填空:’\0’或0改錯題下列給定程序中,函數FUN和FUNX的功能是:用二分求方程2的一個根,并要求絕對誤差不超過0.001。例如,若出給m輸入100,給n輸入90,則函數求得的一個根值為2.000。請改正程序中的錯誤,使它能得出正確結果。注意:不要改動MAIN函數,不得增行或刪行,也不要更改程序的結構!試題程序:#include<stdio.h>#include<math.h>doublefunx(doublex){ return(2*x*x*x-4*x*x+3*x-6);}doublefun(doublem,doublen){ /********found********/ intr; r=(m+n)/2; /********found********/ while(fabs(n-m)<0.001) { if(funx(r)*funx(n)<0) m=r; else n=r; r=(m+n)/2; } returnr;}main(){ doublem,n,root; printf("Entermn:\n"); scanf("%lf%lf",&m,&n); root=fun(m,n); printf("root=%6.3f\n",root);}第1處:intr;應改為doubler;第2處:while(fabs(n-m)<0.001)應改為while(fabs(n-m)>0.001)編程題請編寫fun函數,函數的功能是求出二維數組周邊的元素之和,作為函數值返回,二維數例如:若二維數組中的值為:13579299946999813570則函數為61。注意:部分源程序給出如下。請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>#defineM4#defineN5intfun(inta[M][N]){ }main(){ intaa[M][N]={{1,3,5,7,9}, {2,9,9,9,4}, {6,9,9,9,8}, {1,3,5,7,0}}; inti,j,y; FILE*out; printf("Theoriginaldatais:\n"); for(i=0;i<M;i++) { for(j=0;j<N;j++) printf("%6d",aa[i][j]); printf("\n"); } y=fun(aa); printf("\nThesum:%d\n",y); printf("\n"); out=fopen("out.dat","w"); fprintf(out,"%d",y); fclose(out); }答案是:intfun(inta[M][N]){inti,j,s=0;for(j=0;j<N;j++){s+=a[0][j];s+=a[M-1][j];}for(i=1;i<=M-2;i++){s+=a[i][0];s+=a[i][N-i];}returns;}第15套填空題給定程序的功能是判斷字符ch是否與串str中的某個字符相同;若相同,什么也不做,若不同,則插在串的最后。注意:部分源程序給出如下請勿改動主函數main和其他函數中的任何內容,僅在橫線上填如所編寫的若干表達式或語句。試題程序:#include<stdio.h>#include<string.h>Voidfun(char*str,charch){while(*str&&*str!=ch)str++;If(*ste_1_ch){str[0]=ch;_2_=0;}}Main(){chars[81],c;Printf(“\npleaseenterastring:\n”);gets(s);Printf(“\npleaseenterthecharactertosearch:”);C=getchar();Fun(_3_);Printf(“\nTheresultis%s\n”,s);}第1處填空:!=第2處填空:str[1]或*(str+1)第3處填空:s,c改錯題下列給定程序中,函數FUN的功能是:判斷字符CH是否與STR所指串

溫馨提示

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

評論

0/150

提交評論