編寫一個程式,將連個字串s1和s2比較,如果s1 > s2,輸出一個整數;若s1 = s2,輸出0;若s1 < s2,輸出一個負數。不要用strcpy函式。兩個字串用gets函式讀入。輸出的正數或負數的絕對值應是相比較的兩個字串相對應字元的ASCII碼的差值。例如,"A"和“C”相比,由於"A" < "C",應輸出
阿新 • • 發佈:2020-07-17
編寫一個程式,將連個字串s1和s2比較,如果s1 > s2,輸出一個整數;若s1 = s2,輸出0;若s1 < s2,輸出一個負數。不要用strcpy函式。兩個字串用gets函式讀入。輸出的正數或負數的絕對值應是相比較的兩個字串相對應字元的ASCII碼的差值。例如,"A"和“C”相比,由於"A" < "C",應輸出負數,同時由於‘A’與‘C’的ASCII碼差值為2,因此應輸出"-2"。同理:“And”和"Aid"相比較,根據第2個字元比較結果,"n"比"i"大5,因此應輸出"5"。
【答案解析】
字串比較規則:從前往後逐個字元進行比較,相等時繼續往後,不相等時返回該位置兩個字元差值。
【程式碼實現】
#include <stdio.h> int main() { int ret = 0; int index = 0; char s1[100] = { 0 }; char s2[100] = { 0 }; printf("請輸入s1:"); gets(s1); printf("請輸入s2:"); gets(s2); // 將s1和s2中的字元從前往後逐個進行比較,相等繼續往後, // 不相等時ret中結果不為0,!ret則為0 迴圈結束 // 如果一個走到末尾,一個未走到末尾 ret也不為0, !ret為0,迴圈結束 // 如果兩個字串相等,同時達到末尾,迴圈結束 while (!(ret = s1[index] - s2[index]) && '\0' != s1[index] && '\0' != s2[index]) { ++index; } printf("%d\n", ret); return 0; }
【結果截圖】