c-硬币投掷程序不工作的Visual Studio 2010



一本书的练习提示我创建一个模拟扔硬币的程序。我的朋友说他在本机GNU编译器中运行了我的代码,它很有效,但当我尝试在VisualStudio2010中运行它时,我收到了以下错误:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int result;
int flip();
int main(void)
{
    srand(time(NULL));
    int heads = 0;
    int tails = 0;
    unsigned counter;
    for(counter = 1; counter <= 100; counter++)
    {
        result = flip();
        if(result == 1)
        {
            printf("Headsn");
            heads++;
        }
        else
        {
            printf("Tailsn");
            tails++;
        }
    }
        printf("Heads: %dtTails: %dn", heads, tails);
}
int flip()
{
    result = 1 + rand() % 2;
    if (result == 1)
        return 1;
    if (result == 2)
        return 0;
    return NULL;
}

syntax error: ')' (line 10)
'counter': undeclared identifier (15, 23)
'heads': undeclared identifier (19, 23)
't': undeclared identifier (10, 10)
syntax error: missing ')' before 'type' (line 10)
syntax error: missing ';' before '{' (line 11)
syntax error: missing ';' before 'type' (9, 10, 10, 10)

感谢您的回复。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int result;
int flip();
int main(void){
    int heads = 0;
    int tails = 0;
    unsigned counter;
    srand(time(NULL));//Executable statement after the declaration
    for(counter = 1; counter <= 100; counter++){
        result = flip();
        if(result == 1){
            printf("Headsn");
            heads++;
        } else {
            printf("Tailsn");
            tails++;
        }
    }
    printf("Heads: %dtTails: %dn", heads, tails);
    return 0;
}
int flip() {
    result = 1 + rand() % 2;
    return result == 1;
}

下面是一个修改后的代码,它在eclipse中运行良好:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int result;
int flip();
int main(void)
{
    srand(time(NULL));
    int heads = 0;
    int tails = 0;
    unsigned counter;
    for(counter = 1; counter <= 100; counter++)
    {
        result = flip();
        if(result == 1)
        {
            printf("Headsn");
            heads++;
        }
        else
        {
            printf("Tailsn");
            tails++;
        }
    }
        printf("Heads: %dtTails: %dn", heads, tails);
        return 0;
}
int flip()
{
    result = 1 + rand() % 2;
    if (result == 1)
        return 1;
    if (result == 2)
        return 0;
}

错误:总的来说,您忘记了"return 0"语句。在flip函数中,您写了"return NULL",它不应该存在。在与的比较中尝试此代码

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void){
int heads = 0,tails = 0;
unsigned int counter = 1;
int result = 0;
srand(time(NULL));
for(counter = 1; counter <= 100; counter++){
    result = rand()%2;
    if(result == 1){         
        heads++;
    }
    else{
        tails++;
    }
}
printf("Heads: %dtTails: %dn", heads, tails);     
return 0;
}

最新更新