请教一个C语言问题

这是一个oj题,要求为输入一个整形,然后将此整形数每一位上的数字翻译为英文并用"-"连接:
sample input:
12
sample output:
one-two

代码如下:

#include <stdio.h>

int main(){

int t; //输入t,表示有t组测试数据

int num;;

int count = 0;

int bit[100]; //储存将要输入的"num"的每一位数字的数组

scanf("%d",&t);

while(t --){

scanf("%d",&num);

for(int i = 0;i < 32;i ++) //32是题目要求输入的num长度不超过32

if(num != 0){

bit[i] = num % 10;

num /= 10;

count ++;

}

for(int j = count; 0 <= j; j --){

switch(bit[j]){

case 0:

printf("zero-");

break;

case 1:

printf("one-");

break;

case 2:

printf("two-");

break;

case 3:

printf("three-");

break;

case 4:

printf("four-");

break;

case 5:

printf("five-");

break;

case 6:

printf("six-");

break;

case 7:

printf("seven-");

break;

case 8:

printf("eight-");

break;

case 9:

printf("nine-");

break;

default:break;

}

}

printf("\b\n"); //将结尾的"-"删除并换行

}

return 0;

}

问题在于,无论输入什么数,输出的结果总会在最前面多出此数位数个"zero-":
图片描述

请问该如何debug?已经卡了好几小时了

回答:

第二个for循环中 int j = count 改为 int j = count -1;
在最后的printf("bn");后count置零 count = 0;

回答:

while循环中最开始部分初始化 count=0,
第二个 for循环中 0<=j改为,0<j

回答:

1、scanf("%d",&num);的上一行或下一行加入count = 0;
2、第二个for循环应该是从count-1开始的,应该改为for(int j = count-1; j >= 0; j--)

以上是 请教一个C语言问题 的全部内容, 来源链接: utcz.com/p/195152.html

回到顶部