【求助帖】见鬼了!!!
很简单的一段代码,百思不得其解,求各位大神指点:#include <cstdio>
#include<iostream>
using namespace std;
#include <cstdio>
#include<iostream>
using namespace std;
int main() {
int i,c,n,m=0;
while (1) {
scanf("%d", &c[++i]);
if(c==0){
break;
}
if(m<c){
m = c;
}
// printf("000:%d vs %d\n",c,m);
// printf("111:%d vs %d vs %lu\n",c,m,&m);
}
n = i;
printf("%d vs %d\n",n,m);
}
如果输入是:
1
2
3
4
输出不应该是5,4吗,怎么m输出是0?
如果打开上面000处的打印,结果仍是5,0
而打开111处打印,结果就变5,4了 scanf("%d", &c[++i]);
执行这条语句之前,i 的值是多少?
温馨建议:
代码本身没有需要用 using namespace std
用 C++ #include <iostream> 就不用 <cstdio>,虽然没有错,但就好象你穿一件黑色的裤,再穿一件白色的裤一样(要不然就只穿黑色,或只穿白色就行了,不用两件都穿啊)
如上,用 C++ 就试试用 C++ 的输出输入流吧,比如:std::cin 或 std::cout
while(1) 可以写成 while (true),因为 C++ 增加了 bool 数据类型
不定长数组可以试用 C++ 的向量 vector 储存,C++ 优势泛型是非常好用的
人造人 发表于 2022-10-23 00:55
scanf("%d", &c[++i]);
执行这条语句之前,i 的值是多少?
这个地方是有问题,不过在定义时对i赋值0后结果还是一样 傻眼貓咪 发表于 2022-10-23 18:11
温馨建议:
代码本身没有需要用 using namespace std
用 C++ #include就不用 ,虽然没有错,但就好象你 ...
感谢指正,但是百思不得其解的是输出的值不对 lovetec 发表于 2022-12-3 22:41
感谢指正,但是百思不得其解的是输出的值不对
scanf("%d", &c[++i]); // <--------------- 你的这里 i 已经增加 1 了,再也不是之前的 i
if (c == 0) { // <--------------- 这里 i 当然就是新的 i 啊!C 语言自增功能让我们代码简约方便,但也要注意啊!
}
页:
[1]