测试pc大、小端

判断计算机的大、小端存储方式
1
int main() 2 { 3 int a=1; 4 char* p=(char*)&a; 5 if(*p==1) 6 printf("little ");//小端存储:高位存在地地址, 地位存在高地址 7 if(*p==0) 8 printf("big ");//大端存储:高位存在高地址,地位存在地地址 9 return 0; 10 }

实现一个函数,可以左旋字符串中的k个字符。
AABCD左旋一个字符得到ABCDA
AABC
D左旋两个字符得到BCDAA

#include<string.h> 
void reverse(char* left,char* right)
{
   while(left<right)
   {
       char tmp=*left;
       *left=*right;
       *right=tmp;
       left++;
       right--;
   }
}
int main()
{
    char arr[10]="aabcd";
    int len=strlen(arr)-1;
    int k=0;
    char* pstart=&arr[0];
    char* pend=&arr[len];
    scanf("%d",&k);
    reverse(pstart,pstart+k-1);//if k=3,第一次函数调用结束 baacd 
    reverse(pstart+k,pend);    //if k=3,第二次函数调用结束 baadc 
    reverse(pstart,pend);
    printf("%s
",arr);
    return 0;
}

判断一个字符串是否为另外一个字符串旋转之后的字符串

#include<string.h>
void reverse(char* left,char* right)
{
   while(left<right)
   {
       char tmp=*left;
       *left=*right;
       *right=tmp;
       left++;
       right--;
   }
}
int main()
{
    char arr[10]="aabcd";
    int len=strlen(arr)-1;
    int k=0;
    int i=0;
    char arr1[10]={0};
    char* pstart=&arr[0];
    char* pend=&arr[len];
    gets(arr1);
    for(i=0;i<len;i++)
    {
        reverse(pstart,pstart+k-1); 
        reverse(pstart+k,pend);
        reverse(pstart,pend);
        if(strcmp(arr1,arr))
        {
           printf("yes
");//arr1是arr旋转得到的
           break;
        }
    }
    if(i>=len)
    printf("no
");
    return 0;
}
安心下来做技术,笑是最大的福气
原文地址:https://www.cnblogs.com/JN-PDD/p/5703261.html