CCrable C程序正在编译,但不允许用户执行该文件

CCrable C程序正在编译,但不允许用户执行该文件,c,compiler-errors,C,Compiler Errors,用户应该被提示要解码的几个字母,然后输入他们的单词,返回该单词的分数 我可以让程序编译,但程序实际上没有运行。因此,我不完全确定问题在我的代码中的位置。我在这方面相对较新 #include <stdlib.h> #include <stdio.h> #include <string.h> #include <stdbool.h> #include <math.h> #define num_letters_input 7 int ma

用户应该被提示要解码的几个字母,然后输入他们的单词,返回该单词的分数

我可以让程序编译,但程序实际上没有运行。因此,我不完全确定问题在我的代码中的位置。我在这方面相对较新

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
#include <math.h>

#define num_letters_input 7

int main()
{
    const int alphabet_count[26] = {8, 2, 2, 4, 12, 2, 3, 2, 9, 1, 1, 4, 2, 6, 8, 2, 1, 6, 4, 6, 4, 2, 2, 1, 2, 1};
    const int alphabet_value[26] = {1,3,3,2,1,4,2,4,1,8,5,1,3,1,1,3,10,1,1,1,1,4,4,8,4,10};
    int letter_set[26];
    int size_letter_set = 26;

    void generate_letter_set(int letter_set[], int size_letter_set, int num_letters) {

        int random_a = rand() % 26;
        int random_b = rand() % (alphabet_count[random_a]);
        letter_set[random_a] = random_b;
        printf("Your letters are: ");
        for(int i=0; i < size_letter_set; i++) {
            if(letter_set[i])
            {
                int num = letter_set[i];
                while(num--)
                    printf("%c ", i+97);
            }
        }

        printf("\n");
    }

    int read_word(char word[], int max_size_word) {

        printf("Enter your word: ");
        scanf("%s", word);
        printf("%s \n", word);
        int size_word = strlen(word);
        if(size_word > max_size_word)
            read_word(word, max_size_word);
        return size_word;
    }

    bool check_word(char word[], int size_word, int letter_set[], int size_letter_set) {

        int count_array[26];
        for(int i=0; i<size_word; i++) {
            count_array[word[i]-97]++;
        }
        for(int i=0; i<size_letter_set; i++) {
            if(count_array[i] <= letter_set[i])
                continue;
            else {
                return false;
            }
            return true;
        }

        int compute_word_value(char word[], int size_word) {

            int word_value = 0;
            for(int i=0; i<size_word; i++) {
                word_value = word_value + alphabet_value[word[i]-97];
            }
            return word_value;
        }

        int main(void) {

            int max_size_word = 7;
            int size_word, word_value;
            bool validity = false;
            char word[95];
            printf("This program plays the game of scrabble.\n");
            for(int i=0; i < size_letter_set; i++) {
                letter_set[i] = 0;
            }
            generate_letter_set(letter_set, size_letter_set, num_letters_input);
            while(!validity) {
                size_word = read_word(word, max_size_word);
                validity = check_word(word, size_word, letter_set, size_letter_set);
                if(!validity)
                {
                    printf("The word is not valid. Use your letters: ");
                    for(int i=0; i < size_letter_set; i++) {
                        if(letter_set[i])
                        {
                            int num = letter_set[i];
                            while(num--) {
                                printf("%c ", i+97);
                            }
                        }
                    printf("\n");
                    }
                }
                printf("The value of your word is: ");
                word_value = compute_word_value(word, size_word);
                printf("%d", word_value);
                printf("Thank you for playing.");
            }
        }
    }
    return 0;
}
#包括
#包括
#包括
#包括
#包括
#定义数字字母输入7
int main()
{
const int alphabet_count[26]={8,2,2,4,12,2,3,2,9,1,1,4,2,6,8,2,1,6,4,4,2,1,2,2,2,1};
const int alphabet_value[26]={1,3,3,2,1,4,2,4,1,8,5,1,3,1,1,3,10,1,1,1,1,4,8,4,10};
int字母_集[26];
int size_letter_set=26;
void生成字母集(整数字母集[],整数大小字母集,整数个字母){
int random_a=rand()%26;
int random_b=rand()%(字母计数[random_a]);
字母集[random_a]=random_b;
printf(“您的信件是:”);
对于(int i=0;i最大字号)
读取单词(单词,最大单词大小);
返回字号;
}
布尔校验字(字符字[],整数大小字,整数字母集[],整数大小字母集){
整数计数_数组[26];

对于(int i=0;i而言,它可能与您想要的有所不同,
我认为从以下修改开始会很有用

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
#include <time.h>

#define num_letters_input 7

const int alphabet_count[26] = {8,2,2,4,12,2,3,2,9,1,1,4,2,6,8,2, 1,6,4,6,4,2,2,1,2, 1};
const int alphabet_value[26] = {1,3,3,2, 1,4,2,4,1,8,5,1,3,1,1,3,10,1,1,1,1,4,4,8,4,10};


void generate_letter_set(int letter_set[], int size_letter_set, int num_letters) {
    printf("Your letters are: ");

    for(int i = 0; i < num_letters; i++){
        int random_a = rand() % 26;
        int random_b = rand() % alphabet_count[random_a];
        letter_set[random_a] = random_b;
    }
    for(int i = 0; i < size_letter_set; ++i){
        if(letter_set[i]){
            int num = letter_set[i];

            while(num--)
                printf("%c ", 'a' + i);
        }
    }
    printf("\n");
}

int read_word(char word[], int max_size_word) {
    int size_word = 0;
    do {
        printf("Enter your word: ");
        scanf("%s", word);
        size_word = strlen(word);
    } while(size_word > max_size_word);

    return size_word;
}

bool check_word(char word[], int size_word, int letter_set[], int size_letter_set) {
    int count_array[26] = {0};

    for(int i = 0; i < size_word; i++) {
        count_array[word[i]-'a']++;
    }

    for(int i=0; i < size_letter_set; i++) {
        if(count_array[i] <= letter_set[i])
            continue;
        else
            return false;
    }
    return true;
}

int compute_word_value(char word[], int size_word) {
    int word_value = 0;

    for(int i=0; i<size_word; i++) {
        word_value += alphabet_value[word[i]-97];
    }

    return word_value;
}

int main(void){
    int letter_set[26] = {0};
    int size_letter_set = 26;
    int max_size_word = num_letters_input;
    int size_word, word_value;
    bool validity = false;
    char word[96];
    srand(time(NULL));

    printf("This program plays the game of scrabble.\n");
    generate_letter_set(letter_set, size_letter_set, num_letters_input);

    while(!validity) {
        size_word = read_word(word, max_size_word);
        validity = check_word(word, size_word, letter_set, size_letter_set);

        if(!validity){
             printf("The word is not valid.\nUse your letters: ");
        }
    }

    printf("The value of your word is: ");
    word_value = compute_word_value(word, size_word);
    printf("%d\n", word_value);
    printf("Thank you for playing.\n");
    return 0;
}
#包括
#包括
#包括
#包括
#包括
#定义数字字母输入7
const int alphabet_count[26]={8,2,2,4,12,2,3,2,9,1,1,4,2,6,8,2,1,6,4,4,2,1,2,1};
const int alphabet_value[26]={1,3,3,2,1,4,2,4,1,8,5,1,3,1,1,1,3,10,1,1,1,1,4,8,4,10};
void生成字母集(整数字母集[],整数大小字母集,整数个字母){
printf(“您的信件是:”);
对于(int i=0;imax\u size\u word);
返回字号;
}
布尔校验字(字符字[],整数大小字,整数字母集[],整数大小字母集){
int count_数组[26]={0};
对于(int i=0;i如果(count_array[i]当他们尝试运行它时,会发生什么?我会给你几分钟时间来修复格式和缩进。为什么你的程序的每一行之间都有一个空行?(不,它不像那样可读)。在你的
main
函数中有一个内部
main
函数。
{}
不正确匹配欢迎使用堆栈溢出!请将您的代码简化为问题的一部分。您当前的代码包含许多与问题无关的内容-最小样本通常类似于良好的单元测试:仅执行一项任务,并为可再现性指定输入值。