XM
1 ascii的值 'A' 65 
2 for 循环终止条件 用*p 表示 取完所有
3 指针 直接++,直接加了对应类型的地址长度
4 scanf("%s",bfr); 输入 %d整形 %s 字符串 %c 字符。内容给到后面的数组里
  scanf 后面一定要跟地址!!!
  scanf 不能输入空格
统计字母 直接用一个数组去统计
XM2描述
世界上有10种人,一种懂二进制,一种不懂。那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么?
int countBitDiff(int m, int n ) {
   int i, cnt = 0;
   
    for(i = 0;i<32;i++)
    {
        if(((n>>i)&1) != ((m>>i)&1))
           {
               cnt++;
           }
  }// write code here
  return cnt;
}
XM4描述
继MIUI8推出手机分身功能之后,MIUI9计划推出一个电话号码分身的功能:首先将电话号码中的每个数字加上8取个位,然后使用对应的大写字母代替 ("ZERO", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE"), 然后随机打乱这些字母,所生成的字符串即为电话号码对应的分身。输入描述:
第一行是一个整数T(1 ≤ T ≤ 100)表示测试样例数;接下来T行,每行给定一个分身后的电话号码的分身(长度在3到10000之间)。输出描述:
输出T行,分别对应输入中每行字符串对应的分身前的最小电话号码(允许前导0)。#include "stdio.h"
#include "stdlib.h"
int main() {
    char bfr[10001];
    int T;
    scanf("%d",&T);
    int letterCount[26];
    while(T--)
    {
        scanf("%s",bfr);
        memset(letterCount,0,26*sizeof(int));
        char* p;
        for(p=bfr;*p;p++)
        {
            letterCount[*p-'A']++;
        }  
        int numCount[10];        
        /*
        0 ZERO  Z        2->0 
        1 ONE      O     3->1 
        2 TWO   W        4->2 
        3 THREE    R     5->3 
        4 FOUR  U        6->4 
        5 FIVE     F     7->5 
        6 SIX   X        8->6 
        7 SEVEN    S     9->7 
        8 EIGHT G        0->8 
        9 NINE        I  1->9 
        ABCDEFG  HIJ K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z
        0123456  789 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 
        */
        numCount[0] = letterCount[25];
        numCount[2] = letterCount[22];
        numCount[4] = letterCount[20];
        numCount[6] = letterCount[23];
        numCount[8] = letterCount[6];
        
        numCount[1] = letterCount[14]-numCount[0]-numCount[2]-numCount[4];
        numCount[3] = letterCount[17]-numCount[0]-numCount[4] ;
        numCount[5] = letterCount[5]-numCount[4];
        numCount[7] = letterCount[21]-numCount[5];
        numCount[9] = (letterCount[13]-numCount[1]-numCount[7])/2;
        while(numCount[8]--) printf("%c",'0');
        while(numCount[9]--) printf("%c",'1');
        while(numCount[0]--) printf("%c",'2');
        while(numCount[1]--) printf("%c",'3');
        while(numCount[2]--) printf("%c",'4');
        while(numCount[3]--) printf("%c",'5');
        while(numCount[4]--) printf("%c",'6');
        while(numCount[5]--) printf("%c",'7');
        while(numCount[6]--) printf("%c",'8');
        while(numCount[7]--) printf("%c",'9');   
        printf("\n");
    }
}
XM5描述
给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前后没有空格。 比如: (1) “hello xiao mi”-> “mi xiao hello”输入描述:
输入数据有多组,每组占一行,包含一个句子(句子长度小于1000个字符)输出描述:
对于每个测试示例,要求输出句子中单词反转后形成的句子int main() {
  int t,letterlen = 0,wordlen = 1;
  char* p;
  char input[1000];
  int wordnum[50];
  int wordcnt = 0;
  gets(input);
  wordnum[0]=0;
  for(p=input;*p;p++)
  {
      if(*p == ' ')
      {
        wordnum[++wordcnt] = letterlen+1;
        wordlen++;
      }
      letterlen++; 
  }
    input[letterlen] = ' ';
  for(t= wordlen-1;t>=0;t--)
  {
    while(input[wordnum[t]]!=' ')
    {
        printf("%c",input[wordnum[t]++]); 
    }
    printf("%c",' ');
  }      
}
XM6描述
现在有一棵合法的树,树的节点都是用数字表示,现在给定这棵树上所有的父子关系,求这棵树的高度输入描述:
输入的第一行表示节点的个数n(2 ≤ n ≤ 1000,节点的编号为0到n-1)组成, 下面是n-1行,每行有两个整数,第一个数表示父节点的编号,第二个数表示子节点的编号输出描述:
输出树的高度,为一个整数 最简单的答案,没有更简单了#include 
 
int main() {
    int n,a,b,height = 0;
    scanf("%d",&n);
    int depth[1000];
    depth[0] = 1;
    for(int k = 0;k
        scanf("%d%d",&a,&b);
        depth[b] = depth[a] + 1;
        if(depth[b] > height)
        {
            height = depth[b];
        }
    }
   printf("%d",height);
}
XM17.描述
找出单向链表中的一个节点,该节点到尾指针的距离为K。链表的倒数第0个结点为链表的尾指针。要求时间复杂度为O(n)。链表结点定义如下:
struct ListNode
{
int m_nKey;
ListNode* m_pNext;
}
链表节点的值初始化为1,2,3,4,5,6,7。
输入描述:
该节点到尾指针的距离K输出描述:
返回该单向链表的倒数第K个节点,输出节点的值typedef struct ListNode
{
int m_nKey;
struct ListNode_t* m_pNext;
}ListNode_t;
ListNode_t list[8];
void Listinitfunc(ListNode_t* pxlist,int len)
{
    for(int i = 0;i
        pxlist[i].m_nKey = i;
        pxlist[i].m_pNext =  &pxlist[i+1].m_nKey;
    }
        pxlist[len-1].m_nKey =  len-1;
        pxlist[len-1].m_pNext =  &pxlist[0].m_nKey;
}
int Listfindfunc(ListNode_t* pxlist,int x,int len)
{
    return pxlist[len - x].m_nKey;
}
void main()
{
    int x,y;
    scanf("%d",&x);
    Listinitfunc(list,8);
    y = Listfindfunc(list,x,8);
    printf("%d",y);
    
}
XM36描述
输入参数为字符串型的n维数组,数组的每一项值为数组 或 int型数字。请实现一个函数,可以获取列表嵌套列表的最大深度为多少。输入描述:
输入参数为字符串型的 n维数组,列表的每一项值为数组 或 int型数字。数组内的数组,每一项值,也可以是数组 或 int型数字。输出描述:
int型数字,表示数组嵌套的深度int main() {
    char* p;
    char bfr[65535];
    int x = 0,y= 0;
    //scanf("%s",bfr);
    gets(bfr);
    for(p=bfr;(*p)!='\0';p++)
    {
        if(*p =='[')
        {
            x++;
            if(x>y)
            {
                y=x;
            }
        }
        else if(*p ==']')
        {
            x--;
        }
    }
        printf("%d",y);
   return 0;
}