【发布时间】:2021-04-12 14:37:29
【问题描述】:
TL;DR 我想知道如何清理第一个 if 语句。我尝试在网上查找,但一无所获。
我正在编写一个程序来测试用户输入的数字是否有重复数字。我设法创建了一个 10 元素布尔数组 (a[10]),如果 a[i] 等于 0,这意味着数字“i”最多出现在键入的数字中一次。如果 a[i] 等于 1,则数字“i”在键入的数字中至少出现两次(因此重复)。注意 0
现在我试图分析这个数组中的值,如果所有值都为零,那么我们输入“重复数字”。如果不是,我们会说哪些数字是重复的。
if(a[0] == 0 && a[1] == 0 && a[2] == 0 && a[3] == 0 && a[4] == 0 && a[5] == 0 && a[6] == 0 && a[7] == 0 && a[8] == 0 && a[9] == 0)
printf("No repeated digits");
else
printf("Repeated digits: ");
for(i = 0; i < 10; i++) {
if(a[i] == 1)
printf("%d ", i);
}
我找不到将 for 循环与 if 循环结合使用来清理第一个 if 语句的方法。我已经尝试在网上查找,但找不到解决方案。
【问题讨论】:
-
“快速”在运行时?或者最少的代码?
-
快速,因为不必显式输入每个数组元素等于零。尝试使用某种循环机制等效地写出第一个 if 语句。想象一下,如果这个问题是以 99 为底而不是以 10 为底! (!为了效果,而不是阶乘)
-
如果您将“数组”作为位向量存储在单个无符号整数中,您可以通过一次测试检查所有位是否为零:
a == 0。 -
首先创建数组时,如果任何元素不为零,请设置一个标志。
-
我需要看看这个标志的东西,我第一次听说它,听起来很有用。
标签: c