这道题主要考察指针和字符串(char[]),这是C语言必备的技能,但指针在C++也是重要之极。
题目是大家都熟悉的老调重弹,帮助大家温习之。
不使用库函数,编写函数int strcmp(char *source, char *dest) 相等返回0,不等返回-1。
背景知识:
char string[] = "luck";
1、字符数组的最后添加一个结束字符'\0'就是字符串。
2、用printf("%s",string)即可打印此字符串。
3、数组名string表示数组的首地址。与指针的关系如下代码:
#include <stdio.h> int main() { char string[] = "luck"; char * pString = string; printf("string:%s",pString); return 0; }
最简单:做一个循环,对比两个字符串的元素是否相同,不同则返回-1;循环结束后没有找到不同,返回0.
int strcmp(char *source,char *dest) { while(*source != '\0') { if((*source - *dest) != 0) { printf("return %d \n",*source - *dest); return -1; } else { printf("point ++ \n"); source++; dest++; } } return 0; }
#include <stdio.h> int strcmp(char *source,char *dest) { while(*source) { if(*source - *dest) { printf("return %d \n",*source - *dest); return -1; } else { printf("point ++ \n"); source++; dest++; } } return 0; } int main() { int returnValue; char str1[80],str2[80]; printf("please input a string:"); scanf("%s",str1); printf("please input another string:"); scanf("%s",str2); returnValue = strcmp(str1,str2); if(returnValue == 0) { printf("Same string!"); } else { printf("Different string!"); } return 0; }