You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言嵌套if的while循环实现交替数列运行崩溃问题求助

解决交替数列输出程序崩溃的问题

嘿,我一眼就揪出了导致程序崩溃的核心问题,咱们一步步拆解修复:

1. 崩溃的直接根源:scanf参数错误

你代码里的scanf(" %d", n1);犯了个经典错误!scanf的第二个参数必须传入变量的内存地址,这样它才能把用户输入的数值存到对应的变量里。你直接传n1的话,程序会把输入的数值当成内存地址去写入,这属于非法内存访问,必然导致程序崩溃。

正确写法应该是:

scanf(" %d", &n1);

这里的&是取地址运算符,用来获取n1变量的内存地址,让scanf能正确写入数据。

2. 优化代码的小细节

除了崩溃问题,还有两个小地方可以让代码更规范:

  • main函数标准写法应该返回int类型,末尾加上return 0;(符合C语言规范,避免编译器警告)
  • temp++在if和else里重复写了,可以移到while循环末尾,减少冗余代码

修复后的完整代码

#include <stdio.h>

int main() {
    printf("Enter a number: ");
    int n1;
    scanf(" %d", &n1);
    int temp = 1;
    
    while (temp <= n1) {
        if (temp % 2 == 0) {
            printf(" %d", -temp);
        } else {
            printf(" %d", temp);
        }
        temp++; // 统一放在这里,避免重复代码
    }
    
    return 0;
}

现在运行这个代码,就能正常接收输入并输出交替正负的数列啦~

内容的提问来源于stack exchange,提问作者Shpend Palushi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:13:55