c - 我做的,while循环没有按我的意思工作:((C语言)
问题描述
大家好,我即将完成一些 c 基础课程,并以一个完整的计算器项目结束。
在数组部分,我的以下 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_num
和(检查返回值以向用户发出错误信号),然后直接检查条件中这两个变量的值。col_num
或者,您可以&&
改为验证scanf
确实读取了一个值,并在相同条件下检查该值,但这可能会造成过于混乱且难以读取的条件。
如果有比启动另一个c文件更好的方法来调试代码部分,我会在单独的文件中运行它以单独调试每个部分
最好的选择是创建单独的函数,您可以在测试时单独调用和main
测试。一旦你的代码成熟了,你就可以把所有的功能放在一起,并继续使用调试器等工具进行测试和调试。
推荐阅读
- android - 如何在每次点击时将 Android 按钮中编辑文本的最大长度字符限制增加 10 个?
- vue.js - 以编程方式设置输入值不会刷新组件 DOM
- r - openxlsx 使用与我的普通 Excel 应用程序不同的表格样式
- android - setDefaultNightMode() 仅在 PreferenceFragment 中的第二次调用后有效
- sql-server - SQL Server 中的按位运算
- c# - JSON 值无法转换为 System.Int32
- javascript - 检测圆重叠
- javascript - Jquery Ajax POST 没有动态添加输入输入有名称,我尝试了其他解决方案
- javascript - 如何在地图功能期间获取对象的位置?
- sql - 考虑到 A,B 行 = B,A 行,如何计算多个唯一行