函数不调用了,多谢帮忙。
我编了一个极其弱智的数制转换和序,但在分步运行时,它不调用我定义的函数,想了半天也没解决,还请各位指点。我用的是TC4。3(也不知道是哪个版本),还需要用return返回。用TC2。0就不一定要加返回语句,但也不调用函数,麻烦你们给看一下,谢谢了。
# include <stdio.h>
# include <conio.h>
int Bin(int i)
{
int j,BinArr[15];
for (j=0;i!=0;j++)
{
BinArr[j]=i%2;
i/=2;
}
while (j<0)
{
printf("%d",BinArr[j]);
j--;
} // 一定要加reutrn么?
}
void main()
{ int n,t;
clrscr();
printf("Please Input a number: \n");
scanf("%d",&n);
printf("10---2 Press1\n 10---16 Press 2\n 10---2 and 10---16 Press3"); //是转换为二进制还是十六进制,或是都转换,下面先只实现一个.
scanf("%d",&t);
switch (t)
{
case 1:Bin(n); break; //就是这个函数不被调用,为什么?
// case 2:Hex(n); break;
// case 3:Bin(n); Hex(n); break;
}
getch();
}
问题点数:50、回复次数:14Top
1 楼freefalcon(心宇—消失中...)回复于 2004-05-03 11:48:26 得分 25
怎么会不调用呢?我在VC下测试可以的
int Bin(int i)要有return,你的编译器难道没有给出错误或者警告信息?Top
2 楼wdy0725()回复于 2004-05-03 11:52:35 得分 0
是的,什么错误警告都没有,怎么回事,我搞了半天了。
Top
3 楼freefalcon(心宇—消失中...)回复于 2004-05-03 11:53:04 得分 0
有一种情况不会调用,就是你的输入有误Top
4 楼freefalcon(心宇—消失中...)回复于 2004-05-03 11:54:48 得分 0
在switch (t)前加断点跟踪一下,看t的值为多少Top
5 楼wdy0725()回复于 2004-05-03 11:57:07 得分 0
我又试了一次,没有return是可以的,不过有一个警告,但没结果输出。Top
6 楼wdy0725()回复于 2004-05-03 12:00:56 得分 0
断点跟踪?我没用过,新手。Top
7 楼wdy0725()回复于 2004-05-03 12:03:14 得分 0
我用F8分步运行,它确实选择了case 1,可没结果。Top
8 楼cngdzhang()回复于 2004-05-03 12:13:58 得分 25
我改了一下,好了:)
断点要设在Bin函数里面
# include <stdio.h>
# include <conio.h>
void Bin(int i) //改为void
{
int j,BinArr[15];
for (j=0;i!=0;j++)
{
BinArr[j]=i%2;
i/=2;
}
j--; //这里j加多了一,要先减去1
while (j>=0) //这里不是while (j<0),因为j本来就是正数,否则循环不执行的
{
printf("%d",BinArr[j]);
j--;
}
}
void main()
{ int n,t;
clrscr();
printf("Please Input a number: \n");
scanf("%d",&n);
printf("10---2 Press 1\n10---16 Press 2\n10---2 and 10---16 Press 3\n"); //是转换为二进制还是十六进制,或是都转换,下面先只实现一个.
scanf("%d",&t);
switch (t)
{
case 1:Bin(n); break;
// case 2:Hex(n); break;
// case 3:Bin(n); Hex(n); break;
}
getch();
}
Top
9 楼freefalcon(心宇—消失中...)回复于 2004-05-03 12:14:13 得分 0
while (--j>=0) //////////<<<<<<<<<<<<<<<<<<注意改了这里
{
printf("%d",BinArr[j]);
} // 一定要加reutrn么?
Top
10 楼freefalcon(心宇—消失中...)回复于 2004-05-03 12:15:12 得分 0
555,楼上抢先了Top
11 楼cngdzhang()回复于 2004-05-03 12:16:33 得分 0
F7才是跟入函数
F8是把一个函数当作一条语句执行
Top
12 楼wdy0725()回复于 2004-05-03 12:21:17 得分 0
我试过了,成功了,太感谢你们了,再次感谢!!Top
13 楼wdy0725()回复于 2004-05-03 12:23:58 得分 0
F7,F8,哦,明白了,谢谢!Top
14 楼liushuaiboy(标准菜鸟)回复于 2004-05-03 14:07:02 得分 0
markTop




