已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
此文檔收集于網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系網(wǎng)站刪除二級C上機(jī)模擬試題(全套)模擬試題(一)1.填空題請補(bǔ)充函數(shù)fun(),該函數(shù)的功能是:把從主函數(shù)中輸入的字符串str2接在字符串str1的后面。例如:str1=“How do”,str2=“ you do?”,結(jié)果輸出:How do you do?注意:部分源程序給出如下。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的橫線上填入所編寫的若干表達(dá)式或語句。試題程序:#include#include#define N 40void fun(char *str1,char *str2) int i=0; char *p1=str1; char *p2=str2; while(【1】)i+; for( ;【2】;i+)*(p1+i)=【3】; *(p1+i)=0;main() char str1N,str2N; clrscr(); printf(*Input the string str1 & str2*n); printf( nstr1:); gets(str1); printf( nstr2:); gets(str2); printf(*The string str1 & str2*n); puts(str1); puts(str2); fun(str1,str2); printf(*The new string *n); puts(str1);答案及評析:【1】*(p1+i)【2】*p2【3】*p2+【解析】填空1:變量i用來記錄字符串str1的長度,當(dāng)指針指到字符串str1結(jié)束標(biāo)志符0時(shí),while循環(huán)結(jié)束,變量i停止累加。填空2:指針p2指向字符串str2,通過for循環(huán)將字符串str2接在str1后面,循環(huán)結(jié)束的條件是指針p2所指的字符是字符串結(jié)束標(biāo)志符0。填空3:指針p2最初指向字符串str2的首字符,通過自加1,使指針p2依次向后移動(dòng),指向str2的各個(gè)字符,實(shí)現(xiàn)將字符串str2接在str1后面的功能。2. 改錯(cuò)題下列給定程序中,函數(shù)fun()的作用是:將字符串tt中的小寫字母都改為對應(yīng)的大寫字母,其他字符不變。例如,若輸入edS,dAd,則輸出EDS,DAD。請改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include #include #include /*found*/char fun(char tt) int i; for(i=0;tti;i+) /*found*/ if(tti=A)&(tti=A)&(tti=a)&(tti= z)【解析】錯(cuò)誤1:函數(shù)的返回值是字符串的首地址,是指針類型,所以在函數(shù)名前要加*號。錯(cuò)誤2:題目要求將小寫字母改為大寫字母,所以if語句的判斷條件是小寫字母。3. 編程題請編寫函數(shù)fun(),該函數(shù)的功能是:移動(dòng)一維數(shù)組中的內(nèi)容,若數(shù)組中有n個(gè)整數(shù),要求把下標(biāo)從p到n-1(pn-1)的數(shù)組元素平移到數(shù)組的前面。例如,一維數(shù)組中的原始內(nèi)容為1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,p的值為6。移動(dòng)后,一維數(shù)組中的內(nèi)容應(yīng)為7,8,9,10,10,11,12,13,14,15,1,2,3,4,5,6。注意:部分源程序給出如下。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。試題程序:#include #define N 80void fun(int *w, int p, int n)main() int aN=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15; int i, p, n=15; printf(The original data:n); for(i=0;in;i+) printf(%3d,ai); printf(nnEnter p: ); scanf(%d,&p); fun(a,p,n); printf(nThe data after moving:n); for(i=0;in;i+) printf(%3d,ai); printf(nn);答案及評析:void fun(int *w, int p, int n) int i,j,t; for(i=p;i=0;j-) /*實(shí)現(xiàn)循環(huán)右移*/ wj+1=wj; w0=t; 【解析】本題采用循環(huán)右移的算法。和我們在前面分析的稍有不同的是,一個(gè)是整型數(shù)組,一個(gè)是字符型數(shù)組。模擬試題(二)1.填空題請補(bǔ)充函數(shù)fun(),該函數(shù)的功能是求一維數(shù)組xN的平均值,并對所得結(jié)果進(jìn)行四舍五入(保留兩位小數(shù))。例如:當(dāng)x10=15.6,19.9,16.7,15.2,18.3,12.1,15.5,11.0,10.0,16.0,結(jié)果為:avg=15.030000。注意:部分源程序給出如下。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的橫線上填入所編寫的若干表達(dá)式或語句。試題程序:#include#includedouble fun(double x10) int i; long t; double avg=0.0; double sum=0.0; for(i=0;i10;i+)【1】; avg=sum/10; avg=【2】; t=【3】; avg=(double)t/100; return avg;main() double avg,x10=15.6,19.9,16.7,15.2,18.3,12.1,15.5,11.0,10.0,16.0; int i; clrscr(); printf(nThe original data is :n); for(i=0;i10;i+)printf(%6.1f,xi); printf(nn); avg=fun(x); printf(average=%fnn,avg);答案及評析:【1】sum+=xi【2】avg*1000【3】(avg+5)/10【解析】填空1:通過for循環(huán)求出10個(gè)數(shù)的累加和,存于變量sum中。填空2:為了實(shí)現(xiàn)四舍五入保留兩位小數(shù)的功能,應(yīng)將平均值先擴(kuò)大1000倍。填空3:將平均值加上5,再除以10,實(shí)現(xiàn)四舍五入的功能。2. 改錯(cuò)題下列給定程序中,函數(shù)fun()的功能是:先從鍵盤上輸入一個(gè)3行3列的矩陣的各個(gè)元素的值,然后輸出主對角線元素之積。請改正函數(shù)fun()中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include int fun() int a33,mul; int i,j; mul=1; for (i=0;i3;i+) /*found*/ for (i=0;j3;j+) scanf(%d,&aij); for(i=0;i3;i+)/*found*/ mul=mul*aij; printf(Mul=%dn,mul);main() fun();答案及評析:(1)錯(cuò)誤:for (i=0;j3;j+)正確:for (j=0;j3;j+)(2)錯(cuò)誤:mul=mul*aij;正確:mul=mul*aii;【解析】錯(cuò)誤1:循環(huán)結(jié)構(gòu)中,要給變量j賦初值0。錯(cuò)誤2:主對角元素的行號和列號相等,所以參加乘法的是aii,而不是aij。3. 編程題學(xué)生的記錄由學(xué)號和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請編寫函數(shù)fun(),它的功能是:把分?jǐn)?shù)最低的學(xué)生數(shù)據(jù)放在h所指的數(shù)組中。注意:分?jǐn)?shù)低的學(xué)生可能不只一個(gè),函數(shù)返回分?jǐn)?shù)最低學(xué)生的人數(shù)。注意:部分源程序給出如下。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。試題程序:#include #define N 16typedef struct char num10; int s ;STREC;int fun (STREC *a, STREC *b)main () STREC sN=GA005,82,GA003,75,GA002,85,GA004,78, GA001,95,GA007,62,GA008,60,GA006,85, GA015,83,GA013,94,GA012,78,GA014,97, GA011,60,GA017,65,GA018,60,GA016,74; STREC hN; int i, n; FILE *out; n=fun(s,h); printf(The %d lowest score :n,n); for (i=0; in; i+) printf(%s %4dn,hi.num,hi.s); /*輸出最低分學(xué)生的學(xué)號和成績*/ printf(n); out=fopen(out19.dat, w); fprintf(out, %dn,n); for(i=0; in; i+); fprintf(out, %4dn ,hi.s); fclose(out);答案及評析:int fun (STREC *a, STREC *b) int i,j=0,min=a0.s; for(i=0;iai.s) min=ai.s; /*找出最小值*/ for(i=0;iN;i+) if(min=ai.s) bj+=ai; /*找出成績與min相等的學(xué)生的記錄,存入結(jié)構(gòu)體b中*/ return j; /*返回最低成績的學(xué)生人數(shù)*/【解析】該程序使用循環(huán)嵌套,第1個(gè)for語句的作用是找出最小值。第2個(gè)循環(huán)的作用是找出與min相等的成績,也即最低成績的學(xué)生記錄,并存入b中。模擬試題(三)1.填空題請補(bǔ)充函數(shù)fun(),該函數(shù)的功能是:從a到z統(tǒng)計(jì)一個(gè)字符串中所有字母字符各自出現(xiàn)的次數(shù),結(jié)果保存在數(shù)組alf中。注意:不區(qū)分大小寫,不能使用字符串庫函數(shù)。例如,輸入:“abc+5*c”,結(jié)果為:a=2,b=1,c=2。注意:部分源程序給出如下。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的橫線上填入所編寫的若干表達(dá)式或語句。試題程序:#include#include#define N 100void fun(char *tt,int alf) int i; char *p=tt; for(i=0;i=A&*p=a&*p=z)alf*p-a+;【3】; main() char strN; char a=a; int alf26,k; clrscr(); printf(nPlease enter a char string:); scanf(%s,str); printf(n*The original string*n); puts(str); fun(str,alf); printf(n*The number of letter*n); for(k=0;k26;k+) if(k%5=0)printf(n);printf(%c=%d ,a+k,alfk); printf(n);答案及評析:【1】alfi=0【2】*p+=32【3】p+【解析】填空1:數(shù)組alf26用來存放字母字符出現(xiàn)的次數(shù),在使用之前需要清零。填空2:題目要求不區(qū)分大小寫,所以可以先將所有的大寫字母都轉(zhuǎn)換為對應(yīng)的小寫字母,然后一并記錄出現(xiàn)的次數(shù)。將大寫字母轉(zhuǎn)換為對應(yīng)的小寫字母,只需將ASCII碼加上32就可以了。填空3:指針p指向字符串tt,通過p自加1來移動(dòng)指針,訪問字符串中的所有字符。2. 改錯(cuò)題下列給定程序中函數(shù)fun()的功能是:從低位開始取出長整型變量s中奇數(shù)位上的數(shù),依次構(gòu)成一個(gè)新數(shù)放在t中。例如,當(dāng)s中的數(shù)為4576235時(shí),t中的數(shù)為4725。請改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include#include /*found*/int fun(long s,long *t) long s1=10; *t=s%10; while(s0) /*found*/ s=s%100; *t=s%10*s1+*t; s1=s1*10; main() long s, t; clrscr(); printf(nPlease enter s: ); scanf(%ld,&s); fun(s,&t); printf(The result is: %ldn ,t);答案及評析:(1)錯(cuò)誤:int fun(long s,long *t)正確:void fun(long s,long *t)(2)錯(cuò)誤:s=s%100;正確:s=s/100;【解析】錯(cuò)誤1:函數(shù)由指針來完成參數(shù)的傳遞,所以沒有返回值,應(yīng)定義函數(shù)的類型為void。錯(cuò)誤2:此處要注意特殊運(yùn)算符號%-取余和/-整除的區(qū)別。將一個(gè)數(shù)整除100則可得到由其百位數(shù)以上的數(shù)組成的新數(shù)字,將一個(gè)數(shù)整除100取余則可得到由十位數(shù)和個(gè)位數(shù)組成的新數(shù)。3. 編程題請編寫一個(gè)函數(shù)fun(),它的功能是:求出一個(gè)4M整型二維數(shù)組中最小元素的值,并將此值返回調(diào)用函數(shù)。注意:部分源程序給出如下。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。試題程序:#define M 4#include fun (int aM)main() int arr4M=11,3,9,35,42,-4,24,32,6,48,-32,7,23,34,12,-7; printf(min=%dn,fun(arr);答案及評析:fun (int aM) int i,j,min=a00; for(i=0;i4;i+) for(j=0;jaij) min=aij; /*求出二維數(shù)組的最小值*/ return min;【解析】此類求最大值或最小值的C語言問題,我們可以采用逐個(gè)比較的方式。要求數(shù)組中的所有元素走動(dòng)一遍,并從中找出最大、最小值,要注意一開始應(yīng)使min存放數(shù)組中的第一個(gè)元素的值??砂粗鹦胁檎乙部砂粗鹆胁檎业姆绞?,本題采用的是逐行查找的方式。即行下標(biāo)在外層循環(huán),列下標(biāo)在內(nèi)層循環(huán),因?yàn)樵谘h(huán)的嵌套中越在內(nèi)層循環(huán),循環(huán)變化就越快。模擬試題(四)1.填空題請補(bǔ)充函數(shù)fun(),該函數(shù)的功能是:分類統(tǒng)計(jì)一個(gè)字符串中元音字母和其他字符的個(gè)數(shù)(不區(qū)分大小寫)。例如,輸入aeiouAOUpqrt,結(jié)果為A:2 E:1 I:1 O:2 U:2 other:4。注意:部分源程序給出如下。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的橫線上填入所編寫的若干表達(dá)式或語句。試題程序:#include#include#define N 100void fun(char *str,int bb) char *p=str; int i=0; for(i=0;i6;i+)【1】; while(*p) switch(*p)case A:case a:bb0+;break;case E:case e:bb1+;break;case I:case i:bb2+;break;case O:case o:bb3+;break;case U:case u:bb4+;break;default:【2】;【3】 main() char strN,ss6=AEIOU; int i; int bb6; clrscr(); printf(Input a string: n); gets(str); printf(the string is: n); puts(str); fun(str,bb); for(i=0;i5;i+)printf(n%c:%d,ssi,bbi); printf(nother:%d,bbi);答案及評析:【1】bbi=0【2】bb5+【3】p+;【解析】填空1:數(shù)組bb6 用來存放5個(gè)元音字母和其他字符的個(gè)數(shù),在使用之前需要清零。填空2:數(shù)組元素bb5 用來存放其他字符的個(gè)數(shù),當(dāng)指針p所指的字符不是元音字母時(shí),則認(rèn)為是其他字符,bb5加1。填空3:指針p指向字符串str,通過p自加1來移動(dòng)指針,訪問字符串中的所有字符。2. 改錯(cuò)題下列給定的程序中,函數(shù)fun()的功能是:計(jì)算并輸出k以內(nèi)最大的6個(gè)能被7或11整除的自然數(shù)之和。K的值由主函數(shù)傳入,若k的值為500,則函數(shù)的值為2925。請改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include#include int fun(int k) int m=0,mc=0, j;/*found*/ while(k=2)&(mc=2)&(mc=2)&(mc6)(2)錯(cuò)誤:if(k%7=0)|(k%11=0)正確:if(k%7=0)|(k%11= =0)(3)錯(cuò)誤:m=k;正確:m=m+k;【解析】錯(cuò)誤1:C語言規(guī)定while語句后的表達(dá)式兩側(cè)必須要有圓括號。錯(cuò)誤2:if語句的判斷條件應(yīng)用關(guān)系運(yùn)算符,而不是賦值運(yùn)算符。錯(cuò)誤3:根據(jù)題意,將滿足條件的數(shù)求累加和。3. 編程題請編寫一個(gè)函數(shù)fun(),它的功能是:將ss所指字符串中所有下標(biāo)為偶數(shù)位置的字母轉(zhuǎn)換為小寫(若該位置上不是字母,則不轉(zhuǎn)換)。例如,若輸入ABC4efG,則應(yīng)輸出aBc4efg。注意:部分源程序給出如下。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。試題程序:#include#include#includevoid fun(char *ss)main() char tt81; clrscr(); printf(nPlease enter an string within 80 characters:n); gets(tt); printf(nnAfter changing, the stringn %s,tt); fun(tt); printf(nbecomesn %sn,tt);答案及評析:void fun(char *ss) int i; for(i=0;ssi!=0;i+) /*將ss所指字符串中所有下標(biāo)為偶數(shù)位置的字母轉(zhuǎn)換為小寫*/ if(i%2=0&ssi=A&ssi=Z) ssi=ssi+32;【解析】從C語言的學(xué)習(xí)中我們知道,只要將小寫字母減去32則轉(zhuǎn)成大寫字母,將大寫字母加上32則轉(zhuǎn)成小寫字母。該程序是用if語句實(shí)現(xiàn)該功能轉(zhuǎn)化的。模擬試題(五)1.填空題str是全部由小寫字母字符和空格字符組成的字符串,由num傳入字符串的長度。請補(bǔ)充函數(shù)fun(),該函數(shù)的功能是:統(tǒng)計(jì)字符串str中的單詞個(gè)數(shù),結(jié)果由變量num傳回。每個(gè)單詞之間都由空格隔開,并且字符串str開始不存在空格。例如:str=“how do you do”,結(jié)果為:num=4。注意:部分源程序給出如下。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的橫線上填入所編寫的若干表達(dá)式或語句。試題程序:#include#define N 80void fun(char *s,int *num) int i,n=0; for(i=0;【1】;i+) if(si=a&si=z&(si+1= |si+1=0)【2】; 【3】;main() char strN; int num=0; printf(Enter a string:n); gets(str); while(strnum)num+; fun(str,&num); printf(The number of word is :%dnn,num);答案及評析:【1】i*num【2】n+【3】*num=n【解析】填空1:*num傳入字符串的長度,所以for循環(huán)中變量i的變化范圍是從0到*num-1。填空2:如果當(dāng)前判斷的字符是小寫字母,并且它的下一個(gè)字符是空格或者是字符串結(jié)束標(biāo)記符,則表示當(dāng)前字符是一個(gè)單詞的最后一個(gè)字母,統(tǒng)計(jì)單詞數(shù)的變量n要加上1。填空3:題目要求結(jié)果由變量num傳回,所以要將n的值賦給指針num所指的單元。2. 改錯(cuò)題下列給定程序中,fun()函數(shù)的功能是:根據(jù)形參m,計(jì)算下列公式的值。t=1-1/21/3-1/4(-1)(m+1)/m例如,若輸入5,則應(yīng)輸出0.783333。請改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include #include /*found*/int fun(int m) double t=1.0,j=1.0; int i;/*found*/ for(i=1;im;i+) j=-1*j;t+=j/i; return t;main() int m; clrscr(); printf(nPlease enter 1 integer number: ); scanf(%d,&m); printf(nThe result is %lfn, fun(m);答案及評析:(1)錯(cuò)誤:int fun(int m)正確:double fun(int m)(2)錯(cuò)誤:for(i=1;im;i+)正確:for(i=2;i=m;i+)【解析】錯(cuò)誤:函數(shù)的返回值為實(shí)型數(shù),所以應(yīng)定義為double類型。錯(cuò)誤2:根據(jù)題目的公式,參加運(yùn)算的數(shù)應(yīng)從2到m,包括m。3. 編程題請編寫函數(shù)fun(),它的功能是:求出1到1000之內(nèi)能被5或13整除、但不能同時(shí)被5和13整除的所有整數(shù)并將它們放在a所指的數(shù)組中,通過n返回這些數(shù)的個(gè)數(shù)。注意:部分源程序給出如下。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。試題程序:#include #include void fun(int *a,int *n)main( ) int aa1000, n, k; clrscr( ); fun(aa,&n); for(k=0;kn;k+) if(k+1)%10=0) printf(%5d ,aak); printf(n ); /*一行寫10個(gè)數(shù)*/ else printf(%5d ,aak);答案及評析:void fun(int *a,int *n) int i,j=0; for(i=1;i=1000;i+) /*求1到1000之內(nèi)能被5或13整除、但不能同時(shí)被5和13整除的所有整數(shù),并放入數(shù)組a中*/ if(i%5=0|i%13=0)&i%65!=0) aj+=i; *n=j; /*傳回滿足條件的數(shù)的個(gè)數(shù)*/【解析】注意本題題目是找出能被5或13整除但不能同時(shí)被5和13整除的所有整數(shù)。能同時(shí)被5和13整除的整數(shù)一定能被65整除,且不能被65整除的數(shù)不一定就是能被5或13整除的數(shù)。所以可得出程序中的if()。按運(yùn)算優(yōu)先級可知(i%5=0|i%13=0),注意,兩邊必須要有小括號。模擬試題(六)1.填空題str是一個(gè)由數(shù)字和字母字符組成的字符串,由變量num傳入字符串長度。請補(bǔ)充函數(shù)fun(),該函數(shù)的功能是:把字符串str中的數(shù)字字符轉(zhuǎn)換成數(shù)字并存放到整型數(shù)組bb中,函數(shù)返回?cái)?shù)組bb的長度。例如:str=“Bcd123e456hui890”,結(jié)果為:123456890。注意:部分源程序給出如下。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的橫線上填入所編寫的若干表達(dá)式或語句。試題程序:#include#define N 80int bbN;int fun(char s,int bb,int num) int i,n=0; for(i=0;inum;i+) if(【1】)bbn=【2】;n+; return 【3】;main() char strN; int num=0,n,i; printf(Enter a string:n); gets(str); while(strnum)num+; n=fun(str,bb,num); printf(nbb= ); for(i=0;i= 0 &si= 9【2】si- 0【3】n【解析】填空1:如果當(dāng)前字符的ASCII碼大于字符0的ASCII碼,而小于字符9的ASCII碼,則說明當(dāng)前字符是數(shù)字字符。填空2:將數(shù)字字符轉(zhuǎn)換為數(shù)字的方法是,用當(dāng)前數(shù)字字符的ASCII碼減去字符0的ASCII碼。填空3:題目要求函數(shù)返回?cái)?shù)組bb的長度,而變量n記錄了數(shù)字字符的個(gè)數(shù),也就是數(shù)組bb的長度,所以函數(shù)應(yīng)該返回n。2. 改錯(cuò)題下列給定程序中,函數(shù)fun()的功能是:從n個(gè)學(xué)生的成績中統(tǒng)計(jì)出高于平均分的學(xué)生人數(shù),人數(shù)由函數(shù)值返回,平均分存放在形參aver所指的存儲(chǔ)單元中。例如輸入8名學(xué)生的成績:85 65.5 69 95.5 87 55 62.5 75則高于平均分的學(xué)生人數(shù)為4(平均分為74.312500)。請改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include #include #define N 20int fun(float *s, int n,float *aver) /*found*/int ave ,t=0; int count=0,k,i; for(k=0;kn;k+) t+=sk; ave=t/n; for(i=0;in;i+)/*found*/ if(siave) count+;/*found*/ aver=ave; return count;main() float s30,aver; int m,i; clrscr(); printf(nPlease enter m: ); scanf(%d,&m); printf(nPlease enter %d mark :n,m); for(i=0;im;i+) scanf(%f,s+i); printf(nThe number of students :%dn,fun(s,m,&aver); printf(Ave=%fn,aver);答案及評析:(1)錯(cuò)誤:int ave ,t=0;正確:float ave ,t=0.0;(2)錯(cuò)誤:if(siave)(3)錯(cuò)誤:aver=ave;正確:*aver=ave;【解析】錯(cuò)誤1:ave和t分別用來存放成績的平均值和總分,應(yīng)為實(shí)型數(shù)。錯(cuò)誤2:根據(jù)題意,找出高于平均分的數(shù),所以此處的關(guān)系運(yùn)算符應(yīng)為錯(cuò)誤3:aver是指針,而ave是一個(gè)數(shù),不能將一個(gè)數(shù)賦值給一個(gè)指針,而要用符號*。3. 編程題請編寫一個(gè)函數(shù)fun(),它的功能是:比較兩個(gè)字符串的長度,(不得調(diào)用C語言提供的求字符串長度的函數(shù)),函數(shù)返回較短的字符串。若兩個(gè)字符串長度相等,則返回第1個(gè)字符串。例如,輸入nanjing nanchang (為回車鍵),函數(shù)將返回nanjing。注意:部分源程序給出如下。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。試題程序:#includechar *fun(char *s, char *t)main() char a20,b10,*p,*q; int i; printf(Input 1th string: ); gets(a); printf(Input 2th string: ); gets(b); printf(%s,fun(a,b);答案及評析:char *fun(char *s, char *t) int i,j; for(i=0;si!= 0;i+); /*求字符串的長度*/ for(j=0;tj!= 0;j+); if(i=j) /*比較兩個(gè)字符串的長度*/ return s; /*函數(shù)返回較短的字符串,若兩個(gè)字符串長度相等,則返回第1個(gè)字符串*/ else return t;【解析】本題中,第1個(gè)for循環(huán)的作用是求出s的字符個(gè)數(shù)i,第2個(gè)for循環(huán)的作用是求出t的字符個(gè)數(shù)j,因?yàn)槿魏窝h(huán)都要控制一條語句,所以在每一個(gè)for循環(huán)條件后面必須要有一個(gè)分號。本題也可用如下技巧:#include /*一定要注意在最前面加#include*/char *fun(char *s,char *t)if(strlen(s)=strlen(t) return s;else return t;模擬試題(七)1.填空題從鍵盤輸入一組無符號整數(shù)并保存在數(shù)組xxN中,以整數(shù)結(jié)束輸入,要求這些數(shù)的最大位數(shù)不超過位,其元素的個(gè)數(shù)通過變量num傳入函數(shù)fun()。請補(bǔ)充函數(shù)fun(),該函數(shù)的功能是:從數(shù)組xx中找出個(gè)位和十位的數(shù)字之和大于的所有無符號整數(shù),結(jié)果保存在數(shù)組yy中,其個(gè)數(shù)由函數(shù)fun()返回。例如:當(dāng)xx8=123,11,25,222,42,333,14,5451時(shí),bb4=25,42,333,5451。注意:部分源程序給出如下。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的橫線上填入所編寫的若干表達(dá)式或語句。試題程序:#include #define N 1000int fun(int xx,int bb,int num) int i, n=0; int g, s; for(i=0;i5)【2】; return【3】;main() int xxN; int yyN; int num=0,n=0,i=0; printf(Input number :n); do scanf(%u,&xxnum); while(xxnum+!=0); n=fun(xx,yy,num); printf(nyy=); for(i=0;in;i+)printf(%u ,yyi);答案及評析:【1】xxi%10【2】bbn+=xxi【3】n【解析】填空1:將一個(gè)整數(shù)對10取余,則得到這個(gè)整數(shù)的個(gè)位數(shù),將一個(gè)整數(shù)除以10再對10取余,則得到這個(gè)整數(shù)的十位數(shù)。由程序可以看出,變量s保存了整數(shù)的十位數(shù),所以應(yīng)該將整數(shù)的個(gè)位數(shù)保存于變量g中。填空2:當(dāng)整數(shù)的個(gè)位與十位的數(shù)字之和大于5時(shí),則將這個(gè)整數(shù)存于數(shù)組bb中,同時(shí),變量n記錄了滿足條件的無符號整數(shù)的個(gè)數(shù)。填空3:題目要求滿足條件的無符號整數(shù)的個(gè)數(shù)由fun函數(shù)返回,所以函數(shù)返回n。2. 改錯(cuò)題下列給定程序中,函數(shù)fun()的功能是:在字符串str中找出ASC碼值最小的字符,將其放在第一個(gè)位置上,并將該字符前的原字符向后順序移動(dòng)。例如,調(diào)用fun()函數(shù)之前給字符串輸入fagAgBDh,調(diào)用后字符串中的內(nèi)容為AfaggBDh。請改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include/*found*/void fun(char p) char min, *q; int i=0; min=pi; while (pi!=0) if (minpi) /*found*/ p=q+i; min=pi; i+; while(qp) *q=*(q-1); q-; p0=min;main() char str80; printf(Enter a string: ); gets(str); printf(nThe original string: ); puts(str); fun(str); printf(nThe string after moving: ); puts(str); printf(nn);答案及評析:(1)錯(cuò)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度新型自動(dòng)販賣機(jī)租賃與銷售代理合同
- 2025年度漁船租賃與漁業(yè)保險(xiǎn)配套服務(wù)合同
- 二零二五年度購房合同簽訂后的房屋驗(yàn)收與交付標(biāo)準(zhǔn)
- 2025年度舞蹈大賽參賽嘉賓演藝合同協(xié)議
- 2025年度商砼行業(yè)市場拓展與品牌建設(shè)合同
- 2025版家居床墊品牌代理銷售合作協(xié)議書3篇
- 二零二五年度污水處理廠污水處理設(shè)施運(yùn)營與優(yōu)化管理合同
- 2025年度環(huán)保項(xiàng)目貸款用途監(jiān)管協(xié)議
- 2025年度智能家居設(shè)備試用反饋協(xié)議
- 2025年度中小企業(yè)發(fā)展銀行過橋墊資貸款合同
- 保險(xiǎn)專題課件教學(xué)課件
- 牛津上海版小學(xué)英語一年級上冊同步練習(xí)試題(全冊)
- 室上性心動(dòng)過速-醫(yī)學(xué)課件
- 建設(shè)工程法規(guī)及相關(guān)知識試題附答案
- 中小學(xué)心理健康教育課程標(biāo)準(zhǔn)
- 四年級上冊脫式計(jì)算400題及答案
- 新課標(biāo)人教版小學(xué)數(shù)學(xué)六年級下冊集體備課教學(xué)案全冊表格式
- 人教精通版三年級英語上冊各單元知識點(diǎn)匯總
- 教案:第三章 公共管理職能(《公共管理學(xué)》課程)
- 諾和關(guān)懷俱樂部對外介紹
- 保定市縣級地圖PPT可編輯矢量行政區(qū)劃(河北省)
評論
0/150
提交評論