64,654
社区成员
发帖
与我相关
我的任务
分享
strcmp源码
int __cdecl strcmp (
const char * src,
const char * dst
)
{
int ret = 0 ;
while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst&&*src)
++src, ++dst;
if ( ret < 0 )
ret = -1 ;
else if ( ret > 0 )
ret = 1 ;
return( ret );
}
int main()
{
int a = 0x000f;
int b = 1234;
int c = b;
int d=0; //结果在d中
for(int i=0;i<4;i++)
{
d += c&a;
c = b>>4;
}
return d;
}
#include <stdio.h>
int Calc(unsigned short n){
char strTest[16];
sprintf(strTest, "%x", n);
int bit;
int sum = 0;
for(int i=0; i<4; ++i){
sscanf(strTest+i, "%1x", &bit);
sum += bit;
}
return sum;
}
int main()
{
printf("%d\n", Calc(65535));
return 0;
}
#include <iostream>
#include <string.h>
using namespace std;
int cmp(char *s);
int main()
{
char s[100];
cin>>s;
if(cmp(s)){
cout<<"Yes"<<endl;
}
else{
cout<<"No"<<endl;
}
return 0;
}
int cmp(char *s){
int num=strlen(s);
for(int i=0;i<num/2;i++){
if(s[i]==s[num-1-i]){
;
}
else{
return 0;
}
return 1;
}
}
3)#include <iostream>
#include <string.h>
#include <iomanip>
using namespace std;
int my_strcmp(const char *a,const char *b);
int main()
{
string a,b;
cin>>a>>b;
const char *char_a,*char_b;
char_a=a.c_str();
char_b=b.c_str();
switch (my_strcmp(char_a,char_b))
{
case 0:
cout<<"eq"<<endl;
break;
case -1:
cout<<"small"<<endl;
break;
case 1:
cout<<"big"<<endl;
break;
default:
cout<<"Wrong"<<endl;
break;
}
return 0;
}
int my_strcmp(const char *a,const char *b){
int i,j,m;
i=strlen(a);
j=strlen(b);
if(i>j){
m=j;
}
else if(j>i){
m=i;
}
else{
m=i;
}
for(int n=0;n<m;n++){
if(a[n]-b[n]>0){
return 1;
}
else if(a[n]-b[n]<0){
return -1;
}
else {
;
}
}
if(i==j){
return 0;
}
else if(i>j){
return 1;
}
else {
return -1;
}
}
4)
#include <iostream>
#define N 5
using namespace std;
int recursion(int *a,int n);
int no_recursion(int *a,int n);
int main()
{
int a[N];
for(int i=0;i<N;i++){
cin>>a[i];
}
int i,j;
i=recursion(a,4);
j=no_recursion(a,4);
cout<<i<<endl<<j;
return 0;
}
int recursion(int *a,int n){
if(n==1){
return a[n-1];
}
else{
return a[n-1]+recursion(a,n-1);
}
}
int no_recursion(int *a,int n){
int sum=0;
for(int i=0;i<n;i++){
sum+=a[i];
}
return sum;
}
char chs [M];
char ch;
int count = 0;
while((ch = getchar()) != '!')
{
chs[count++] = ch;
}
bool flag = true;
int left;
int right;
for(left=0,right=count-1; left < count/2 -1; left++,right--)
{
if(chs[left] != chs[right])
{
flag = false;
break;
}
}
if(flag == true)
{
printf("是回文数\n");
}
else
{
printf("不是回文数\n");
}
第三题:
较精简的,不过可能会不完善
int MyStrcmp(const char *str1,const char *str2)
{
while(*str1 == *str2)
{
str1++;
str2++;
}
if(*str1 > *str2)
return 1;
else if(*str1 < *str2)
return -1;
else
return 0;
}
第四题别人贴过了#include <iostream>
using namespace std;
int sun(int a[], int n);//非递归
int sun1(int a[], int n);//递归
int main()
{
int a[] = {1, 2, 3, 4};
cout << sun(a, 2) <<endl;
cout<< sun1(a, 2) <<endl;
return 0;
}
int sun(int a[], int n)
{
int sum = 0;
for (int i = 0; i<n; ++i)
{
sum += a[i];
}
return sum;
}
int sun1(int a[], int n)
{
if (n == 1)
{
return a[0];
}
else
{
return a[n-1] + sun1(a, n-1);
}
}