C語言字元處理經典小程式

2021-08-01 22:43:37 字數 2213 閱讀 7595

首先,說一下原理:用迴圈逐個讀取字元(所有字母均小寫),並儲存到乙個一維字元陣列中直到遇到結束標誌為止。這裡的結束標誌分為三種情況,一是遇到換行符,二是超過了預設的句子長度(這裡設為200),三則是遇到了終止字元(句號.,問號?,感嘆號!)。然後再用乙個迴圈搜尋陣列,找到最後乙個單詞的起始位置,列印這個單詞。重複這個過程,直到到達陣列的起始位置,最後列印終止字元(如果有的話)。源**如下

#include 

int main(void)

, terminating_char;

int i, j, sentence_length = 0, current_word_length = 0;

printf("enter a sentence:");

// 讀入字元並儲存到sentence陣列中直到遇到結束標誌為止

for (i = 0; (ch = getchar()) != '\n' && i < 200; i++) else

}printf("reversal of sentence:");

// 逆序列印

for (i = sentence_length - 1; i >= 0; i--)

// 找到空格後,逐個字元列印這個單詞

for (j = i + 1; j <= i + current_word_length + 1; j++)

printf("%c", sentence[j]);

current_word_length = 0;

} else

}printf("%c\n", terminating_char);

return

0;}

這裡使用的加密技術是最古老的凱撒加密,該方法把一條訊息中的每個字母用字母表中固定距離之後的那個字母替代,如果越過了字母z會繞回字母表的起始位置,並且當使用者輸入加密後的訊息和字母移動的位置數目後還能解密,源**如下

#include 

int main(void)

; int i, message_length = 0, shift_amount;

printf("enter message to be encrypted: ");

for (i = 0; (ch = getchar()) != '\n' && i < 80; i++)

printf("enter shift amount (1-25): ");

scanf("%d", &shift_amount);

printf("encrypted message: ");

for (i = 0; i < message_length; i++)

else

if (message[i] >= 'a' && message[i] <= 'z')

else

}printf("\n");

return

0;}

變位詞指的是相同字母的重新排列,要檢驗乙個單詞是否是變位詞可以通過三個迴圈來實現,第乙個迴圈記錄乙個單詞中每個字母出現的次數,每出現一次就加1,第二個迴圈類似於第乙個迴圈但用減1記錄次數,最後乙個迴圈檢驗這個陣列是否全為0,源**如下

#include 

#include

#include

int main(void)

; char ch;

bool is_anagram = true;

printf("enter first word: ");

for (i = 0; (ch = getchar()) != '\n' && i < 30; i++)

letter_count[tolower(ch) - 'a']++;

printf("enter second word: ");

for (i = 0; (ch = getchar()) != '\n' && i < 30; i++)

letter_count[tolower(ch) - 'a']--;

for (i = 0; i < 26; i++)

}printf("the words are ");

if (is_anagram)

printf("anagrams.\n");

else

printf("not anagrams.\n");

return

0;}

c語言10個經典小程式

程式1 題目 有1 2 3 4個數字,能組成多少個互不相同且無重複數字的三位數?都是多少?1.程式分析 可填在百位 十位 個位的數字都是1 2 3 4。組成所有的排列後再去 掉不滿足條件的排列。2.程式源 main 程式2 題目 企業發放的獎金根據利潤提成。利潤 i 低於或等於10萬元時,獎金可提1...

c語言10個經典小程式

程式1 題目 有1 2 3 4個數字,能組成多少個互不相同且無重複數字的三位數?都是多少?1.程式分析 可填在百位 十位 個位的數字都是1 2 3 4。組成所有的排列後再去 掉不滿足條件的排列。2.程式源 複製 如下 main 程式2 題目 企業發放的獎金根據利潤提成。利潤 i 低於或等於10萬元時...

C語言中的經典小程式1

首先宣告所寫的這些函式都是本人自己實踐過的,每乙個程式都是能夠實際執行的。1.將乙個十進位制的無符號整型資料轉換成二進位制形式表示,用c語言實現。我寫了乙個程式,經過執行能夠實現 include void funcint to ox unsigned int a int main void void...