菜鸟求教C语言问题

/*这是代码 问题出在这一句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度角仰视求解!

哦,那是不是因为你用scanf("%ul%d",&m,&n)时n为整型、m为无符号长整型
调用to_base_n(n,m)函数时和m、n和形参类型不匹配的原因呢?
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-07-17
scanf("%u%d",&n,&m);本回答被提问者采纳
第2个回答  2010-07-17
这个不可能吧

C语言菜鸟求教:while(*t )中*t 如何理解,是*(t )吗?可是*和 优先级一...
与运算符优先级相同,且都是从右往左结合。对于*t,先理解为先t与*结合,结果是取值,等同于*t,因为*是后置的,所以再与结合,结果是指针增1,等同于t。所以*t的意思是,先取值,后更新指针。例如:假设有一个指针变量p指向一个整型数组中的一个元素,那么 *p 表示取出该元素的值,然后 p++ ...

菜鸟问C语言的问题
if(++a||b++||c++)显然++a表达式值为1,即为真,那么就没有必要再做后面的判断了因为整个结果肯定为真了 所以b++和c++都没有执行,bc还是原值0

c语言菜鸟求帮忙,跪求跪求,54和55两道题求大神解答 要解释 谢谢_百度...
54. 选D。55. 题目有错:应该是“并有以下输入数据”而不是“并有以下输出数据”。除此之外D正确。具体是这样的:第1个&s1接收了2后面的回车,第2个&s1接收了字符U;第1个&s2接收了U后面的空格,第2个&s2接收了字符V;第1个&s3接收了V后面的空格,第2个&s3接收了字符W。

请回答菜鸟一些C语言问题。请详细解释
答案为D 分析:if(b>=10) break;表示当b的取值大于或等于10时,跳出for循环体,换句话说,就是如果if的条件成立的话,不论此时for循环的退出条件达到与否均不再执行for{}内的语句,而直接退出for循环,执行程序中for后面的 printf("%d\\n",a);一句。详细说明:开始时a=1,b值为1判断条件b不...

菜鸟求助 C语言题目:设a=12,求表达式a+=a-=a*=a的值与a+=a-=144有...
=是右结合的,a初值是12,执行a+=a-=a*=a;时是这样来执行的:a*=a;\/\/a值为144 a-=a; \/\/a值为0 a+=a; \/\/a值为0 运行完后a的值为0。如果再运行,则:a-=144; \/\/a的值为-144 a+=a; \/\/a的值为-288 即运行完结果是-288 若a+=a-=144;语句是在a初值为12的条...

C语言菜鸟 求解 下面这个程序哪里错了 怎样改
两点错误如yang_jnu所说。int isprime(int n);后面多余分号,两个等号之间多空格。再有,main函数中的for(i=3;i<n\/2;i++)应改为for(i=2;i<=n\/2;i++)。源程序如下:include"stdio.h"include"math.h"int isprime(int n){ int i,m;m=(int)sqrt(n);for(i=2;i<=m;i++)if(n...

C语言菜鸟问题
这是逗号表达式,执行顺序为从右向左,++i,会先i自增1,然后作为++i这个表达式的返回值;对于i--,在基础的时候就应该知道C程序是用分号“;”分割每条语句的,那么整个的printf()就是一条语句,所以i--这个表达式会先返回i本身的值,然后再该条完整语句结束后,再自减1;对于改到题目:首先执行...

几道c语言题目 菜鸟望高手解答
第一道题:输出的是:0 1 3 4 \/\/因为for循环 i从0到4 但是当i等于2的时候执行了continue,也就是直接跳转到下一次循环,所以2没有输出 第二题:t为2 因为 if-else 结构中的else是和最近一个if相匹配的,又因为if(x<y)不成立,所以直接执行输出语句,即输出2 第三题:3 6 9 因为x被...

菜鸟C语言问题(简单)
1楼你太无稽了...char的取值范围是-127到127,你取130当然有问题。改成127以内就可以得到对应的asc2码,或者用unsigned char。ps:130 asc2码貌似就是乱码

超级菜鸟的c语言问题 哪位大侠能为小弟解惑 在此先谢谢了!!!_百度知...
b=(--a)*(--a);相当于 --a; \/\/ a = 2 --a; \/\/ a = 1 b = a * a; \/\/ a = 1 * 1 因此答案是1 要实现你要求的只要写成b=(--a)*a;就行了

相似回答