我的代码的目标是打印从0到20的所有偶数。而不是使用模数运算,我尝试使用按位运算符&
来查找偶数。我的代码问题是我收到此消息“暂停:命令未找到”。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int j;
for (j = 0; j <= 20 && (j & 1); ++j)
{
printf("%3d\n", j);
}
system("pause");
return 0;
}
答案 0 :(得分:3)
为什么不保持简单并增加2并使用getchar而不是暂停
for (j = 0; j <= 20; j += 2)
{
printf("%3d\n", j);
}
char ch = getchar();
答案 1 :(得分:2)
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int j;
for (j = 0; j <= 20; ++j)
{
if (!(j & 1)) printf("%3d\n", j);
}
printf("Enter a number to continue");
scanf("%d",&j);
return 0;
}
问题是你将&
表达式作为循环条件的一部分,它会提前终止循环。
然后计算机抱怨系统暂停的事情,所以我把它更改为请求键盘输入........这会给你想要的暂停......但继续阅读,因为有一个你应该看到的改进...
或者在@ usr2564301
的建议之后可能更好#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char ch;
int j;
for (j = 0; j <= 20; ++j)
{
if (!(j & 1)) printf("%3d\n", j);
}
printf("Hit <enter> to continue");
ch=getc(stdin);
return 0;
}
这是更好的做法,因为scanf
可能有点脆弱。
答案 2 :(得分:1)
问题与你的循环无关,它是system("pause")
。那就是试图执行暂停命令,暂停命令在您的计算机上不存在(或者至少,它不在您的$ PATH中)。
我不确定您是否尝试使用该行,但如果删除它,您的代码应该可以正常工作。
答案 3 :(得分:0)
system("pause");
仅适用于Windows。它不一定在其他操作系统上可用。