这个题有没有简单的算法
1--20,从中取5个数,不可重复,使它们的和等于65,用C语言该怎么编程? 大家是不是觉得这个题目有点简单啊 ,不屑做? 用 for 语句嵌套啊, [code]N = 0
FOR i = 1 TO 16
FOR j = i + 1 TO 17
FOR k = j + 1 TO 18
FOR l = k + 1 TO 19
FOR m = l + 1 TO 20
IF i + j + k + l + m = 65 THEN
N = N + 1
PRINT N; ")"; i; j; k; l; m
END IF
NEXT
NEXT
NEXT
NEXT
NEXT
[/code] LS用了B语言吧。。。
如果用c翻译过来就是[code]#include
void main()
{
int n=0,i,j,k,l,m;
for (i=1;i<16;i++)
{
for (j=i+1;j<17;j++)
{
for (k=j+1;k<18;k++)
{
for (l=k+1;l<19;l++)
{
for (m=l+1;m<20;m++)
{
if (i+j+k+l+m==65)
{
n=n+1;
printf ("%d : %d%d%d%d%d",n,i,j,k,l,m);
}
}
}
}
}
}
}[/code] 小白版主不要乱说话哦。
他用的是BASIC语言,可不是B语言。
给你补充点历史知识。
B语言是贝尔实验室开发的一种通用的程序设计语言,它是于1969年前后由美国贝尔实验室的电脑科学家肯·汤普森(Ken Thompson)在丹尼斯·利奇(Dennis Ritchie)的支持下设计出来。后来,丹尼斯·利奇以B语言为基础开发出C语言——目前世界上最常用的程序语言之一。自从被C语言取代之后,B语言几乎已遭弃置。
B语言是从BCPL系统中删减了汤姆森认为非必备的组件以便能运行在当时的小型计算机上而产生的。B语言还包括了汤姆森的一些个人偏好(主要在一些特定的程序中减少非空格字符的数量)。
和BCPL以及FORTH类似,B语言只有一种数据类型,计算机字。大部分操作将其作为整数对待(例如进行+、-、*、/操作),但其余操作将其作为一个复引用的内存地址。在许多方面B语言更像是一个早期版本的C语言,它还包括了一些库函数,其作用类似于C语言中的标准输入/输出函数库。
下面是来自Ken Thompson的B语言用户手册的例子:
/* The following function will print a non-negative number, n, to
the base b, where 2<=b<=10, This routine uses the fact that
in the ANSCII character set, the digits 0 to 9 have sequential
code values. */
printn(n,b) {
extrn putchar;
auto a;
if(a=n/b) /* assignment, not test for equality */
printn(a, b); /* recursive */
putchar(n%b + '0');
} 啊啊啊.....我一时少打了几个字。。。
对不起。。不好意思……
本来是想打BASIC语言的。。。
可能当时走神了。。。:L
页:
[1]