如果我想有几个不同的 if 语句,所有这些语句的优先级都相同,并且有一个 else 语句来打破循环,我该怎么办?

What should I do if I want to have several different if statements, all of which of equal priority and an else statement to break a loop?

提问人:Someone Someone 提问时间:11/7/2023 最后编辑:Someone Someone 更新时间:11/7/2023 访问量:77

问:

我正在写一段代码,应该在二维数组中找到某些单词或其他字母组合,其中每行的长度相等,所述单词只能水平或垂直排列,不能对角线排列。由于要搜索的单词的第二个字母可以出现在要搜索的单词的第一个字母旁边,因此我需要做出几个类似if的语句,这些语句被逐一检查,问题是,所有包含在一个循环中,如果所有循环都是假的,则需要中断。除非有另一种更简单的方法,而且很可能是,但我精神太疲惫了,想不出办法。 这是我写的代码的一部分。我不得不把整个东西报废一次,因为我是倒着做的,如果一个字母在二维数组中出现不止一次,它就无法正常工作

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>

#define WORDNUM 100


int main() {
    char c, word[WORDNUM][100], matrix[10][11];
    int i=0, j=0, lineNum=0, lineLen, a, logLength[WORDNUM], mLine, mLet, wLet, wLine,logExist[WORDNUM]={0}, x, y;
    while (a=1){ //this loop get the words that will be searched for
        c=fgetc(stdin);
        if (isalpha(c)){
            word[i][j]=c;
            j++;
        }
        else if(c==' '){
            logLength[i]=j;
            i++;
            j=0;
        }
        else if(c=='\n'){
            logLength[i]=j;
            i++;
            j=0;
            break;
        }
    }
    while(fgets(matrix[lineNum], 11, stdin)!=NULL && lineNum < 10){ // this part gets the two-dimensional array
        lineNum++;
    }
    lineLen=strlen(matrix[0])-1;
    for(mLine=0; mLine<lineNum; mLine++){
        for(mLet=0; mLet<lineLen; mLet++){
            wLine=0;
            while(wLine<i){
                if(matrix[mLine][mLet]==word[wLine][0]){
                    wLet=1; x=mLet; y=mLine;
                    while(wLet<logLength[mLine]){
                        //here's the checking of rest of the word and breaking the loop if need be
                        
                    }
                }

                else wLine++;
            }
        }
    }

    return 0;
}

提前感谢您的任何和所有建议;

数组 C 多维数组

评论

0赞 Barmar 11/7/2023
您可以使用它来测试单词是否从行的每一列开始水平显示。strncmp()
0赞 Barmar 11/7/2023
为了垂直查看,您可以创建第二个矩阵,其中交换了行和列。
0赞 Grimxn 11/7/2023
您正在尝试在一次传递中解决问题,而它是一个三遍问题。将字符收集到一个 2D 数组中(第 1 遍),然后逐列迭代,然后逐行迭代以查找单词,将它们添加到不同的数组中。
1赞 Ruud Helderman 11/7/2023
帮自己一个忙:将问题分解成更小的部分,并为每个子问题编写一个单独的函数。我也会精神疲惫,试图在一个巨大的函数中抓住 4 个嵌套循环。main
1赞 NoDakker 11/7/2023
另外需要注意的是 - 不确定您的意思是“while (a == 1)”,但当前的“while (a=1)”不是传统的。(a = 1) 是一个赋值,而不是一个逻辑语句,但可能会意外地作为 nozero 值为您工作。

答: 暂无答案