开始内循环之前, s 要初始化为 0,否则影响后续的判断
把s=0放到第一层循环内
修改如下,供参考:
#include <stdio.h>
int main()
{
int s = 0;
/**************Begin*****************/
for (int i = 2; i < 1000; i++) {
s = 0; // 修改
for (int j = 1; j < i; j++) {
if (i % j == 0) s = s + j;
}
if (s == i) printf("%d ", s);
}
/***************End****************/
}
输出格式 : printf(str);
在这样输出之前我们要先做一件事情 char str[] = "hello world";
我们需要先创建一个存储字符串的数组。这样创建的字符串"hello world!'\0'"
也是有'\0'
在里面的,只是被隐藏了。在这里str所指向的是首字符h的地址,它也是通过str所指向的h的地址向后进行打印,直到遇到'\0'
停止,这样的方法更为简单快捷,但我依然推荐后面要讲到的标准的输出格式。
答案:
在Visual Studio中,printf语句没有输出任何内容的原因可能有很多种。我给出一些可能性和相应的解决方案:
printf语句被注释掉了或者没有被执行到。可以在代码中加上一些调试信息,例如在printf语句前后加上一些特定的输出,或者在程序执行过程中打断点进行调试,确定是否执行了printf语句。
printf语句的格式化字符串中没有格式符或格式符写错了。格式化字符串中应该包含占位符,并且占位符的类型应该和后面提供的实参类型相匹配。可以检查一下printf语句的格式化字符串是否正确。
printf语句的实参类型不正确。实参的类型应该和对应格式符的类型相匹配。例如,如果格式化字符串中有%d,那么实参应该是int型变量。可以检查一下printf语句的实参是否正确,并适当地进行类型转换。
printf语句输出的内容被重定向到了其他地方。例如,输出被重定向到了文件中或者被缓存了起来。可以检查一下程序中是否有其他重定向输出的语句,或者尝试刷新输出缓冲区。
程序中存在其他不可预期的错误或者bug,导致printf语句无法输出结果。可以先检查一下程序的其他部分是否有问题,如果有就要先解决那些问题。
总之,要想确定printf语句没有输出内容的具体原因,需要对程序进行全面的调试和排查。具体的解决方案要根据具体情况进行判断和处理。