题解 | 神秘石像的镜像序列

神秘石像的镜像序列

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;
}

全部评论

相关推荐

牛客nb666号:见天才的门槛罢了查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务