【C编译器】新进展
本帖最后由 Wudy 于 2012-5-20 10:31 编辑进展有点慢。。
现已支持:
编译成字节码再虚拟机执行,一位数组,一级指针,浮点数,字符串常量,递归,
3个库函数:input(),output(),puts()
more...
下一步的工作:
多维数组,强大的库。
短时间内不会支持的:
++,--操作符,多级指针,函数指针,其他高级的内容
放几个已经完美测试的代码(windows平台)
1.八皇后问题int C;
int tot = 0;
void search( int cur )
{
int i, j;
if( cur == 8 )
tot += 1;
else
{
for(i = 0; i < 8; i += 1 )
{
int ok = 1;
C = i;
for( j = 0; j < cur; j += 1 )
if( C == C || cur - C == j - C || cur + C
== j + C )
{
ok = 0;
break;
}
if( ok )
search( cur + 1 );
}
}
}
void main()
{
search( 0 );
output( tot );
}2.高精度阶乘int f;
void main()
{
int i, j, n;
n = input();
f = 1;
for( i = 2; i <= n; i += 1 )
{
int c = 0;
for( j = 0; j < 100; j += 1 )
{
int s = f * i + c;
f = s%10;
c = s / 10;
}
}
for( j = 100 - 1; j >= 0 && f == 0; j -= 1 )
;
for( i = j; i >= 0; i -= 1 )
output( f );
}3.合并排序 void merge_sort( int* A, int x, int y, int* T )
{
if( y-x > 1)
{
int m = x + (y-x)/2;
int p = x, q = m, i = x;
merge_sort( A, x, m, T );
merge_sort( A, m, y, T );
while( p < m || q < y )
{
if( q >= y || (p < m && A <= A) )
{
T = A;
i += 1; p += 1;
}
else
{
T = A;
i += 1; q += 1;
}
}
for( i = x; i < y; i += 1 )
A = T;
}
}
void main()
{
int a;
int temp;
int i;
for( i = 0; i < 5; i += 1 )
a = input();
merge_sort( a, 0, 5, temp );
for( i = 0; i < 5; i += 1 )
output( a );
}4.hello worldvoid main()
{
puts( "Hello World!" );
}要等更完整后再发布,还是先发布一个尝鲜版? 先发布一个尝鲜版 i += 1是i++?
好怪...
Puts?
Printf会好点?cout也不错. 进展有点慢。。
现已支持:
编译成字节码再虚拟机执行,一位数组,一级指针,浮点数,字符串常量,递归,
3个库函数:input(),output(),puts()
more...
下一步的工作:
多维数组,强大的库。
...
Wudy 发表于 2012-5-20 09:37 http://www.cncalc.org/images/common/back.giffor 9860? 既然可以用递归,那么快排试过没有? 放几个已经完美测试的代码(windows平台)Wudy 发表于 2012-5-20 09:37 AM http://www.cncalc.org/images/common/back.gif
难道... 饿,看到合并了……
---------------------------------
结构体能不能实现呢?
---------------------------------
另外,位运算能不能用了? 结构体太难,应该不会有了。
位运算有时间就加。
printf可变参数比较难解决。。 预计明天可以发布尝鲜版 预计明天可以发布尝鲜版
Wudy 发表于 2012-5-25 10:18 PM http://www.cncalc.org/images/common/back.gif
Really?那就是今天么? 10# 9750GII
出了点问题,要跳票了… 跳到啥时候? 9750GII 发表于 2012-5-20 10:44
i += 1是i++?
好怪...
Puts?
cout是C++的,还是习惯printf。i++的字节占用更小,i+=的功能更多[废话]
页:
[1]