大神帮小弟我看下错哪了(哈希表按手机号为关键字查找)

大神帮我看下哪里错了(哈希表按手机号为关键字查找)
 //creathash函数里的for循环里有错,j在33到41行之间j发生了变化,怎么回事呢??(附图)大神帮小弟我看下错哪了(哈希表按手机号为关键字查找)大神帮小弟我看下错哪了(哈希表按手机号为关键字查找)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 100
typedef struct
{
    char phone[11];
    char name[20];
    char stuid[8];
}DATA;
void inserthash(DATA* hash,int m,char* dataphone,char* dataname,char *datastuid )//????
{
    int i;
    i=(dataphone[9]-'0')*10+(dataphone[10]-'0');
    while(hash[i].phone[0]!='\0')
    {
       // i=(++i) % m ;
       ++i;
       i%=m;
    }
    strcpy(hash[i].phone,dataphone);
    strcpy(hash[i].name,dataname);
    strcpy(hash[i].stuid,datastuid);
}
void creathash(DATA* hash,int m,int n)
{
    int j;
    char dataphone[11],dataname[20],datastuid[8];
    printf("n=%d\n",n);
    for(j=0;j<n;j++)
    {
        printf("j1=%d\n",j);
        if(j==0)
            printf("\n输入学生手机号:");
        else
        printf("\n输入下一个学生手机号:");
        scanf("%s",dataphone);
        printf("\n输入学生姓名:");
        scanf("%s",dataname);
        printf("\n输入学生学号:");
        scanf("%s",datastuid);
        printf("j2=%d\n",j);
        inserthash(hash,m,dataphone,dataname,datastuid );//????
        printf(".....下一次循环...\n");
    }
        printf("输入结束\n");
}
int hashsearch(DATA* hash,int m,char* key)
{
    int i;
    i=(key[9]-'0')*10+(key[10]-'0');
    while(strcmp(hash[i].phone,"\0")!=0&&strcmp(hash[i].phone,key)!=0)
    //i=(++i)%100;
    ++i;
    i%=m;
    if(strcmp(hash[i].phone,"\0")==0)
        return -1;
    else
     return i;
}

int main()
{
    char find[11];
    int num,k;
    DATA hash[SIZE];
    printf("输入学生个数:");
    scanf("%d",&num);
    creathash(hash,100,num);
    printf("\n输入查找的手机号");
    scanf("%s",find);
    k=hashsearch(hash,100,find);
    if(k<0)
    printf("查找失败\n");
    else
    {
        printf("序号为%d\n",k);