1. c语言实现中国象棋马的走法
参考清华大学出版社出版的《程序设计基础》第二版,在附录A程序调试中,有一个国际象棋跳马的程序,用的是回溯策略。你可参考之,只需将棋盘从8*8改为9*10即可。
2. C语言编程:100匹马驼100担货,大马一匹驼3担,中马一匹驼2担,小马两匹驼一担。
大马最多33匹,中马最多50匹,小马最多100匹。
#include<stdio.h>
void main(void){
int a=0; //大马
int b=0; //中马
int c=0; //小马驮货数
int d; //小马
int n=0; //个数
do{
c=c+1;
if(3*a+2*b+c==100&&a+b+2*c==100){
d=2*c;
printf("大马、中马、小马分别为:%d,%d,%d\n",a,b,d);
n=n+1;
}
if(c==100){
c=0;
b=b+1;
}
if(b==50){
b=0;
a=a+1;
}
}while(a<=33);
printf("共有%d种方法。\n",n);
}
输出屏幕是放不下结果的,建议你改成向文件输出。
3. C语言的程序编辑题:一百匹马,一百旦粮,大马驮三旦,中马驮两旦,两匹小马驮一旦,大 中 小马各几匹
//功能:一百匹马,一百旦粮,大马驮三旦,中马驮两旦,两匹小马驮一旦大
//中小马各几匹?
//编写日期08-06-22
//编写者:埃罚梗afg
#include<stdio.h>
#define N 100
void main(){
int i = 0;
int x, y, z;//大马,中马,小马
for(x=1;x<34;x++)
for(y=1;y<50;y++){
z = N - x - y;
if(3*x + 2*y + 0.5*z == N)
printf("方案:%d:\n大马:%d匹,中马:%d匹,小马:%d匹\n",i++,x,y,z);
}
}
方案:1:
大马:2匹,中马:30匹,小马:68匹
方案:2:
大马:5匹,中马:25匹,小马:70匹
方案:3:
大马:8匹,中马:20匹,小马:72匹
方案:4:
大马:11匹,中马:15匹,小马:74匹
方案:5:
大马:14匹,中马:10匹,小马:76匹
方案:6:
大马:17匹,中马:5匹,小马:78匹
Press any key to continue
4. (C语言)有100匹马,要驮100担货物,其中,1匹大马驮3担,1匹中马驮2担,1匹小马驮1担(注意是一匹)!
你看第8行要x+y+z==100,只有一种可能,就是全部是小马,因为只要有一匹大马或者中马的话,就不需要100匹马了,应该将x+y+z==100改成(x+y+z)<=100,还有printf那一行应该改为{
{
printf("%d,%d,%d\n",x,y,z);
}
顺便我想问你一下,你的main函数内型都没有定下来你的程序怎么运行的?至少要个int main()
才能return 0;吧???
5. c语言中的一些疑问
1、C语言中=为赋值符号,作用是将=右侧表达式的值赋值给左侧的变量,也就是说,=号左侧只能是变量,不能是表达式。
另,赋值运算符的结合性为自右向左,所以1式执行时候,先执行a+b=b++;=左侧为一表达式,故出错
2、VC6.0的默认设置有时候很诡异,比如我尝试下面的代码
int a=65536666666666;
printf("%d\n",a);
输出结果就是
-239302998
所以,在编程的时候人为控制好,不要出现数值越界的情况。
6. c语言中的一些问题!
说简单点,因为1/3的结果是0 ,
改为1.0/3试一试,这只是其中一种改法
7. c语言中的一些问题
#include<stdio.h>
int main()
{
float x,y,z,a,b,c;
printf("请输入3个数,以逗号隔开:");
scanf("%f,%f,%f",&x,&y,&z);
if (x > y)
a = x;
else
a = y;
if (a < z)
a = z;
if ( y > z )
{b = y; //复合语句要用花括号括起来组成一个语句体
c = z;}
else
{b = z; //复合语句要用花括号括起来组成一个语句体
c = y;}
printf("3个数字从大到小依次为:%.0f %.0f %.0f",a,b,c);
return 0;
}
不过你的程序本身有错误,即使改过了有时运行也不对,所以要重新写个新的程序。
#include"stdio.h"
main()
{
float a[3],t,k;
int i,j;
printf("请输入3个数,以空格隔开:\n");
for(i=0;i<3;i++)
scanf("%f",&a[i]);
printf("3个数字从大到小依次为:\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{k=a[i]-a[j];
if(k>1e-3)
{t=a[i];
a[i]=a[j];
a[j]=t;}
}
for(i=0;i<3;i++)
printf("%.3f ",a[i]);
}
8. c语言马的遍历问题。
#include<graphics.h>
void
main()
{
int
i,j;
int
gdriver=DETECT,gmode;
initgraph(&gdriver,&gmode,"c:
\\tc");
setbkcolor(WHITE);
setcolor(RED);
for(i=0;i<10;i++)
{
line(20,20+i*40,340,20+i*40);
}
for(i=0;i<9;i++)
{
line(20+i*40,20,20+i*40,180);
}
for(i=0;i<9;i++)
{
line(20+i*40,220,20+i*40,380);
}
setlinestyle(0,0,3);
line(20,20,340,20);
line(340,20,340,380);
line(340,380,20,380);
line(20,380,20,20);
line(140,20,220,100);
line(220,20,140,100);
line(140,380,220,300);
line(220,380,140,300);
circle(60,100,5);
circle(300,100,5);
circle(60,300,5);
circle(300,300,5);
setcolor(BLUE);
moveto(60,380);
lineto(100,300);
lineto(140,380);
lineto(180,300);
lineto(220,380);
lineto(260,300);
lineto(300,380);
lineto(340,300);
lineto(300,220);
lineto(260,300);
lineto(220,220);
lineto(180,300);
lineto(140,220);
lineto(100,300);
lineto(60,220);
lineto(100,140);
lineto(140,220);
lineto(180,140);
lineto(220,220);
lineto(260,140);
lineto(300,220);
lineto(340,140);
lineto(260,100);
lineto(340,60);
lineto(260,20);
lineto(180,60);
lineto(260,100);
lineto(180,140);
lineto(100,100);
lineto(180,60);
lineto(100,20);
lineto(20,60);
lineto(100,100);
lineto(20,140);
lineto(60,220);
lineto(20,300);
lineto(60,380);
getch();
}
9. 数据结构的马和象问题,用C语言,求帮忙啊。。谢谢,给点思路都行。
分数太少,至少得一百五十分。
我的基本思路是广搜,最坏时间复杂度是O(N*N*M*M)
最坏情况可能比较糟糕。不过要看象了,因为他不能走到所有的点的,情况会比上面的要好一些,如果不行的话可以双向广搜,这样就能大降低复杂度。
10. 求高手帮助,C语言中符号的意义
%5d,5为指定的输出字段的宽度。如果数据的位数小于5,则左端补以空格,若大于5,则按实际位
数输出。。
%10.2 如果数据的位数小于10,则左端补以空格;若大于10,则按实际位数输出。。保留2位小数