简单的C语言问题
#include<stdio.h>#include<string.h>intn,i=0;chart,a[100]="";char*change7(intn){i=0;wh...
#include<stdio.h>
#include<string.h>
int n,i=0;
char t,a[100]="";
char*change7(int n)
{
i=0;
while(n>0)
{
a[i]=n%7+'0';//记得加'0',把数字变成字符
n=n/7;
i++;
}
a[i]='\0';
for(int n=0,j=i-1; n<j; n++,j--)
{
t=a[j];
a[j]=a[n];
a[n]=t;//将十进制转化为七进制
}
return a;
}
char*change9(int n)
{
i=0;
while(n>0)
{
a[i]=n%9+'0';//记得加'0',把数字变成字符
n=n/9;
i++;
}
a[i]='\0';//将十进制转化为九进制并且逆向取值
return a;
}
int main()
{
int x;
scanf("%d",&x);
printf("%s ",change7(x));
printf("%s ",change9(x));
}
eg.输入70输出130 77.
这个两个函数就是将十进制转化为七进制,将十进制转化为逆向的九进制。分开输出change7和change9的时候是正确的。。但是当change7和change9同时输出的时候就出现问题了。
int main()
{
int x;
scanf("%d",&x);
printf("%s %s",change7(x),change9(x));
}
改成这样的时候输入70输出的都是130 展开
#include<string.h>
int n,i=0;
char t,a[100]="";
char*change7(int n)
{
i=0;
while(n>0)
{
a[i]=n%7+'0';//记得加'0',把数字变成字符
n=n/7;
i++;
}
a[i]='\0';
for(int n=0,j=i-1; n<j; n++,j--)
{
t=a[j];
a[j]=a[n];
a[n]=t;//将十进制转化为七进制
}
return a;
}
char*change9(int n)
{
i=0;
while(n>0)
{
a[i]=n%9+'0';//记得加'0',把数字变成字符
n=n/9;
i++;
}
a[i]='\0';//将十进制转化为九进制并且逆向取值
return a;
}
int main()
{
int x;
scanf("%d",&x);
printf("%s ",change7(x));
printf("%s ",change9(x));
}
eg.输入70输出130 77.
这个两个函数就是将十进制转化为七进制,将十进制转化为逆向的九进制。分开输出change7和change9的时候是正确的。。但是当change7和change9同时输出的时候就出现问题了。
int main()
{
int x;
scanf("%d",&x);
printf("%s %s",change7(x),change9(x));
}
改成这样的时候输入70输出的都是130 展开
7个回答
展开全部
这是由于转换时,把答案放在a[]中,输出完成后
printf("%s ",change7(x));
再执行printf("%s ",change9(x));,把答案放在a[]中,输出完成后再输出就可以了的。
但是,printf("%s %s",change7(x),change9(x));时,先执行,change7(x),把答案放在a[]中,再执行,change9(x),把答案放在a[]中,全部调用完成后,再输出两次a[](因为9进制的内容把7进制的内容覆盖了,所以,就输出两个相同的值了)。
如果两次转换分别放在不同的数组中,就不会出现上面的问题了。
printf("%s ",change7(x));
再执行printf("%s ",change9(x));,把答案放在a[]中,输出完成后再输出就可以了的。
但是,printf("%s %s",change7(x),change9(x));时,先执行,change7(x),把答案放在a[]中,再执行,change9(x),把答案放在a[]中,全部调用完成后,再输出两次a[](因为9进制的内容把7进制的内容覆盖了,所以,就输出两个相同的值了)。
如果两次转换分别放在不同的数组中,就不会出现上面的问题了。
展开全部
因为你传的是指针 相当于这样
change9(x);
change7(x);
printf("%s %s", a, a);
change9(x);
change7(x);
printf("%s %s", a, a);
追问
那为什么分开输出的时候结果是正确的。。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
printf(((a+b+c)%2
==
0)
&&
((a%2
==
1)
||
(b%2
==1))
?"YES"
:
"NO");
解释:
2奇1偶的和肯定是偶数,如果为偶数,那么剩下3个数只要有一个奇数就可以输出YES
==
0)
&&
((a%2
==
1)
||
(b%2
==1))
?"YES"
:
"NO");
解释:
2奇1偶的和肯定是偶数,如果为偶数,那么剩下3个数只要有一个奇数就可以输出YES
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
答案有什么用啊
你要告诉他怎么来的噻
(m=a>b)&&(n=c>d)
先执行m=a>b
因为>的优先级大于=所以先比较a,b,又a!>b所以 m=0。又因为是&&(当左边不为真时就不执行右边的)所以n=c>d就不执行。故n=7
你要告诉他怎么来的噻
(m=a>b)&&(n=c>d)
先执行m=a>b
因为>的优先级大于=所以先比较a,b,又a!>b所以 m=0。又因为是&&(当左边不为真时就不执行右边的)所以n=c>d就不执行。故n=7
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
scanf和printf是格式化输入输出函数。%lf表示将要输入/输出double型的数据,%f表示将要输入/输出float型的数据。把double改成float的话,前面你告诉函数要输入/输出double型的数据,现在却输入/输出float型的,当然会出错了。如果要输入/输出float型数据,把%lf改成%5f也可以。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询