题解 | 神秘石像的镜像序列
神秘石像的镜像序列
https://www.nowcoder.com/practice/fa34eea974234610b6d3d81790cb2949
#include <stdio.h>
int main() {
int a[100];
int i = 0;
int count = 0;
while(scanf("%d",&a[i])==1)//1.scanf的返回值并不是你输入的整数,而是成功读取并赋值的变量个数;2.当你输入一个整数并按回车时,scanf("%d", &a[i]) 成功读取了一个整数,返回 1;3.只有当输入的内容无法被解析为整数时(例如输入一个字母 q,或者直接按 Ctrl+D / Ctrl+Z 发送文件结束符),scanf 才会返回 0 或 EOF(EOF 是一个宏,值为 -1),循环才会终止
{
i++;
count++;
}
for(int j=count-2;j>=0;j--)//原本的for(int j=0;count-j>0;j++)即使循环条件成立了(比如 count=3, j=4),count-j 的值会是 -1,a[-1] 访问了数组边界之外的内存,这属于数组越界,会导致未定义行为(程序可能崩溃,也可能输出乱码)。
{
printf("%d ",a[j]);
}
return 0;
}
查看6道真题和解析


