繁体   English   中英

我做的,while 循环没有按我的意思工作:((C 语言)

[英]my do, while loop not working as i meant :( ( C language)

大家好,我即将完成一些 c 基础课程,并以一个完整的计算器项目结束。

在 arrays 部分,我的以下 do while 循环不断循环,无法打破条件。

我试图添加exit(); 也将return(0)更改为return(EOF)但没有任何反应。

这是代码:

#include <stdio.h>

int main()
{
    int row_num,colm_num;
    do
    {
        printf("PLEASE! choose Array 'A' Rank (maximum 4x4)==>\n\n");
        printf("  'A' rows=  ");
        scanf("%i", &row_num);

            

       printf("  'A' columns=  ");
        scanf("%i", &colm_num);
        
        printf("Array 'A' set to rank = %ix%i i.e. (A[%i][%i]) \n\n)",row_num,colm_num,row_num,colm_num);
       
    }
    while(( scanf("%i", &row_num)==1 || row_num<=4||row_num>=0)||( scanf("%i", &colm_num)==1 || row_num<=4||row_num>=0)); //restriction for user input 

       
return(0);}

我不得不提到这不是完整的代码,但我在单独的文件中运行它来单独调试每个部分,如果有比启动另一个 c 文件更好的方法来调试代码部分,请告诉我“正在使用 codelite 编辑器 IDE”谢谢所有这些都对任何初学者开放\高效的 c 编码建议我将不胜感激^^。

您的scanf条件( scanf("%i", &row_num)==1 )并没有完全符合您的预期。 从 scanf 手册页:

返回值
这些函数返回成功匹配和分配的输入项的数量,该数量可能少于提供的数量,或者在早期匹配失败的情况下甚至为零。

您有一个输入项被匹配,因此只要输入是数字, scanf总是返回 1,并且您永远无法退出循环,因为条件仍然为真。

在循环体结束调用scanf读取row_numcol_num (检查返回值向用户发出错误信号),然后直接检查条件中这两个变量的值。

或者,您可以使用&&来验证scanf确实读取了一个值,并在相同条件下检查该值,但这可能会造成过于混乱且难以阅读的情况。

如果有比启动另一个 c 文件更好的方法来调试代码部分,我会在单独的文件中运行它来单独调试每个部分

最好的选择是创建单独的函数,您可以在测试时从main单独调用和测试这些函数。 一旦你的代码成熟了,你就可以把所有的功能放在一起,并继续使用调试器等工具进行测试和调试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM