c语言塔
㈠ c语言菱形字母塔代码设计
#include<stdio.h>
intmain()
{intn,i,j;
chara='A';
printf("请输入你想要的三角形塔高度:");
while(scanf("%d",&n)==1)
{for(i=1;i<=n;i++)
{for(j=1;j<=n-i;j++)
printf("");
for(j=0;j<i;j++)
printf("%c",a+j);
for(j=i-2;j>=0;j--)
printf("%c",a+j);
printf("
");
}
for(i=n-1;i>0;i--)
{for(j=1;j<=n-i;j++)
printf("");
for(j=0;j<i;j++)
printf("%c",a+j);
for(j=i-2;j>=0;j--)
printf("%c",a+j);
printf("
");
}
printf("请输入你想要的三角形塔高度:");
}
return0;
}
㈡ C语言 有4个圆塔
if(s1>1&&s2>1&&s3>1&&s4>1)
这种写法也没错的,不过要注意sqrt是返回double类型的,s1到s4都定义了float是不妥的。
这里仅仅是判断>1而不是>=1,所以用if(d1>1&&d2>1&&d3>1&&d4>1)比较巧妙吧
㈢ C语言编程 塔的问题
main()
{
int h=10; /*定义塔高*/
float x1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=2,y2=-2; /*定义各个塔的中心坐标*/
float x,y,d1,d2,d3,d4; /*定义任意点的坐标和该点到各个塔中心的距离*/
printf(“input a point(x,y):”); /*提示输入数据*/
scanf(“%f,%f”,&x,&y); /*输入数据*/
d1=(x-x1)*(x-x1)+(y-y1)*(y-y1); /*任意点到第一个塔的距离*/
d2=(x-x2)*(x-x2)+(y+y2)*(y+y2); /*任意点到第二个塔的距离*/
d3=(x+x3)*(x+x3)+(y-y3)*(y-y3); /*任意点到第三个塔的距离*/
d4=(x+x4)*(x+x4)+(y+y4)*(y+y4); /*任意点到第四个塔的距离*/
if (d1>1 && d2>1 && d3>1 && d4>1) h=0;/*任意点如果不在塔上则该点高度为零,否则高度还是原值,即不变 */
printf(“the high of this point is:%d\n”,h); /*输出结果*/
}
㈣ C语言汉诺塔程序
将以下内容全部复制到新建的源文件中:(本人自己写的,因为你那课本上的代码,没解释,书写不规范,很难理解清楚,所以我直接新写了一个完整的代码,附带详细说明)
#include <stdio.h>
//汉诺塔x层塔从A塔整体搬到C塔,中间临时B塔。
//x层塔是从大到小往上叠放。每次移动只能移动一层塔。并且在移动过程中必须保证小层在上边
//借助B塔可以将x层塔全部从A搬到C上,并且符合要求(在移动过程中大的那块在下边,小的那块在上边)
int main()
{
void tower(int x,char a,char b,char c); //声明函数
int x=5,a='A',b='B',c='C'; //x表示有5层塔,具体要多少层自己修改这个值。abc分别表示ABC塔。
tower(x,a,b,c); //x层塔从a移动到c的全过程,主程序只有这条有效语句
return 0;
}
//以下是tower函数的定义
//参数解析:x层塔放在a上,b是中间塔,c是目标塔。即x层塔要从a搬到c上。
//此函数实现x层塔从a整体转移到c上。以及这个过程是怎么搬的全部过程。
void tower(int x,char a,char b,char c)
{
if(x==1)printf("将%d从%c放到%c\n",x,a,c); //只有1层塔时,直接从a搬到c上。
else //不止1层塔,则先将x-1层塔从a按照规律搬到b上,再将最后一块从a搬到c上,最后再将b上的x-1层塔按照规律搬到c上。
{
tower(x-1,a,c,b); //先将x-1层塔从a按照规律搬到b上,注意参数b放在最后,因为放在最后的参数是准备搬过去的目标塔。
printf("将%d从%c放到%c\n",x,a,c); //将最后一块从a搬到c上
tower(x-1,b,a,c); //最后再将b上的x-1层塔按照规律搬到c上,注意参数b放在开头,因为x-1层是要从b上搬过去的。
}
}
㈤ C语言以下数字塔怎么写出来,求大神
#include<stdio.h>
intmain()
{
inti,j;
for(i=1;i<=6;i++)
{
for(j=0;j<i&&j<5;j++)
printf("%d",i+j);
printf(" ");
}
return0;
}
㈥ C语言中hanoi塔的问题
#include <graphics.h> struct H { int data[15];/*存放每个盘的代号*/ int top;/*每个塔的具体高度*/ }num[3];/*三个塔*/ void move(char x,char y,struct H num[3]);/*移动的具体过程*/ void hanoi(char x,char y,char z,int n,struct H num[3]);/*递归*/ void Init(void);/*初始化*/ void Close(void);/*图形关闭*/ int computer=1;/*自动控制与手动控制的标志*/ int speed=0;/*全局变量speed主要是演示过程的速度*/ void main(void) { Init();/*初始状态*/ Close();/*图形关闭*/ exit(0); } void Init(void)/*初始化*/ { int gd=DETECT,gm; int i,n,color; clrscr(); printf("please input n(n<=10): ");/*输入要演示的盘子数*/ scanf("%d",&n); printf("Please input 1 or 2:\n1.computer 2.people\n"); scanf("%d",&i); if(i==2)/*选择手动控制标志为0*/ computer=0; if(n<1||n>10) n=10;/*越界的话n当10处理*/ if(computer)/*如果是自动控制的话输入速度*/ { printf("please input speed: ");/*输入速度*/ scanf("%d",&speed); } initgraph(&gd,&gm,"c:\\tc"); cleardevice(); for(i=0;i<3;i++) num[i].top=-1;/*三个地方的高度开始都为-1*/ for(i=0;i<n;i++)/*画一开始的塔座A上的盘子*/ { num[0].top++;/*栈的高度加1*/ num[0].data[num[0].top]=i; /*最大的盘子代号为0,依次为1,2,…n-1*/ color=num[0].data[num[0].top]+1;/*盘子的颜色代码为栈顶盘子代号加1*/ setfillstyle(SOLID_FILL,color); bar(100-(33-3*num[0].data[num[0].top]),400-20*i-8,100+ (33-3*num[0].data[num[0].top]),400-20*i+8); /*画矩形*/ } setcolor(YELLOW); outtextxy(180,450,"any key to continue"); settextstyle(0,0,2); outtextxy(90,420,"A"); /*塔座标志*/ outtextxy(240,420,"B"); outtextxy(390,420,"C"); getch();/*接收字符后就执行递归操作*/ hanoi('a','b','c',n,num); } void move(char x,char y,struct H num[3])/*移动的具体过程*/ { int i; char num1[3],num2[3]; sprintf(num1,"%c",x-32);/*将小写变成大写,并转换成字符串输出*/ sprintf(num2,"%c",y-32); setfillstyle(SOLID_FILL,BLACK);/*把原来的地方移去涂黑*/ bar(0,0,640,60); setcolor(RED); outtextxy(150,30,num1);/*输出移动过程*/ outtextxy(200,30,"--->"); outtextxy(310,30,num2); settextstyle(0,0,2); setfillstyle(SOLID_FILL,BLACK);/*把原来的地方移去涂黑*/ bar(100+150*(x-97)-(33-3*num[x-97].data[num[x-97].top]), 400-20*num[x-97].top-8,100+150*(x-97)+(33-3* num[x-97].data[num[x-97].top]),400-20*num[x-97].top+8); num[y-97].top++;/*入栈,目标点的top加1*/ num[y-97].data[num[y-97].top]=num[x-97].data[num[x-97].top];/*在目标点盘子的代号与源点盘子的代号相同*/ num[x-97].top--;/*出栈,原来地方的top减1*/ setfillstyle(SOLID_FILL,num[y-97].data[num[y-97].top]+1);/*盘子颜色代码是栈顶盘子代号加1*/ bar(100+150*(y-97)-(33-3*num[y-97].data[num[y-97].top]), 400-20*num[y-97].top-8,100+150*(y-97)+ (33-3*num[y-97].data[num[y-97].top]),400-20*num[y-97].top+8); if(computer)/*自动控制就用delay*/ delay(speed);/*延时函数*/ else getch();/*手动控制的话就自己按键盘来控制*/ } void hanoi(char one,char two,char three,int n,struct H num[3])/*递归n为盘子数,num为堆栈*/ { if(n==1) move(one,three,num);/*如果盘子为1,将这个盘子从塔座A移动到塔座C*/ else { hanoi(one,three,two,n-1,num);/*将塔座A的前n-1个盘子移到塔座B*/ move(one,three,num);/*将塔座A的第n个盘子移到塔座C*/ hanoi(two,one,three,n-1,num); /*将塔座B的n-1个盘子移到塔座C*/ } } void Close(void)/*图形关闭*/ { getch(); closegraph(); } 能不能追加点悬赏分啊?
㈦ c语言字符数字塔怎么编
是不是这样的叫“字符塔”:
1
1 1
1 1 1
大概可以这样写:
int k = 3;/*塔的层数*/
for(int i=1;i<k;++i)
{
for(int j=k;j>i;--j)
printf(" ");
printf("\n");
for(int j=0;j<i;++j,++j)
printf("%c",'1 ');
}
㈧ C语言--数塔
#include <stdio.h>
int num[100][100];
int main()
{
int C,H,i,j,temp;
scanf("%d",&C);
while(C--)
{
scanf("%d",&H);
for(i=0;i<H;i++)
{
for(j=0;j<=i;j++)
{
scanf("%d",&num[i][j]);
}
}
for(i=H-2;i>=0;i--)
{
for(j=0;j<=i;j++)
{
temp = num[i+1][j];
if(temp<num[i+1][j+1])
temp = num[i+1][j+1];
num[i][j] += temp;
}
}
printf("%d\n",num[0][0]);
}
}
㈨ c语言编写字母塔
#include<stdio.h>
intmain()
{inti,j;
charc='A';
for(i=0;i<7;i++)
{for(j=0;j<7-i;j++)
putchar('');
for(j=0;j<=i;j++)//填j<=i;
putchar(c+i-j);
for(j=j-2;j>=0;j--)//填j>=0;
putchar(c+i-j);
printf(" ");
}
}