c語(yǔ)言上機(jī)編程模擬題10套_第1頁(yè)
c語(yǔ)言上機(jī)編程模擬題10套_第2頁(yè)
c語(yǔ)言上機(jī)編程模擬題10套_第3頁(yè)
已閱讀5頁(yè),還剩39頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、c 語(yǔ)言上機(jī)編程模擬題 10套模擬試題 (一)1. 填空題請(qǐng)補(bǔ)充函數(shù) fun (), 該函數(shù)的功能是:把從主函數(shù)中輸入的字符串 str2 接在字 符串 strl 的后面。例如: strl= “How do" , str2= “you do?", 結(jié)果輸出: How do you do? 注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù) main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的橫 線上填入所編寫(xiě)的若干表達(dá)式或語(yǔ)句。試題程序: #include<stdio. h> #include<conio. h> ftdefine N 40 void fun(cha

2、r *strl, char *str2)int i=0:char *pl=strl;char *p2 二 str2; while(【1】)i+; for( ; 2 ;i+)*(pl+i)= 3;*(pl+i) 二'0'main()char strlN, str2N: clrscr (); printf("*Input the string strl & str2*n");printf (” nstrl:");gets (strl);printf(" nstr2:");gets (str2);printf ("*

3、The string strl & str2*n");puts(strl);puts (str2);fun(strl, str2);printf ("*The new string *n");puts (strl);答案及評(píng)析:1 *(pl+i) 2 *p2 3 *p2+【解析】填空 1:變量 i 用來(lái)記錄字符串 strl 的長(zhǎng)度,當(dāng)指針指到 字符串 strl 結(jié)束標(biāo)志符, 0' 時(shí), while 循環(huán)結(jié)束,變量 i 停止累加。 填空 2:指針 p2 指向字符串 str2, 通過(guò) for 循環(huán)將字符串 str2 接在 strl 后面,循環(huán)結(jié)束的 條

4、件是指針p2所指的字符是字符串結(jié)束標(biāo)志 符'0'。填空3:指針p2最初指 向字符串str2的首字符,通過(guò)自 加1,使指針P2依次向后移動(dòng),指向str2的 各個(gè)字符,實(shí)現(xiàn)將字符 串 str2 接在 strl 后面的功能。2. 改錯(cuò)題下列給定程序中,函數(shù) fun() 的作用是:將字符串 tt 中的小寫(xiě)字母 都改為對(duì)應(yīng) 的大寫(xiě)字母,其他字符不變。例如,若輸入 edS, dAd, 則輸出 "EDS, DAD。請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:ftinclude <stdio. h>f

5、tinclude <string. h> ftinclude <conio. h>/ XTs XTs XTs XTs XTs XTs XTs XTs XTs XTs XTs XTs XTs XTs XTs ? TX? IX *TX *TX char fun (char tt )int i;for(i=0;tti : i+)/ xt# xt# xt# xt# xt# xt# MXMX XL#/ ZTs ZTs ZTs XTs XTs XTs XTs XTs XTs XTs XTs XTs XTs XTs XTs XT* XT* XT* XT* XT* XT*XL# xtx

6、xt# -4I f 11 I I I I *TX *TX *TX *TX XTX*lx *lx *lx *lx *lx *lx *lx *lx *lx *lx /XTs ZTs ZTs /if (tti>=,A,)&&(tti<= 'Z')tt i-=32;return (tt);main()int i;char tt 81; clrscr ();printf ("nPlease enter a string:"); gets (tt); printf ("nThe result string is: n%s"

7、, fun(tt);答案及評(píng)析:(1) 錯(cuò)誤: char fun (char tt )正確: char *fun(char tt )(2) 錯(cuò)誤: if (tti>=,A,)&&(tti<= 'Z')正確: if (tti>=,a )&&(tti<= 'z')【解析】 錯(cuò)誤 1:函數(shù)的返回值是字符串的首地址,是指針類(lèi)型,所以在函數(shù)名前要加 '*' 號(hào)。錯(cuò)誤 2:題目要求將小寫(xiě)字母改為大寫(xiě)字母,所以 if 語(yǔ)句的判斷條 件是小寫(xiě)字 母。3. 編程題請(qǐng)編寫(xiě)函數(shù) fun(), 該函數(shù)的功能是:移動(dòng)

8、一維數(shù)組中的內(nèi)容,若數(shù) 組中有 n 個(gè) 整數(shù),要求把下標(biāo)從 p 到 n-1 (pWn-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。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù) main 和其他函數(shù)中的任何內(nèi)容,僅在函數(shù) fun 的花 括號(hào)中填 入所編寫(xiě)的若干語(yǔ)句。試題程序: ftinclude <stdio. h&g

9、t; 駅 efine N 80void fun(int *w, int p, int n) main()int aN = l, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15; inti, p, n=15:printf ("The original data:n/z): for (i=0;i<n;i+)printf ("%3d", ai); printf (/z nnEnter p:"); scanf ("%d", &p);fun (a, p, n);printf (&quo

10、t;nThe data after moving: nz,): for (i=0:i<n;i+)printf ("%3d", ai);printf( nrT);答案及評(píng)析:void fun(int *w, int p, int n) int i, j, t;/* 循環(huán)右移 n-p 次*/) /* 實(shí)現(xiàn)循環(huán)右移 */for (i=p: i<=n-l: i+)t=wn-l;for (j=n-2 : j>=0; j wj+l=wj;w0=t;是,一個(gè)是整型數(shù)組,一個(gè)是字符型數(shù)組模擬試題 ( 二)1. 填空題請(qǐng)補(bǔ)充函數(shù) fun(), 該函數(shù)的功能是求一維數(shù)組 xN

11、 的平均值,并對(duì) 所得結(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. 030000o 注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù) main 和其他函數(shù)中的任何內(nèi)容,僅在函數(shù) fun 的橫 線上填入 所編寫(xiě)的若干表達(dá)式或語(yǔ)句。 試題程序:#include<stdio. h>#include<conio. h>double fun(double x10)int i;long t;double avg=0. 0

12、:double sum=0. 0:for(i=0;i<10;i+)11 ;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;i<10;i+)printf ("%6. If", xi);

13、printf( nn ) ; avg=fun(x); printf("average=%fnn", avg);答案及評(píng)析:1 sum+=xi 2 avg*10003 (avg+5)/IO【解析】填空 1:通過(guò) 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() 的功能是:先從鍵盤(pán)上輸入一個(gè) 3 行 3 列的矩陣 的各個(gè)元素的值,然后輸出主對(duì)角線元素之積。請(qǐng)改正函數(shù) fun() 中

14、的錯(cuò)誤,使它能得出正確的結(jié)果。 注意:不要改動(dòng) main 函數(shù),不得增行或刪行,也不得更改程序的結(jié) 構(gòu)。 試題程序:ftinclude <stdio. h> int fun ()int a33, mul;int i, j;mul=l;for (i=0;i 3;i+)/ xt# xt# xt# xt# xt# xt# MXMX XL#XL# xtxxt# -4 1 r/ ZTs ZTs ZTs XTs XTs XTs XTs XTs XTs XTs XTs XTs XTs XTs XTs XT* XT* XT* XT* XT* XT*I f 11 I I I I/XTX XTs ZT

15、s ZTs /for (i=0;j<3;j+) scanf ("%d", &ai j);for(i=0;i<3:i+)/ xt# xt# xt# xt# xt# xt# MXMX XL#XL# xtxxt# -4 1 r/ ZTs ZTs ZTs XTs XTs XTs XTs XTs XTs XTs XTs XTs XTs XTs XTs XT* XT* XT* XT* XT* XT*I f 11 I I I IXTXXTs ZTs ZTs /mul=mul*ai j;printf("Mul=%dn",mul);main()fun(

16、);答案及評(píng)析:(1)錯(cuò)誤: for (i=0; j<3; j+)正確:for (j=0; j<3; j+)(2)錯(cuò)誤: mul=mul*ai j:正確:mul=mul*ai i:【解析】錯(cuò)誤 1:循環(huán)結(jié)構(gòu)中,要給變量 j 賦初值 0。錯(cuò)誤2:主對(duì)角元素的行號(hào)和列號(hào)相等,所以參加乘法的是aii,而不是ai j o3.編程題學(xué)生的記錄由學(xué)號(hào)和成績(jī)組成, N 名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s 中,請(qǐng)編寫(xiě)函數(shù) fun (), 它的功能是:把分?jǐn)?shù)最低的學(xué)生數(shù)據(jù)放在h 所指的數(shù)組中。注意:分?jǐn)?shù)低的學(xué)生可能不只一個(gè),函數(shù) 返回分?jǐn)?shù)最低學(xué)生的人數(shù)。 注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函

17、數(shù) main 和其他函數(shù)中的任何內(nèi)容,僅在函數(shù) fun 的花 括號(hào)中填 入所編寫(xiě)的若干語(yǔ)句。試題程序: ftinclude <stdio. h> 駅 efine N 16 typedef struct char num10:int s ;STREC;int fun (STREC *a, STREC *b)main ()STRECsN二"GA005", 82, "GA003",75, "GA002",85, "GA004", 78,"GA001", 95, "GA007&qu

18、ot;, 62, "GA008", 60, "GA006", 85,"GA015", 83, "GA013", 94, "GA012", 78, "GA014", 97,"GAO11", 60, "GA017", 65, "GAO18", 60, "GA016", 74;STREC hN;int i, n;FILE *out;n=fun (s, h);printf("The %d low

19、est score :n",n);for (i=0: i<n; i+)printf ("%s %4dn, ) hi. num, hi. s) :/* 輸出最低分學(xué)生的學(xué)號(hào)和成績(jī) */printf( n ) ;out=fopen ("outl9. dat", "w");fprintf (out, "%dn", n);for(i=0: i<n; i+):fprintf(out, "%4dn ",hi.s);fclose (out);答案及評(píng)析:int fun (STREC *a, STR

20、EC *b)int i, j=0, min=a0. s:for (i=0;i<N;i+)/* 找出最小值 */if (min>ai. s) min=ai. s :for (i=0;i<N;i+)if (min=ai. s)bj+=ai ;/*找出成績(jī)與min相等的學(xué)生的記錄,存入結(jié)構(gòu)體 b 中 */return j :/* 返回最低成績(jī)的學(xué)生人數(shù)【解析】 該程序使用循環(huán)嵌套,第 1 個(gè) for 語(yǔ)句的作用是找出最小值。 第 2 個(gè)循環(huán)的作用是找出與 min 相等的成績(jī),也即最低成績(jī)的學(xué)生記 錄,并存入 b 中。模擬試題 ( 三)1. 填空題請(qǐng)補(bǔ)充函數(shù)fun(),該函數(shù)的功能是

21、:從'a,到'z,統(tǒng)計(jì)一個(gè)字符 串中所有字母 字符各自出現(xiàn)的次數(shù),結(jié)果保存在數(shù)組 alf 中。注意: 不區(qū)分大小寫(xiě),不能使 用字符串庫(kù)函數(shù)。例如,輸入: "A=abc+5*c", 結(jié)果為: a=2, b=l, c=20 注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù) main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的橫 線上填入所編寫(xiě)的若干表達(dá)式或語(yǔ)句。試題程序: #include<conio. h> #include<stdio. h> ftdefine N 100 void fun (char *tt, int alf )int i;ch

22、ar *p=tt: for(i=0;i<26;i+)while(*p)if (*p>= A &&*p 二'Z')2 ;if (*p>= a &&*p二'z') alf*p_ , a +;3 ;main()char strN;char a 二' a ;int alf26, k;clrscr ();printf ( /z nPlease enter a char string:/z): scanf ("%s", str);printf("n*The original string

23、*n"); puts (str);fun (str, alf);printf ( /zn*The number of letter*n");for (k=0;k<26;k+)if (k%5=0)printf( n);printf ( /z %c=%d”, a+k, alf k);答案及評(píng)析:1 alfi=O 2 *p+=32 3 p+【解析】填空 1:數(shù)組 alf26 用來(lái)存放字母字符出現(xiàn)的次數(shù),在使 用之前需 要清零。填空 2:題目要求不區(qū)分大小寫(xiě),所以可以先將所有的大寫(xiě)字母都轉(zhuǎn)換為對(duì)應(yīng)的小寫(xiě)字母,然后一并記錄出現(xiàn)的次數(shù)。 將大寫(xiě)字母轉(zhuǎn)換為對(duì)應(yīng)的小 寫(xiě)字母,只需將

24、ASCII 碼加上 32 就可以了。填空 3:指針 p 指向字符串 tt, 通 過(guò)p自加1來(lái)移動(dòng)指針,訪問(wèn) 字符串中的所有字符。下列給定程序中函數(shù) fun() 的功能是:從低位開(kāi)始取出長(zhǎng)整型變量 s 中奇數(shù)位 上的數(shù),依次構(gòu)成一個(gè)新數(shù)放在 t 中。例如,當(dāng) s 中的數(shù)為 4576235 時(shí), t 中 的數(shù)為 4725。請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動(dòng) main 函數(shù),不得增行或刪行,也不得更改程序的結(jié) 構(gòu) 試題程序:#include<stdio. h> ftinclude <conio. h>/XL# xt# xt# xt#xt# Mxxtxxt#

25、 XL# xt# xt# Mxxt# -4 1 r Z-J/ ZTs ZTs ZTs XTs XTs XTs XTs XTs XTs XTs XTs XTs XTs XTs XTs XT* XT* XT* XT* XT* XT*I f 11 I I I I/XTX XTs ZTs ZTs /int fun (long s, long *t)long sl=10: *t=s%10;while (s>0)/XTX XTs ZTs ZTs / XL# xt# xt# xt#xt# Mxxtxxt# XL#xt# xt# Mxxt# -4 r Z-J/ ZTs ZTs ZTs XTs XTs X

26、Ts XTs XTs XTs XTs XTs XTs XTs XTs XTs XT* XT* XT* XT* XT* XT*I f 11 I I I Is=s%100;*t=s%10*sl+*t; sl=sl*10;main()long s, t; clrscr ();printf ("nPlease enter s:"); scanf&s);fun(s, &t);printf("The result is: %ldn ”, t);答案及評(píng)析:(1) 錯(cuò)誤: int fun (long s, long *t)正確: void fun (long s

27、, long *t)(2) 錯(cuò)誤: s=s%100;正確: s=s/100;【解析】錯(cuò)誤 1:函數(shù)由指針來(lái)完成參數(shù)的傳遞,所以沒(méi)有返回值,應(yīng)定義函數(shù)的類(lèi)型為 voido錯(cuò)誤 2:此處要注意特殊運(yùn)算符號(hào) %一取余和 7一整除的區(qū)別。將 一個(gè)數(shù) 整除 100 則可得到由其百位數(shù)以上的數(shù)組成的新數(shù)字,將一個(gè) 數(shù)整除 100 取余 則可得到由十位數(shù)和個(gè)位數(shù)組成的新數(shù)。3. 編程題請(qǐng)編寫(xiě)一個(gè)函數(shù)fun(),它的功能是:求出一個(gè)4XM整型二維數(shù)組中最小元素的 值,并將此值返回調(diào)用函數(shù)。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù) main 和其他函數(shù)中的任何內(nèi)容,僅在函數(shù) fun 的花 括號(hào)中填 入所編寫(xiě)的若

28、干語(yǔ)句。試題程序:切 efine M 4ftinclude <stdio. h>fun (int a M) main()intarr4 M = 11, 3, 9, 35, 42, -4, 24, 32, 6, 4& -32, 7, 23, 34, 12,-7; printf("min=%dn", fun(arr);答案及評(píng)析:fun (int a M)int i, j, min=a0 0;for (i=0;i<4;i+)for (j=0;j<M;j+)if (min>ai j)min=ai j :/* 求出二維數(shù)組的最小值 */retu

29、rn min;【解析】 此類(lèi)求最大值或最小值的 C 語(yǔ)言問(wèn)題,我們可以采用逐個(gè)比 較的方 式。要求數(shù)組中的所有元素走動(dòng)一遍,并從中找出最大、最小 值,要注意一開(kāi) 始應(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)變化就越快。模擬試題 ( 四)請(qǐng)補(bǔ)充函數(shù) fun (), 該函數(shù)的功能是:分類(lèi)統(tǒng)計(jì)一個(gè)字符串中元音字 母和其他 字符的個(gè)數(shù) (不區(qū)分大小寫(xiě) ) 。例如,輸入 aeiouAOUpqrt, 結(jié)果為 A:2 E:1 1:1 0:2 U:2 other:4

30、o 注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù) main 和其他函數(shù)中的任何內(nèi)容,僅在函數(shù) fun() 的 橫線上填入 所編寫(xiě)的若干表達(dá)式或語(yǔ)句。試題程序:#include<stdio. h> #include<conio. h> ftdefine N 100 void fun (char * str, int bb )char *p=str:int i=0: for(i=0;i<6;i+)11 ;while(*p)switch(*p)case ' U'case 'A1casebbO+;breakcase'E1Jcasebbl+;br

31、eakcase'I1Jcasebb2+;breakcase'O1Jcase1bb3+;breakcase ' u' :bb4+;break; default: 2;main()char strN, ss6="AEIOU"int i;int bb6;clrscr (); printf("Input a string: n");gets (str);printf ( /z the string is: n");puts(str);fun (str, bb); for(i=0;i<5;i+) printf(&qu

32、ot;n%c:%d", ssi, bbi);printf ("nother:%d", bbi);答案及評(píng)析:1 bbi=0 2 bb5+3 p+;【解析】 填空 1:數(shù)組 bb6 用來(lái)存放 5 個(gè)元音字母和其他字符的個(gè) 數(shù),在使 用之前需要清零。填空 2:數(shù)組元素 bb5 用來(lái)存放其他字符的個(gè)數(shù),當(dāng)指針 p 所指的 字符不是 元音字母時(shí),則認(rèn)為是其他字符, bb5 加 1。填空 3:指針 P 指向字符串 str,通 過(guò) p 自 加 1 來(lái) 移 動(dòng) 指 針 , 訪 問(wèn) 字 符 串 中 的 所 有 字 符下列給定的程序中,函數(shù)fun()的功能是:計(jì)算并輸出k以內(nèi)最大的

33、6個(gè)能被7 或11整除的自然數(shù)之和。K的值由主函數(shù)傳入,若k的值為500,則函數(shù)的值 為 29250請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#in cludevstdio. h>ftin elude vconio. h> int fun (i nt k)int m=0, mc=0, j ;/ xt# xt# xt# xt# xt# xt# MXMX XL# XL# xtxxt # -4 1 r/ ZTs ZTs ZTs XTs XTs XTs XTs XTs XTs XTs XTs XTs XTs XTs

34、XTs XT* XT* XT* XT* XT* XT* I f 11 III IXTXXTs ZTs ZTs /while(k>=2)&&(mc<6)XTs ZTs ZTs /XTs ZTs ZTs / xt# xt# xt# xt# xt# xt# MX *Jx xt# xt# *Jx *JxMX XL# *Jx XL# xtxxt # -41 r , *lx *lx *lx *lx *lx *lx *lx *lx *lx *lx *lx *lx *lx *lx *lx *lx *lx *lx *lx *lx *lx *lx *lx / ZTs ZTs ZTs X

35、Ts XTs XTs XTs XTs XTs XTs XTs XTs XTs XTs XTs XT* XT* XT* XT* XT* XT* *TX I f 11 I I I I *TX *TX *TX *TX XTXif(k%7=0) |(k%ll=0)/ xt# xt# xt# xt# xt# xt# MXMX XL#XL# xtxxt # -4 1 r/ ZTs ZTs ZTs XTs XTs XTs XTs XTs XTs XTs XTs XTs XTs XTs XTs XT* XT* XT* XT* XT* XT* I f 11 I I I I *TX *TX *TX *TX XTX

36、m=k;mc+;return m;mai n()clrscr ();printf (/z%dn “,fun(500);答案及評(píng)析:(1) 錯(cuò)誤:while (k>=2)&& (mc<6)正確:while(k>=2)&&(mc<6)(2) 錯(cuò)誤: if (k%7=0) | (k%ll=O)正確: if (k%7=0) | (k%ll= =0)(3) 錯(cuò)誤: m=k;正確: m=m+k:【解析】 錯(cuò)誤 1: C 語(yǔ)言規(guī)定 while 語(yǔ)句后的表達(dá)式兩側(cè)必須要有圓 括號(hào)。 錯(cuò)誤 2: if 語(yǔ)句的判斷條件應(yīng)用關(guān)系運(yùn)算符,而不是賦值運(yùn)算符。錯(cuò)誤

37、3:根據(jù)題意,將滿足條件的數(shù)求累加和。3. 編程題請(qǐng)編寫(xiě)一個(gè)函數(shù) fun (), 它的功能是:將 ss 所指字符串中所有下標(biāo) 為偶數(shù)位置 的字母轉(zhuǎn)換為小寫(xiě) ( 若該位置上不是字母,則不轉(zhuǎn)換 )。 例如,若輸入 ABC4efG, 則應(yīng)輸出 aBc4efgo 注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù) main 和其他函數(shù)中的任何內(nèi)容,僅在函數(shù) fun 的花 括號(hào)中填 入所編寫(xiě)的若干語(yǔ)句。試題程序:#include<conio. h>#include<stdio. h> #include<string. h> void fun(char *ss) main() c

38、hartt 81;clrscr ();printf ("nPlease enter an string within 80 characters: n/z); gets(tt);printf ( /z nnAfter changing, the stringn %s", tt); fun (tt);printf ( /z nbecomesn %sn", tt);答案及評(píng)析:void fun(char *ss)int i ;for (i=0; ssi !=,0' ; i+)/* 將 ss 所指字符串中所有下標(biāo)為偶數(shù)位置的字母轉(zhuǎn)換為小寫(xiě) */ssi=ssi+3

39、2;【解析】從C語(yǔ)言的學(xué)習(xí)中我們知道,只要將小寫(xiě)字母減去 32則轉(zhuǎn) 成大寫(xiě)字 母,將大寫(xiě)字母加上 32 則轉(zhuǎn)成小寫(xiě)字母。該程序是用 if 語(yǔ) 句實(shí)現(xiàn)該功能轉(zhuǎn)化 的。模擬試題 (五)1. 填空題str是全部由小寫(xiě)字母字符和空格字符組成的字符串,由num傳入字 符串的長(zhǎng)度。請(qǐng)補(bǔ)充函數(shù) fun(), 該函數(shù)的功能是:統(tǒng)計(jì)字符串 str 中的單詞個(gè)數(shù),結(jié)果 由變量num傳回。每個(gè)單詞之間都由空格隔開(kāi),并且字符串str開(kāi)始不存在空格。例如: str= "how do you do",結(jié)果為: num=4。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)

40、fun()的 橫線上填入所編寫(xiě)的若干表達(dá)式或語(yǔ)句。 試題程序:#include<stdio. h>駅 efine N 80void fun(char *s, int *num)int i, n=0:for (i=0: 1 ;i+)if (si>=,a &&si< =,z' &&(si+l = ''I |si+i='o')2; main()char strN;int num=0:printf ("Enter a string:n/z ): gets(str);while(str num)nu

41、m+;z/, num);fun (str, &num);printf("The number of word is : %dnn答案及評(píng)析:1 i *num 2 n+ 3 *num=n【解析】填空 1: *num 傳入字符串的長(zhǎng)度,所以 for 循環(huán)中變量 i 的 變化范 圍是從0至Fnum-lo填空2:如果當(dāng)前判斷的字符是小寫(xiě)字母,并且它的下一 個(gè)字符是空格或者是字符串結(jié)束標(biāo)記符,則表示當(dāng)前字 符是一個(gè)單詞的最后一 個(gè)字母,統(tǒng)計(jì)單詞數(shù)的變量 n 要加上 1。填空 3 :題目要求結(jié)果由變量 num 傳 回,所以要將n的值賦給指針num所 指的單元。2. 改錯(cuò)題F列給定程序中,

42、fun()函數(shù)的功能是:根據(jù)形參 m,計(jì)算下列公式的值t=l-l/2 + l/3-l/4HF (-1) (m+1) /m例如,若輸入 5, 則應(yīng)輸出 0. 783333o 請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果 注意:不要改動(dòng) main 函數(shù),不得增行或刪行,也不得更改程序的結(jié) 構(gòu)試題程序:ftinclude <conio. h> ftinclude <stdio. h>/XL# xt# xt# xt#xt# Mxxtxxt# XL#xt# xt# Mxxt# -4 1 r Z-J/ ZTs ZTs ZTs XTs XTs XTs XTs XTs XTs XTs XTs

43、 XTs XTs XTs XTs XT* XT* XT* XT* XT* XT*I f 11 I I I I/XTX XTs ZTs ZTs /int fun(int m)double t=l. 0, j=l. 0; int i ;/XL# xt# xt# xt#xt# Mxxtxxt# XL#xt# xt# Mxxt# -4/ ZTs ZTs ZTs XTs XTs XTs XTs XTs XTs XTs XTs XTs XTs XTs XTs XT* XT* XT* XT* XT* XT*r Z-JI f 11 I I I I/XTX XTs ZTs ZTs /for (i=l;i<

44、m;i+) j=-l*j;t+=j/i; return t;int m;clrscr ();printf("nPlease enter 1 integer number:"); scanf ("%d", &m);printf ("nThe result is %lfn", fun(m): 答案及評(píng)析:(1)錯(cuò)誤: int fun(int m)正確:double fun(int m)(2)錯(cuò)誤: for (i=l: i<m; i+)正確:for (i=2; i<=m; i+)【解析】錯(cuò)誤:函數(shù)的返回值為實(shí)型數(shù),所以應(yīng)

45、定義為 double 類(lèi)型。錯(cuò)誤2:根據(jù)題目的公式,參加運(yùn)算的數(shù)應(yīng)從2到m,包括m3. 編程題請(qǐng)編寫(xiě)函數(shù) fun(), 它的功能是:求出 1到 1000之內(nèi)能被 5或13整 除、但不能 同時(shí)被5和13整除的所有整數(shù)并將它們放在 a所指的數(shù) 組中,通過(guò)n返回這 些數(shù)的個(gè)數(shù)。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù) main 和其他函數(shù)中的任何內(nèi)容,僅在函數(shù) fun 的花 括號(hào)中填 入所編寫(xiě)的若干語(yǔ)句。試題程序:ftinclude <conio. h>ftinclude <stdio. h> void fun(int *a, int *n)int aa1000, n, k:

46、clrscr();fun(aa, &n);for (k=0;k<n;k+)if (k+l)%10=0)printf ( /?%5d z/, aak):printf ( z/n ”) ;/* 行寫(xiě) 10 個(gè)數(shù)*/elseprintf ("%5dz/, aak):答案及評(píng)析:void fun(int *a, int *n)int i,j=0;for(i=l;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

47、+=i;*n=j;/* 傳回滿足條件的數(shù)的個(gè)數(shù) */【解析】注意本題題目是找出能被 5或13整除但不能同時(shí)被 5和13 整除的所 有整數(shù)。能同時(shí)被 5 和 13整除的整數(shù)一定能被 65 整除,且 不能被 65 整除的 數(shù)不一定就是能被 5 或 13整除的數(shù)。所以可得出程 序中的 if 0 o 按運(yùn)算優(yōu)先 級(jí)可知(i%5=01 | i%13=0),注意,兩邊必 須要有小括號(hào)。模擬試題 ( 六)1. 填空題str是一個(gè)由數(shù)字和字母字符組成的字符串,由變量num傳入字符串長(zhǎng)度。請(qǐng)補(bǔ)充函數(shù) fun(), 該函數(shù)的功能是:把字符串 str 中的數(shù)字 字符轉(zhuǎn)換成數(shù)字并存 放到整型數(shù)組bb中,函數(shù)返回?cái)?shù)組b

48、b的長(zhǎng)度。 例如:str= “Ecdl23e456hui890 ”,結(jié)果為: 123456890。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù) main 和其他函數(shù)中的任何內(nèi)容,僅在函數(shù) fun() 的 橫線上填入 所編寫(xiě)的若干表達(dá)式或語(yǔ)句。試題程序:#include<stdio. h>駅 efine N 80int bbN;int fun (char s , int bb , int num)int i, n=0:for (i=0;i <num:i+) if( 11 )bbn= 2; n+;return 3;main()char strN;int num=0, n, i ;pr

49、intf ("Enter a string: n/z ):gets(str);while(str num) num+;n=fun(str, bb, num);printf ( /z nbb= ) ;for(i=0;i<n;i+)printf("%d",bbi);答案及評(píng)析:1 si>= ' O' &&si<= '9' 2 si- ' O' 3 n【解析】 填空 1:如果當(dāng)前字符的 ASCII 碼大于字符 ' 0'的 ASCII 碼,而小于 字符 '9, 的 A

50、SCII 碼,則說(shuō)明當(dāng)前字符是數(shù)字字符。填 空 2:將數(shù)字字符轉(zhuǎn)換為 數(shù)字的方法是,用當(dāng)前數(shù)字字符的 ASCII 碼 減去字符 ' 0'的 ASCII 碼。填空 3:題目要求函數(shù)返回?cái)?shù)組 bb 的長(zhǎng) 度,而變量 n 記錄了數(shù)字字符的個(gè)數(shù),也就 是數(shù)組 bb 的長(zhǎng)度,所以 函數(shù)應(yīng)該返回 no2. 改錯(cuò)題下列給定程序中,函數(shù) fun () 的功能是:從 n 個(gè)學(xué)生的成績(jī)中統(tǒng)計(jì)出 高于平均 分的學(xué)生人數(shù),人數(shù)由函數(shù)值返回,平均分存放在形參 aver 所指的存儲(chǔ)單元 中。例如輸入 8 名學(xué)生的成績(jī):85 65.5 69 95.5 87 55 62.575則高于平均分的學(xué)生人數(shù)為 4 (

51、 平均分為 74. 312500) 。 請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動(dòng) main 函數(shù),不得增行或刪行,也不得更改程序的結(jié) 構(gòu)。 試題程序:ftinclude <stdio. h> ftinclude <conio. h>駅 efine N 20int fun(float *s, int n, float *aver)、 X、 X、X7#7*!? 7*7*7* 、!> 、!?* 、L*7*4- /Xr r w? z-1L* 、 L*K*7*7*7*7* 、 1*7* 、 L* 、 t*7<>K*X*7<*X* 、 /Xj%

52、XjX XjX XjX XJX XJX XjXXjX XjXl*7<1< /I ( ) I I I I ( 1Xj% XJX ZJ*?y* ? Y? >p? Xp* XjX XjX XjX/int ave , t=0;int count=0, k, i ; for (k=0;k<n;k+) t+=sk;ave=t/n;for (i=0;i<n;i+)/*found*/if (s i <ave)count+;/ 、L?、l*、L?、!>、!* 、L?、!x、!x、! x、L?、!?、!?、l*、L?、L?7*、!x、t?4- z-x -t -t zl 7

53、* L* 、 L* 、 !<* 7<* 、 t* 、 l*l*7*7* 、L* 、L* 、l*7< 、l*7< 、L* 、L* 、L* 、 l*7!*7!*7?* /aver=ave;return count;main ()float s30,aver;int m, i;clrscr ();printf ("nPlease enter m:");scanf ("%d", &m);printf ( /z nPlease enter %d mark : n",m);for(i=0;i<m;i+)scanf (&

54、quot;%f", s+i);printf ( z/ nThe number of students :%dn", fun(s, m, &aver): printf ("Ave=%fn", aver);答案及評(píng)析:(1) 錯(cuò)誤: int ave , t=0: 正確: float ave , t=0. 0:(2) 錯(cuò)誤: if(si<ave)正確: if(si>ave)(3) 錯(cuò)誤: aver=ave:正確: *aver 二 ave;【解析】錯(cuò)誤 1: ave 和 t 分別用來(lái)存放成績(jī)的平均值和總分,應(yīng)為 實(shí)型 數(shù)。錯(cuò)誤 2:根據(jù)題意,

55、找出高于平均分的數(shù),所以此處的關(guān)系運(yùn)算符應(yīng)為 > 錯(cuò)誤 3: aver 是指針,而 ave 是一個(gè)數(shù),不能將一個(gè)數(shù)賦值給一個(gè)指 針,而 要用符號(hào)3. 編程題請(qǐng)編寫(xiě)一個(gè)函數(shù)fun(),它的功能是:比較兩個(gè)字符串的長(zhǎng)度,(不 得調(diào)用C語(yǔ) 言提供的求字符串長(zhǎng)度的函數(shù) ),函數(shù)返回較短的字符串。 若兩個(gè)字符串長(zhǎng)度 相等,則返回第 1 個(gè)字符串。例如,輸入 nanjing <CR> nanchang <CR> (<CR> 為回車(chē)鍵 ) ,函數(shù)將 返回 nanjingo注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù) main 和其他函數(shù)中的任何內(nèi)容,僅在函數(shù) fun 的

56、花 括號(hào)中填 入所編寫(xiě)的若干語(yǔ)句。試題程序:#include<stdio. h>char *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'

57、; ; i+) ;/* 求字符串的長(zhǎng)度 */for (j=O;tj !=0 , ; j+);if(i<=j)/* 比較兩個(gè)字符串的長(zhǎng)度 */return s:/* 函數(shù)返回較短的字符串,若兩個(gè)字符串長(zhǎng)度相等,則返回第 1 個(gè)字符串 */elsereturn t;【解析】 本題中,第 1 個(gè) for 循環(huán)的作用是求出 s 的字符個(gè)數(shù) i, 第 2 個(gè) for 循環(huán)的作用是求出 t 的字符個(gè)數(shù) j, 因?yàn)槿魏窝h(huán)都要控制 一條語(yǔ)句,所以在每 一個(gè) for 循環(huán)條件后面必須要有一個(gè)分號(hào)。本題也可用如下技巧:#include<string. h> /* 一定要注意在最前面加#include<string. h>*/char *fun(char *s, char *t) if (strlen(s) >=strlen(t)return s;else return t;模擬試題 (

溫馨提示

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

評(píng)論

0/150

提交評(píng)論