1. 程式人生 > 實用技巧 >編寫一個程式,將連個字串s1和s2比較,如果s1 > s2,輸出一個整數;若s1 = s2,輸出0;若s1 < s2,輸出一個負數。不要用strcpy函式。兩個字串用gets函式讀入。輸出的正數或負數的絕對值應是相比較的兩個字串相對應字元的ASCII碼的差值。例如,"A"和“C”相比,由於"A" < "C",應輸出

編寫一個程式,將連個字串s1和s2比較,如果s1 > s2,輸出一個整數;若s1 = s2,輸出0;若s1 < s2,輸出一個負數。不要用strcpy函式。兩個字串用gets函式讀入。輸出的正數或負數的絕對值應是相比較的兩個字串相對應字元的ASCII碼的差值。例如,"A"和“C”相比,由於"A" < "C",應輸出

編寫一個程式,將連個字串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;
}

【結果截圖】