输入字母后自动跳出循环

编写一个十六进制转十进制的程序:

#include
#include
#define a 10
#define b 11
#define c 12
#define d 13
#define e 14
#define f 15
int main()
{
    int  h[100],y=0,z,k,i,j;
    printf("请输入数字的位数\n");
    scanf("%d",&k);
    printf("请从低位到高位输入数字:\n") ;
    for(i=0;i<=k-1;i++)
    {
    scanf("%d",&z);
    h[i]=z;
    }
    for(i=0;i<=k-1;i++)
    {
     h[i]=h[i]*pow(16,i);
    }
    for(i=0;i<=k-1;i++)
    y+=h[i];
    printf("十进制数为%d",y);
    return 0;
}

对于1-9的数结果十正常的,但是一输入a-f中的一个就会自动跳出循环并计算.例如输入25a4

img

本人初入c可能对某些特点不太了解
希望有高人指点.

%d只能接收int,输入字符就出错了