freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

全國計算機(jī)等級考試二級教程——c語言程序設(shè)計課后習(xí)題詳細(xì)答案[1](參考版)

2025-06-22 20:36本頁面
  

【正文】 ② 往回找到字符串的最后一個非空格的位置可用以下語句來完成:while(*p==′ ′) p。也可以調(diào)用求字符串長度的庫函數(shù):p=s+strlen(s)1。while(*p) p++。① 找到字符串的最后一個空格的位置可用以下語句來完成,函數(shù)中另定義一個指針變量p,并把s的值賦給它,使它指向字符串的開始。這只要在最后一個非空格字符的后面加上字符串結(jié)束標(biāo)志(′\0′),就使得最后所有的空格都被刪除了。【分析與解答】(1) 若函數(shù)名為dels,函數(shù)首部如下:void dels( char *s )形參s是一個指向字符串的指針變量。(6) 請編寫主函數(shù),定義所需的數(shù)組和變量,輸入字符串和輸入刪除的位置,調(diào)用函數(shù)后輸出刪除后的字符串,并對各種情況進(jìn)行測試,以檢查程序是否正確。(4) 在進(jìn)行刪除操作前,需要檢查指定刪除位置pos的值是否合理,若不合理就立即返回空值:if(posstrlen(s)||pos[KG*3]=0)return 0。退出循環(huán)時s[i]中已是字符串結(jié)束標(biāo)志,不要忘記:s[i1]=s[i]。 s[i] 。這一過程可用for循環(huán)來完成。形參字符指針s指向被刪字符串的開始,形參pos存放指定的刪除位置,注意被刪字符的下標(biāo)就是pos1?!痉治雠c解答】(1) 。(5) 請編寫主函數(shù),定義所需數(shù)據(jù)結(jié)構(gòu),輸入不同字符串,調(diào)用函數(shù)并輸出函數(shù)值,以判斷函數(shù)是否正確。 }(4) 若因i大于等于j退出循環(huán),則說明是回文,返回1;反之返回0:if(ij)return 0。 s[i]==s[j]){ i[++。(3) 利用循環(huán),通過i++和j ,使i和j不斷分別向后和向前移動,以便引用對稱的元素進(jìn)行比較,若s[i]等于s[j],則當(dāng)前符合回文條件,i和j的移動繼續(xù),否則退出循環(huán);當(dāng)i大于等于j時,說明對稱位置中的字符都已經(jīng)比較過且符合回文條件,因此也應(yīng)退出循環(huán):while(ij amp。(2) 定義變量i和j,使其初值分別為0和最后一個字符所在的下標(biāo),j的值可通過庫函數(shù)求得:i=0。(4) 總結(jié):在mygets函數(shù)中利用while循環(huán)輸入字符的操作在第六章中已多次用到,應(yīng)當(dāng)已經(jīng)熟練掌握;而在myputs函數(shù)中利用指針的移動來輸出所指存儲單元的數(shù)據(jù)也是應(yīng)熟練掌握的算法。)。 }當(dāng)s所指存儲單元中是字符串結(jié)束標(biāo)志時退出循環(huán),然后輸出一個換行符:putchar(39。myputs函數(shù)的首部如下:myputs(char *s)用以下循環(huán)輸出字符串中的每一個字符直到遇到字符串結(jié)束標(biāo)志:while(*s){ putchar(*s)。(2) puts函數(shù)的調(diào)用形式為:puts(str),str是輸出字符串的起始地址。\n39。\n39。\039。這里把讀入的字符存入s所指的存儲單元中,然后移動s,使它指向下一個存儲單元。\n39?,F(xiàn)在,在mygets函數(shù)中規(guī)定用getchar函數(shù)進(jìn)行字符的讀入,在此前,我們已多次使用過此函數(shù),并以回車換行符作為結(jié)束輸入的條件。gets函數(shù)從終端讀入一串字符,直到讀入一個回車換行符為止,字符串中不包括回車換行符,并在最后自動添加39。第十章 字符串習(xí)題分析與解答一、選擇題 【參考答案】 B) 【參考答案】 B) 【參考答案】 C) 【參考答案】 B) 【參考答案】 C) 【參考答案】 A) 【參考答案】 D) 【參考答案】 A) 【參考答案】 C)【參考答案】 C)二、填空題【參考答案】 GFEDCB書上(chp)改為(chp)
【參考答案】 XYZA【參考答案】 SO【參考答案】 10【參考答案】 Itis【參考答案】 [1] strlen(str) 1。(4) 請編寫主函數(shù),定義所需的數(shù)據(jù)結(jié)構(gòu),并調(diào)用函數(shù)來實(shí)現(xiàn)規(guī)定的操作。p[j][i]=t。j[KG*3]+[KG*3]+){ t=p[i][j]。i[KG*3]+[KG*3]+)for(j=0。逆置的過程可由雙重循環(huán)來完成:for(i=0。(2) 在本題中給二維數(shù)組置數(shù)以及對二維數(shù)組進(jìn)行輸出,在此不再重復(fù)。本題中,除對二維數(shù)組中的兩行進(jìn)行對調(diào)外,其他的算法在此之前都已介紹過,由此可知,應(yīng)當(dāng)積累一些基本的算法知識,程序的完成都是由一些基本算法來實(shí)現(xiàn)的。(5) 總結(jié):交換數(shù)據(jù)的算法應(yīng)當(dāng)已很熟悉,本題只是交換兩行中的數(shù)據(jù),這時被交換的兩個元素的行下標(biāo)不同,而列下標(biāo)相同。可在數(shù)組改變前后分別調(diào)用它,以判斷程序的操作是否正確。 a[k][i]=t。i[KG*3]+[KG*3]+){ t=a[0][i]。對調(diào)可用一個for循環(huán)來實(shí)現(xiàn):for(i=0。④ void change(int a[][N],int k)形參行指針a,指向MN的數(shù)組首地址,k接受一維數(shù)組中最大值所在的下標(biāo)。suml函數(shù)的功能是求出a所指二維數(shù)組中每一行元素之和并依次放在rows所指數(shù)組中。getm函數(shù)的功能是通過調(diào)用rand函數(shù)給二維數(shù)組賦值。(2) 程序的功能可由幾個獨(dú)立的函數(shù)來實(shí)現(xiàn)。【分析與解答】(1) 假定程序定義了M行N列的二維數(shù)組。(6) 請讀者自己完成主函數(shù),定義所需的數(shù)組和變量,調(diào)用以上的函數(shù)。就可得到每一行最前面的(1) 、(2)、…、(9)。printf(″\[KG*3]n″)。i[KG*3]=9。(4) 請讀者參照前面的習(xí)題,設(shè)計output函數(shù),輸出九九表。jN。iN。(2) 定義函數(shù)gettab,在二維數(shù)組中存入九九表中的數(shù)據(jù):void gettab( int a[][N] )形參a是一個指向99二維數(shù)組的行指針?!痉治雠c解答】(1) 為了輸出以上表格,需要定義一個99的二維數(shù)組。(5) 請在主函數(shù)中定義數(shù)組和所需的變量。printf(″\[KG*3]n″)。jM。 iN。j[KG*3]+[KG*3]+)c[i][j]=a[i][j]+b[i][j]。i[KG*3]+[KG*3]+)for(j=0。矩陣相加的操作放在一個雙重循環(huán)中:for(i=0。(3) 定義addm函數(shù),對兩個矩陣相加:void addm(int (*a)[M], int (*b)[M], int (*[KG*3]c)[M])這里a、b、c是行指針,分別指向三個二維數(shù)組(N行M列),要求這三個數(shù)組的行和列數(shù)相同。即:c[i][j]=a[i][j]+b[i][j]?!痉治雠c解答】(1) 要進(jìn)行相加的兩個矩陣(假定為a和b)的行數(shù)應(yīng)當(dāng)相等,列數(shù)應(yīng)當(dāng)相等。(7) 總結(jié):對二維數(shù)組的操作,一般可利用一個雙重循環(huán)來進(jìn)行。而在從右到左對角線上的元素,行下標(biāo)從0變化到N1;對于列下標(biāo),當(dāng)行下標(biāo)為0時,列下標(biāo)為Ni1,當(dāng)行下標(biāo)為1時,列下標(biāo)也可用表達(dá)式Ni1求得,其他依此類推。 dg2+[KG*3]=a[i][Ni1]。iN。因?yàn)檫M(jìn)行累加運(yùn)算,注意要給每個一維數(shù)組置初值0。 通過內(nèi)循環(huán)控制變量j從0到N1的變化,把下標(biāo)為0列上的每一個元素的值累加,放入cols所指的、下標(biāo)為0的數(shù)組元素中。 }當(dāng)i=0時,rows[i]+[KG*3]=a[i][j]。j[KG*3]+[KG*3]+){ rows[i]+[KG*3]=a[i][j]。i[KG*3]+[KG*3]+)for(j=0。(4) 在sum函數(shù)中,利用一個雙重循環(huán),分別求出每行的和值放入rows所指數(shù)組中,每列的和值放入cols所指數(shù)組中:for(i=0。jN。iN。第四個函數(shù)用于必要的輸出,請讀者自己設(shè)計。第三個函數(shù):void diagsum( int a[][N],int *dg1, int *dg2 )用于求出方陣的兩個對角線上元素的和值,分別放在形參指針dg1和dg2所指的變量中。第二個函數(shù):void sum(int a[][N],int *rows,int *[KG*3]cols)用于求出二維數(shù)組每一行元素的和值放在形參指針rows所指的一維數(shù)組中,求出二維數(shù)組每一列元素的和值放在形參指針cols所指的一維數(shù)組中。第一個函數(shù):void getm( int(*[KG*3]p)[N] )用于給二維數(shù)組元素賦隨機(jī)數(shù)。(2) 本題可用define命令行定義N來代表一個常量()。② C語言提供的庫函數(shù)rand( )每調(diào)用一次產(chǎn)生一個0到32767的隨機(jī)整數(shù),因此rand()%20將得到一個0到19的隨機(jī)整數(shù)。調(diào)用getone函數(shù)后,可在主函數(shù)中輸出所得的數(shù)據(jù)。這時在數(shù)組中已放入了15個不同的隨機(jī)整數(shù)。 即數(shù)組中不同數(shù)據(jù)的個數(shù)增1。n[KG*3]+[KG*3]+。b. 當(dāng)x不等于a[i]時,i的值不斷增1;當(dāng)i的值等于n時,說明x已與數(shù)組中所有元素都比較過且都不相同,這時也應(yīng)退出循環(huán)。 x!=a[i]) i[KG*3]+[KG*3]+。③ 用以下while循環(huán)從頭到尾去檢查數(shù)組中是否有與x值相同的元素:while(in amp。② i=0。(4) 在以上while循環(huán)中需要進(jìn)行以下4項(xiàng)步驟:① x=rand()%20。函數(shù)的首部如下:void getone(int a[])(2) 函數(shù)中變量x用來存放得到的一個隨機(jī)數(shù),變量n用來存放數(shù)組中已放入的不同的隨機(jī)數(shù)的個數(shù),變量i用作下標(biāo)變量。(4) 在主函數(shù)中輸入待轉(zhuǎn)換的十進(jìn)制數(shù),調(diào)用change函數(shù)后輸出數(shù)組元素中的值,注意,因?yàn)樵赼[0]中放的是二進(jìn)制數(shù)的最低位,因此輸出的順序應(yīng)該從a[n]到a[0]。把存放在一維數(shù)組中二進(jìn)制位的個數(shù)放入n所指的變量中。例如,整數(shù)8轉(zhuǎn)換成的二進(jìn)制數(shù)為100,則在a[0]、a[1]中存放的是0,而a[2]中存放的是1。 x=x/2。while(x){ *a=x%2。把x每次被2除后的余數(shù)放在a當(dāng)前所指的數(shù)組元素中,然后移動指針a指向下一個元素,并使x的值除2;重復(fù)此過程,直到x的值為0?!痉治雠c解答】(1) 若函數(shù)名為change,函數(shù)首部如下:void change(int x,int *a, int *n)形參x中存放一個待轉(zhuǎn)換的十進(jìn)制數(shù),指針a指向一個一維數(shù)組,數(shù)組中每一個元素中存放一個0或1代表一位二進(jìn)制數(shù),指針變量n指向一個整型變量,其中存放在一維數(shù)組中二進(jìn)制位的個數(shù)。(9) 請按題目要求至少對程序運(yùn)行3次,判斷程序是否在各種情況下都能得到正確的結(jié)果。(7) ,在插入前和插入后兩次輸出數(shù)組元素,以判斷操作是否正確。(6) 第四步是使存放數(shù)據(jù)個數(shù)的變量中的數(shù)增1:*n=*n+1。i) a[i+1]=a[i]。這可由以下for循環(huán)來完成:for(i=*n1。(4) 第二個步驟是要把下標(biāo)為j的元素后原有的數(shù)據(jù)移走,但不能改變原來的順序。當(dāng)x的值大于數(shù)組中所有的元素時,由條件:j*n 可知,這時j的值將等于*n并退出循環(huán)。當(dāng)x的值小于a[0]時,不進(jìn)入while循環(huán),j的值為0。 a[j]x) j[KG*3]+[KG*3]+。while(j*n amp。(3) 現(xiàn)在來做第一個步驟:確定插入的位置。③ 把x中的數(shù)放入騰出來的位置中。函數(shù)的首部如下:void insert(int *a,int x,int *n)(2) 若數(shù)組中原有的有序數(shù)列按由小到大排列如下,共12個數(shù):11 14 17 18 19 20 22 24 26 29 30 33若x中的數(shù)為21,我們立刻知道應(yīng)插在何處,插入后數(shù)列如下,則插入后變成有13個數(shù):11 14 17 18 19 20 21 22 24 26 29 30 33因此,對于程序來說應(yīng)當(dāng)做以下4件事:① 能根據(jù)待插的數(shù)據(jù),按“仍然有序的要求”判斷出插入的位置。(4) 總結(jié):,程序基本相同,但在掌握排序算法的基礎(chǔ)上,必須獨(dú)立完成此程序,不要照抄。此處i是內(nèi)循環(huán)的控制變量?!痉治雠c解答】(1) ,而本題是對字符數(shù)組中的元素進(jìn)行由大到小的排序;兩者之間并無大的區(qū)別,只是數(shù)組的類型不同,字符數(shù)組中每個元素存放一個字符,字符的大小依據(jù)每個字符的ASCII碼值的大小。(6) 在主函數(shù)中應(yīng)當(dāng)定義所需的數(shù)組和變量,可以在主函數(shù)中給數(shù)組元素輸入數(shù)據(jù)。(5) 程序需要兩次輸出數(shù)組中元素的值,一次是輸出原始數(shù)組中的值,一次是輸出奇數(shù)數(shù)組中的值。 }在for循環(huán)中逐個引用原始的數(shù)組元素,若元素中的值不能被2除盡(不為0),則把它放入b所指的數(shù)組中;j用作b的下標(biāo),每放入一個奇數(shù)后,j的值加1;注意,j的初值應(yīng)該置0。i[KG*3]+[KG*3]+)if(a[i]%2){ b[j]=a[i]。(3) 在odds函數(shù)中,可通過一個for循環(huán)選出所有的奇數(shù):for(i=0?!痉治雠c解答】(1) 程序要求定義兩個數(shù)組以便存放原始數(shù)據(jù)和從中選出的所有奇數(shù)。雖然該函數(shù)中只是一個for循環(huán),似乎在主函數(shù)中書寫兩次也不麻煩,但養(yǎng)成良好的模塊化程序設(shè)計的風(fēng)格卻是十分重要的。需要注意的是,給n輸入的值不能是1,因?yàn)榈谝粋€元素(下標(biāo)為0)再向前移,下標(biāo)就越界了,同時,n的值也不可大于10,因?yàn)橐阎付ㄖ挥?0個元素。數(shù)組中的值可以在主函數(shù)中輸入,也可定義一個函數(shù)用于輸入數(shù)據(jù)。退出循環(huán)后的printf語句使上面的輸出行結(jié)束。 i[KG*3]+[KG*3]+) printf(″%d″,a[i])。輸出操作可由一個for循環(huán)來完成:for(i=0。(6) 可設(shè)計一個輸出函數(shù),在移動前、后調(diào)用此函數(shù)輸出數(shù)組中的數(shù)據(jù),以便驗(yàn)證操作是否正確。(5) 完成移動之后,應(yīng)使m所指變量中的值減1,表示數(shù)列中的數(shù)據(jù)少了一個;這可由于句:*m=*m1。i[KG*3]+[KG*3]+) a[i1]=a[i]。(4) 可用以下for循環(huán)完成指定的移動:
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1