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