小编Dan*_*her的帖子

C程序中的EBNF声明语法

我对编程有点陌生(好吧,非常新),我遇到了扩展巴科斯诺尔范式(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)

c syntax declaration ebnf

0
推荐指数
1
解决办法
5792
查看次数

为什么我的代码显示分段错误..对于n = 1000000000

#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

0
推荐指数
1
解决办法
153
查看次数

使用C中的动态数组与&*和[]()混淆

我在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]吗?

c arrays pointers

-1
推荐指数
1
解决办法
203
查看次数

Noob:如何将python放在debian系统路径上?

我很自豪能租用自己的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?

debian

-1
推荐指数
1
解决办法
691
查看次数

一个非常简单的函数的"功能非穷举模式"?

Hello stackoverflow社区,

我有一段相当简单的代码,这是一个奇怪的错误.这是我的代码:

multiplyByTwo 0 = 1
myltiplyByTwo x = 2 * multiplyByTwo (x-1)
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,它是简单的递归.我得到了"函数multiplyByTwo中的非详尽模式"异常.我不明白为什么我得到这个,因为我已经设置了最低值,multiplyByTwo 0 = 1因此我猜测该函数在该点之后没有调用自身.我所说的是,我不明白为什么这种模式是"非详尽的".我假设您为x输入的数字是正数.

谢谢你能给予的任何帮助.

recursion haskell

-1
推荐指数
1
解决办法
151
查看次数

尝试在Python中使用元组作为字典键时的键错误(0,0)

我得到了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)没有包含在字典中.

python

-2
推荐指数
1
解决办法
8872
查看次数

c printf size_t

我的代码编译,虽然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)

c string printf size-t

-3
推荐指数
2
解决办法
8542
查看次数

Haskell函数寻求解释

data BTree a = Empty | Node (BTree a) a (BTree a) -- This is a node-labelled binary tree
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下下面的Haskell函数吗?

  1. labels :: BTree a -> [a]

    labels Empty = []
    labels (Node left label right) = labels left ++ [label] ++ labels right
    
    Run Code Online (Sandbox Code Playgroud)
  2. 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)

binary-tree haskell functional-programming

-11
推荐指数
1
解决办法
367
查看次数