循环嵌套while没有执行

问题遇到的现象和发生背景

如下,循环嵌套执行了switch,if,但是while没有执行
大一c语言基础,计算外卖价格,超1000g的部分每500+3元,不足按500,ch =4就+5;ch=0不加

用代码块功能插入代码,请勿粘贴截图

#include
int main()
{
int a,b,i,n;
char ch;
scanf("%d %c",&a,&ch);
switch(ch)
{
case 'n':
if(a<=1000)
{
n=4;
}
if(a>1000)
{
a=a-1000;
i=1;
while(a<0)
{
b=a-500;
i=i+1;
}
n=3i+4;
}
break;
case 'y':
if(a<=1000)
{
n=4+5;
}
if(a>1000)
{
a=a-1000;
i=1;
while(a<0)
{
i++;
a=a-500;
i=i+1;
}
n=5+4+3
i;
}
break;
}
printf("%d",n);
return 0;
}

运行结果及报错内容

input 2000 n
output 12

我的解答思路和尝试过的方法

想过if的算法可行,但是这个我想知道为什么不执行

我想要达到的结果

input 2000 n
output 15

你输入界面截图出来看看
ch输入n和y分别代表什么意思呢?你上面题目也没有提到啊
ch =4就+5;ch=0不加====什么鬼?

你还不如把题目发出来呢,真没看懂。

这个案例应该用不到while循环的,直接采用条件判断就可以达到效果


        if (a <= 1000)
        {
            n = 4;
        }
        if (a > 1000)

这代码既要求a不超过1000,又要求a大于1000,没这样的a呢,所以进入不了while循环。