请教一个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