我对编程有点陌生(好吧,非常新),我遇到了扩展巴科斯诺尔范式(EBNF),并决定尝试弄清楚如何使用它。不幸的是,尽管网上有大量关于 EBNF 如何工作的解释,但关于如何实际实现它的却很少。所以我使用它用 C 语言编写了一个简单的小程序,只是为了看看会发生什么。这是我写的:
#include <stdio.h>
#include <stdlib.h>
mixture : [letter|digit] {letter | digit};
integer : [ "+"|"-"] digit {digit};
naturalNumber : digit {digit};
digit : "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9";
letter : "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" | …Run Code Online (Sandbox Code Playgroud) #include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define mod 1000000007
int main()
{
unsigned long long int n,i,j,k;
unsigned long long int *power = (unsigned long long int *)malloc(sizeof(unsigned long long int) * (1000000000LL));
power[0] = 1;
for(i = 1;i <= 1000000000LL;i++){
power[i] = (power[i-1] * 2 ) % mod;
}
int t;
scanf("%d",&t);
while(t--){
scanf("%lld",&n);
unsigned long long int f = 2;
for(i=2; i<=n;i++){
f = (f + power[i/2]) % mod;
}
printf("%llu\n",f);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我在C中有一个代码,其中包含以下行:
int i;
int *serie = malloc(sizeof(int));
for (i = 0; i <= 20; i++){
serie=rand();
printf("%d ",&serie[i]);/* *serie */
}
Run Code Online (Sandbox Code Playgroud)
它确实有用,但我想知道为什么,对于malloc,我相信我正在创建一个名为serie的动态数组或指针,到目前为止,我的知识是:
& returns the address
* returns the content of the adress
Run Code Online (Sandbox Code Playgroud)
使用固定数组[]和指针()
通过测试&serie[i]似乎工作,但它不*serie(i)还是*serie[i]和*serie我认为它不会太.
有人能解释一下这些吗?
如果我想打印内容不应该放*而不是&,我认为使用动态数组[]而不是()它应该*serie[i]不是&serie[i]吗?
我很自豪能租用自己的debian 6.0服务器.并且作为Linux中的总菜鸟(可能首先用网络服务器学习debian并不是最好的...我知道!)我想用这个服务器部署python django应用程序.
现在简单的命令"python"不起作用.
当我正在寻找安装
哪里是蟒蛇
它向我展示了以下信息:
python:/usr/lib/python2.5 /usr/lib/python2.4 /usr/lib/python2.6 /usr/lib64/python2.5 /usr/lib64/python2.4 /usr/lib64/python2.6
所以python存在于系统上?!...但是如何将python2.6放在系统路径上以便"python"正常工作并打开python shell?
Hello stackoverflow社区,
我有一段相当简单的代码,这是一个奇怪的错误.这是我的代码:
multiplyByTwo 0 = 1
myltiplyByTwo x = 2 * multiplyByTwo (x-1)
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,它是简单的递归.我得到了"函数multiplyByTwo中的非详尽模式"异常.我不明白为什么我得到这个,因为我已经设置了最低值,multiplyByTwo 0 = 1因此我猜测该函数在该点之后没有调用自身.我所说的是,我不明白为什么这种模式是"非详尽的".我假设您为x输入的数字是正数.
谢谢你能给予的任何帮助.
我得到了Key Error: (0, 0).在我的代码的这一部分中,我试图在我的网格中创建具有键(x,y)的块的字典.这是我的代码:
self.block_list = {}
for x in range(0, self.width):
for y in range(0, self.height):
self.block_list[(x, y)]
Run Code Online (Sandbox Code Playgroud)
我不明白为什么(0,0)没有包含在字典中.
我的代码编译,虽然printf没有显示任何内容?
如果我取出格式化程序部分,printf那么它的工作正常.
#include <stdio.h>
size_t MyStrlen(const char *s1)
{
const char *s1Copy = s1;
while (*s1)
{
*s1Copy++;
}
return s1Copy -s1;
}
int main(void)
{
const char str[] = "HELLO";
printf("Length: %d \n", (unsigned int)MyStrlen(str));
return 0;
}
Run Code Online (Sandbox Code Playgroud) data BTree a = Empty | Node (BTree a) a (BTree a) -- This is a node-labelled binary tree
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下下面的Haskell函数吗?
labels :: BTree a -> [a]
labels Empty = []
labels (Node left label right) = labels left ++ [label] ++ labels right
Run Code Online (Sandbox Code Playgroud)reflect :: BTree a -> BTree a
reflect Empty = Empty
reflect (Node left label right) = Node (reflect left) label (reflect right)
Run Code Online (Sandbox Code Playgroud)