c语言bn
A. 汉诺塔c语言的问题
n=1时,就直接执行形参a到形参c(按照图片格式打印输出字符串就行了啊)。
其它情况按照递归,先通过c先把小的都移动到b,再把最大的移动到c,最后通过a把b所有盘移动到c。
最后输出就是你图中效果。
#include<stdio.h>
void doMove(int n,char x,char y);
void move(int n,char a,char b,char c);
int main()
{
int n;
scanf("%d",&n);
move(n,'A','B','C');
}
void move(int n,char a,char b,char c)
{
if(n==1)
doMove(n,a,c); //n==1个时直接从a移动到c
else
{
move(n-1,a,c,b); //通过c从a移动到b,移动n-1个盘子
doMove(n,a,c); //然后把要移动的最后一个也就是最大的一个移动到c
move(n-1,b,a,c); //最后通过a从b移动到c,移动n-1个盘
}
}
void doMove(int n,char x,char y)
{
printf("%c move %d号 ->%c ",x,n,y);
}
B. C语言 程序
四个空分别添
a[i]; i++;
b[j];j++;
C. C语言用这个FUN还有DO循环BN
这里打印的是fun(3,5) 和fun(12,8)的值
函数fun中
使用的是辗转相处福。
退出循环时的n值,为参数m n的最大公约数
而a b就是初始的m n值。
这样 返回的
a*b/n就是参数m n的最小公倍数。
于是
fun(3,5) = 15
fun(12,8)=24
输出为
15 24
D. 用c语言编辑bn=an异或bn-1,急!!答出来可支付宝五元!!!!
一般都得用数组完成。所以这一句可写成b[n]=a[n]^b[n-1];即可。其中a、b都是已定义的合法数组。
E. C语言WHILE这个BN不向B2
程序中 先输入一个x值,然后在x>0情况下,赋值b[++n]=x
然后输入下一个x
n初始为0,先自加后取值。
于是在题目输入下
b[1] ~b[6] 六个元素会被赋值为7 5 2 9 4 8
输出n值为6
输出b[2]值为5
然后 对i= 2 3 4 5 6循环
如果b[i]比b[p]小,则p=i
这样 b[p]就是b[1]到b[6]的最小值 ,也就是2
p=3
输出
p= 3b[p]= 2
F. c语言问题求解
#include
#include
using namespace std;
#define N 1000
#define INF 65535
typedef struct
{
int a[N];//记录多项式
int len;//记录多项式的长度
}Ploy;
void ADD(Ploy A,Ploy B,Ploy *M)
/*多项式A与多项式B相加,得到多项式M*/
{
int la=A.len,lb=B.len,i;
void PrintPloy1(Ploy A)
{
int i;
printf(" %dx^%d ",A.a[A.len],A.len);
for(i=A.len-1;i>=1;i--)
{
if(A.a[i]==0) ;
else if(A.a[i]==1) printf(" + x^%d ",i);
else if(A.a[i]==-1) printf(" - x^%d ",i);
else
{
if(A.a[i]>0)
printf("+ %dx^%d ",A.a[i],i);
else
printf("- %dx^%d ",-A.a[i],i);
}
}
if(A.a[0]==0) ;
else if(A.a[0]>0)
printf(" + %d",A.a[0]);//打印x的0次项
else
printf(" - %d",-A.a[0]);
printf("\n");
return ;
}
void PrintPloy2(Ploy A)
{
int i=0;
while(A.a[i]==0) ++i;
if(i==0) printf("%d",A.a[i]);
else {
if(A.a[i]==1) printf("x^%d",i);
else if(A.a[i]==-1) printf("-x^%d",i);
else printf("%dx^%d",A.a[i],i);}
for(++i;i1)
{
printf(" + %dx^%d",A.a[i],i);
}
else if(A.a[i]>id;
while(2)
{
if(id=='1')
{
ADD(A,B,&M);
printf("降幂输出请按1,升幂输出请2!\n");
cin>>sh;
}
G. 关于C语言中小数的保留问题
答案是B
n*100可以把第三位小数变成第一位小数
之后再+0.5的话,如果原来小数部分是大于等于0.5的话,那么整数部分就会加1,否则不变(符合四舍五入)
m = n*100+0.5可以把等号右边的数值的整数部分存下来,就是四舍五入后的结果
m/100.0是还原小数位到2位
H. c语言 正整数如何表示
假如等式结果是x
然后定义int y;
y取x的整数部分,y=x;
最后判断 if(( x-(float)y)== 0.000) // 减去整数部分,判断小数部分是否为0
如果等式成立,就是你要的结果
I. c语言如何实现bn=an异或bn-1
异或符号是 ^
其他的按照循环做就行
int a[100] ={……} ;
int b[100];
b[0]=……;
for (int i=1,i<100;i++)
{
b[i]=a[i]^b[i-1];
}