
菜鸟求教C语言问题
/*这是代码问题出在这一句scanf("%d%ul",&m,&n);能通过,为什么写成这样scanf("ul%d",&n,&m);的话就通不过!!!*/#include<...
/*这是代码 问题出在这一句scanf("%d%ul",&m,&n); 能通过,为什么写成这样scanf("ul%d",&n,&m); 的话就通不过!!!*/
#include <stdio.h>
void to_base_n(unsigned long n,int m);
int main(void)
{
int m;
unsigned long n;
printf("请输入要转换成的进制数和进行转换的十进制数:");
scanf("%d%ul",&m,&n);
printf("等同的%d进制值:",m);
to_base_n(n,m);
putchar('\n');
return 0;
}
void to_base_n(unsigned long n,int m)
{
int x;
if(m>=2&&m<=10)
{
x=n%m;
if(n>=m)
to_base_n(n/m,m);
putchar('0'+x);
}
return;
}
。。上面打错了,重来/*这是代码 问题出在这一句scanf("%d%ul",&m,&n); 能通过,计算结果正确。为什么写成这样scanf("%ul%d",&n,&m); 的话就得不到正确的值!!!*/
回复一楼,你说那里我少打了一个百分号,是手误,我的代码里是没有少的,所以问题还没解决,我的意思是%d和%ul为什么%ul放在%d前面计算结果会出问题,反之则不会。
回二楼,我也觉得很奇怪,但确实如此,我用的c-free写的代码,你复制代码去运行一下就知道了,求答案,很想知道问题出在哪里。
三楼正解,测试正常。但能不能解释下为什么%ul放在前面不行的原因呢,45度角仰视求解! 展开
#include <stdio.h>
void to_base_n(unsigned long n,int m);
int main(void)
{
int m;
unsigned long n;
printf("请输入要转换成的进制数和进行转换的十进制数:");
scanf("%d%ul",&m,&n);
printf("等同的%d进制值:",m);
to_base_n(n,m);
putchar('\n');
return 0;
}
void to_base_n(unsigned long n,int m)
{
int x;
if(m>=2&&m<=10)
{
x=n%m;
if(n>=m)
to_base_n(n/m,m);
putchar('0'+x);
}
return;
}
。。上面打错了,重来/*这是代码 问题出在这一句scanf("%d%ul",&m,&n); 能通过,计算结果正确。为什么写成这样scanf("%ul%d",&n,&m); 的话就得不到正确的值!!!*/
回复一楼,你说那里我少打了一个百分号,是手误,我的代码里是没有少的,所以问题还没解决,我的意思是%d和%ul为什么%ul放在%d前面计算结果会出问题,反之则不会。
回二楼,我也觉得很奇怪,但确实如此,我用的c-free写的代码,你复制代码去运行一下就知道了,求答案,很想知道问题出在哪里。
三楼正解,测试正常。但能不能解释下为什么%ul放在前面不行的原因呢,45度角仰视求解! 展开
3个回答
展开全部
哦,那是不是因为你用scanf("%ul%d",&m,&n)时n为整型、m为无符号长整型
调用to_base_n(n,m)函数时和m、n和形参类型不匹配的原因呢?
调用to_base_n(n,m)函数时和m、n和形参类型不匹配的原因呢?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询