码迷,mamicode.com
首页 > 其他好文 > 详细

用c解决的小题目

时间:2016-07-25 14:44:56      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:

判断计算机的大、小端存储方式
1
int main() 2 { 3 int a=1; 4 char* p=(char*)&a; 5 if(*p==1) 6 printf("little\n");//小端存储:高位存在地地址, 地位存在高地址 7 if(*p==0) 8 printf("big\n");//大端存储:高位存在高地址,地位存在地地址 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\n",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\n");//arr1是arr旋转得到的
           break;
        }
    }
    if(i>=len)
    printf("no\n");
    return 0;
}

 

用c解决的小题目

标签:

原文地址:http://www.cnblogs.com/JN-PDD/p/5703261.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!