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

正文內(nèi)容

計(jì)算機(jī)三級(jí)數(shù)據(jù)庫(kù)上機(jī)題庫(kù)-文庫(kù)吧

2025-05-23 22:46 本頁(yè)面


【正文】 */int RData(void)。void WData(void)。void encryptChar(){}void main(){ if (RData()) { printf(!\n\007)。 return。 } encryptChar()。 WData()。}int RData(void){ FILE *fp。 int i = 0。 unsigned char *p。 if ((fp = fopen(, r)) == NULL) return 1。 while (fgets(str[i], 80, fp) != NULL) { p = strchr(str[i], 39。\n39。)。 if (p) *p = 0。 i++。 } maxline = i。 fclose(fp)。 return 0。}void WData(void){ FILE *fp。 int i。 fp = fopen(, w)。 for (i=0。 imaxline。 i++) { printf(%s\n, str[i])。 fprintf(fp, %s\n, str[i])。 } fclose(fp)。}【題目分析】分析題目可知,題中需要解決的問(wèn)題就是實(shí)現(xiàn)encryptChar函數(shù)的功能問(wèn)題,而encryptChar函數(shù)的功能是:實(shí)現(xiàn)按照指定的替代關(guān)系將數(shù)組str中的所有字符進(jìn)行替代,替代后仍存入數(shù)組str的對(duì)應(yīng)位置上。因此本題的關(guān)鍵在于用什么樣的C程序語(yǔ)言實(shí)現(xiàn)指定的替代關(guān)系,之后就可以通過(guò)一個(gè)雙重循環(huán)來(lái)將這篇文章中的所有字符逐個(gè)替換。【解題思路】首先通過(guò)for循環(huán)對(duì)數(shù)組str[i]中的每一個(gè)英文字符按照題目給定的替代算法*pf*11%256計(jì)算出其對(duì)應(yīng)的字符的ASCII值,然后把這個(gè)ASCII值與130和32進(jìn)行比較,如果這個(gè)值小于等于130且大于32,則用這個(gè)ASCII值代替代原值?!敬鸢浮縱oid encryptChar(){ int i。 char *pf。 for (i=0。 imaxline。 i++) { pf = str[i]。 while (*pf != 0) { if (*pf*11%256=130 amp。amp。 *pf*11%25632) *pf = *pf*11%256。 pf++。 } }}容錯(cuò)分析:題目中的條件是:如果計(jì)算后f(p)值小于等于32或大于130,則該字符不變。在程序中這個(gè)條件寫(xiě)成:*pf*11%256=130 amp。amp。 *pf*11%25632。(),請(qǐng)編寫(xiě)函數(shù)DescSort(),其功能是:以行為單位對(duì)字符按從大到小的順序進(jìn)行排序,排序后的結(jié)果仍按行重新存入字符串?dāng)?shù)組str中,最后調(diào)用函數(shù)WData()。原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于80個(gè)字符(含標(biāo)點(diǎn)符號(hào)和空格)。例如,原文:dAeBfC.CcbbAA結(jié)果:fedCBA.cbbCAA注意:部分程序已給出。請(qǐng)勿改動(dòng)主函數(shù)main()、讀數(shù)據(jù)函數(shù)RData()和輸出數(shù)據(jù)函數(shù)WData()的內(nèi)容。include include include char str[50][80]。int maxline = 0。 /* 文章的總行數(shù) */int RData(void)。void WData(void)。void DescSort(void) {}void main(){ if (RData()) { printf(!\n\007)。 return。 } DescSort()。 WData()。}int RData(void){ FILE *fp。 int i = 0。 char *p。 if ((fp = fopen(, r)) == NULL) return 1。 while (fgets(str[i], 80, fp) != NULL) { p = strchr(str[i], 39。\n39。)。 if (p) *p = 0。 i++。 } maxline = i。 fclose(fp)。 return 0。}void WData(void){ FILE *fp。 int i。 fp = fopen(, w)。 for (i=0。 imaxline。 i++) { printf(%s\n, str[i])。 fprintf(fp, %s\n, str[i])。 } fclose(fp)。}【題目分析】分析題目可知,題中需要解決的問(wèn)題就是實(shí)現(xiàn)DescSort函數(shù)的功能問(wèn)題,而DescSort函數(shù)的功能是:實(shí)現(xiàn)以行為單位對(duì)字符按從大到小的順序進(jìn)行排序,排序后的結(jié)果仍按行重新存入字符串?dāng)?shù)組str中。因此本題的關(guān)鍵在于如何判斷將字符串拆分成單獨(dú)的字母,之后就可以通過(guò)一個(gè)三重循環(huán)來(lái)將所有字符逐個(gè)比較字母的大小,并存入數(shù)組str中。【解題思路】首先利用三重循環(huán)中的第一層循環(huán)將字符讀入數(shù)組str1中,然后利用內(nèi)層的二重循環(huán)對(duì)文章中每一行的字符進(jìn)行兩兩比較,較小的字符往行后放,較大的字符往行前放,這樣就實(shí)現(xiàn)了以行為單位對(duì)字符從大到小的排序。在程序中的語(yǔ)句是if (str[i][j] str[i][k])成立,str[i][j]和str[i][k]就交換數(shù)據(jù)?!敬鸢浮縱oid DescSort(void) { int i, j, k, strl。 char ch。 for (i=0。 imaxline。 i++) { strl = strlen(str[i])。 for (j=0。 jstrl1。 j++) for (k=j+1。 kstrl。 k++) if (str[i][j] str[i][k]) { ch = str[i][j]。 str[i][j] = str[i][k]。 str[i][k] = ch。 } }}容錯(cuò)分析:變量j的取值范圍是0到strl1,而變量k的取值范圍是j+1到strl。6函數(shù)RData(),請(qǐng)編寫(xiě)StrCharMove()函數(shù),其功能是:以行為單位把字符串中所有字符的ASCII值右移4位,然后把右移后的字符ASCII值再加上原字符的ASCII值,得到新的字符仍存入原字符串對(duì)應(yīng)的位置上。最后把已處理的字符串仍按行重新存入字符串?dāng)?shù)組original中。最后調(diào)用函數(shù)WData()。原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于80個(gè)字符(含標(biāo)點(diǎn)符號(hào)和空格)。注意:部分程序已給出。請(qǐng)勿改動(dòng)主函數(shù)main()、讀數(shù)據(jù)函數(shù)RData()和輸出數(shù)據(jù)函數(shù)WData()的內(nèi)容。include include include char original[50][80]。int maxline = 0。 /* 文章的總行數(shù) */int RData(void)。void WData(void)。void StrCharMove(void){}void main(){ if (RData()) { printf(!\n\007)。 return。 } StrCharMove()。 WData()。}int RData(void){ FILE *fp。 int i = 0。 char *p。 if ((fp = fopen(, r)) == NULL) return 1。 while (fgets(original[i], 80, fp) != NULL) { p = strchr(original[i], 39。\n39。)。 if (p) *p = 0。 i++。 } maxline = i。 fclose(fp)。 return 0。}void WData(void){ FILE *fp。 int i。 fp = fopen(, w)。 for (i=0。 imaxline。 i++) { printf(%s\n,original[i])。 fprintf(fp, %s\n, original[i])。 } fclose(fp)。}【知識(shí)點(diǎn)播】ASCII碼值的右移運(yùn)算可以通過(guò)運(yùn)算符()來(lái)實(shí)現(xiàn),左移運(yùn)算符為()?!绢}目分析】分析題目可知,題中需要解決的問(wèn)題是實(shí)現(xiàn)StrCharMove函數(shù)的功能問(wèn)題,而StrCharMove函數(shù)的功能是:以行為單位把字符串中所有字符的ASCII值右移4位,然后把右移后的字符ASCII值再加上原字符的ASCII值,得到新的字符仍存入原字符串對(duì)應(yīng)的位置上,最后把已處理的字符串仍按行重新存入字符串?dāng)?shù)組original中。因此本題的關(guān)鍵在于如何進(jìn)行ASCII值的右移運(yùn)算?!窘忸}思路】首先用字符串函數(shù)strlen求出每行的長(zhǎng)度,然后在for循環(huán)語(yǔ)句中將每個(gè)字符轉(zhuǎn)換成ASCII碼值;接著右移4位,即original[i][j]4;再和original[i][j]的值相加;最后將得到的ASCII碼值轉(zhuǎn)換成字符并存入數(shù)組original中?!敬鸢浮縱oid StrCharMove(void){ int i, j, strl。 for (i=0。 imaxline。 i++) { strl = strlen(original[i])。 for (j=0。 jstrl。 j++) original[i][j] += original[i][j]4。 }}容錯(cuò)分析:字符的ASCII碼值右移4位,再和原值相加,用語(yǔ)句original[i][j] += original[i][j]4實(shí)現(xiàn)。(),其功能是:統(tǒng)計(jì)一個(gè)長(zhǎng)度為2的子字符串在另一個(gè)字符串中出現(xiàn)的次數(shù)。例如,假定輸入的字符串為asd asasdfg asd as zx67 asd mklo,子字符串為as,函數(shù)返回值是6。函數(shù)ReadWrite(),并調(diào)用函數(shù)findStr(),最后。注意:部分程序已經(jīng)給出。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)findStr()的花括號(hào)中填入編寫(xiě)的若干語(yǔ)句。include include include int findStr(char *str, char *substr){}void ReadWrite(){ char str[81], substr[10], ch。 int n, len, i = 0。 FILE *rf, *wf。 rf = fopen(, r)。 wf = fopen(, w)。 while (i 25) { fgets(str, 81, rf)。 fgets(substr, 10, rf)。 len = strlen(substr) 1。 ch = substr[len]。 if (ch==39。\n39。 || ch==0x1a) substr[len] = 0。 n = findStr(str, substr)。 fprintf(wf, %d\n, n)。 i++。 } fclose(rf)。 fclose(wf)。}main(){ char str[81], substr[10]。 int n。 printf(輸入原字符串:)。 gets(str)。 printf(輸入子字符串:)。 gets(substr)。 puts(str)。 puts(substr)。 n = findStr(str, substr)。 printf(n=%d\n, n)。 ReadWrite()。}【題目分析】分析題目可知,題中需要解決的問(wèn)題就是實(shí)現(xiàn)findStr函數(shù)的功能問(wèn)題,而findStr函數(shù)的功能是:統(tǒng)計(jì)滿(mǎn)足一個(gè)長(zhǎng)度為2的子字符串在另一個(gè)字符串條件的字符串出現(xiàn)的次數(shù)。因此本題的關(guān)鍵在于如何判斷一個(gè)字符串在另外一個(gè)字符串中。【解題思路】這里用字符指針p和r分別指向字符串和子字符串,在while循環(huán)中比較*r和*p的值,如果兩者的值相等,則r和p分別加1;如果兩者不相等,則對(duì)*r的值進(jìn)行判斷。如果*r的值等于39。\039。,則說(shuō)明在字符串*str中找到了一個(gè)與*substr相匹配的字符串,所以n加1。然后str加1,進(jìn)入下一個(gè)尋找與子字符相匹配循環(huán),直到退出while (*str)循環(huán),返回的整數(shù)n值就是與子字符串相匹配字符串的個(gè)數(shù)?!敬鸢浮縤nt findStr(char *str, char *substr){ int n。 char *p, *r。 n = 0。 while (*str) { p = str。 r = substr。 while (*r) if (*r == *p) { r++。 p++。 } else { break。 } if (*r == 39。\039。) n++。 str++。 } return n。}容錯(cuò)分析:字符串的最后一個(gè)字符是null,所以當(dāng)字符串指針str和r達(dá)到字符串的結(jié)尾時(shí),就自動(dòng)退出while循環(huán)。
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)教案相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1