编写一个C程序,实现以下功能:用一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数原型为:int strcmp(char *p1,char *p2);设p1指向字符串s
題目描述:
編寫一個C程序,實現以下功能:
用一個函數實現兩個字符串的比較,即自己寫一個strcmp函數,函數原型為:
int strcmp(char *p1,char *p2);
設p1指向字符串s1,p2指向字符串s2,要求當s1=s2時,函數返回值為0;
?如果s1≠s2,返回它們二者第一個不相同字符的ASCII碼差值
?(如“BOY”與“BAD”,第二個字母不相同,“O”與“A”之差為79-65=14);
?如果s1>S2,則輸出正值;如s1<s2則輸出負值。
思維難點:
1.怎么判斷字符串是否相等,字符串相等的條件是什么?
2.如何去找到第一個不同的字符,并且返回ascii值?
思路:
首先定義兩個數組,目標數組(輸入終端的英文句子)要求數組(要求的單詞)
1.字符串相等的條件:1).字符串長度相同。2).所有字符字母相同,大小寫不同也不行。
怎么去尋找:通過兩個指針,指向兩個數組的首地址。檢索目標數組的所有元素,與要求數組的第一個元素進行比較,如果存在相同元素,要求數組的指針進一,移到下一位。
2.通過1的思路,兩個指針,在while循環里面進行判斷兩個數組是否存在相同的元素。如果沒有,根據之前學過ascii值的知識,只要用兩個字符相減并返回,再用%d來打印就ok。
答案如下:
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<string.h> #define MAX 500 /*編寫一個C程序,實現以下功能: 用一個函數實現兩個字符串的比較,即自己寫一個strcmp函數,函數原型為: int strcmp(char *p1,char *p2); 設p1指向字符串s1,p2指向字符串s2,要求當s1=s2時,函數返回值為0;如果s1≠s2,返回它們二者第一個不相同字符的ASCII碼差值(如“BOY”與“BAD”,第二個字母不相同,“O”與“A”之差為79-65=14);如果s1>S2,則輸出正值;如s1<s2則輸出負值。 */int strcmp(char* p1, char* p2) {int max = strlen(p1) > strlen(p2) ? strlen(p1) : strlen(p2);int min = strlen(p1) + strlen(p2) - max;int p;p = 0;//長度if (strlen(p1) == strlen(p2)){for (int i = 0; i < max; i++) {//這里用max還是min還是strlen都一樣//字母的asciiif (p1[p] != p2[p])return (p1[p] - p2[p]);else {p++;}}return 0;}else{while (p != min) {if (p1[p] != p2[p])return p1[p] - p2[p];p++;}} } int main() {char str01[MAX], str02[MAX];gets(str01);gets(str02);char tmp = strcmp(str01,str02);printf("%d", tmp); }總結
以上是生活随笔為你收集整理的编写一个C程序,实现以下功能:用一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数原型为:int strcmp(char *p1,char *p2);设p1指向字符串s的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 牛客网SQL篇刷题篇(32-37)
- 下一篇: Leetcode 202.快乐数(哈希容