owojiecao 2019-05-02 20:19 采纳率: 0%
浏览 238

一个诡异的问题,编译不了循环

我是win10,64位系统然后装了clang和mingw,两个的文件夹合并了,添加环境变量那里是C:\Program Files\LLVM\bin
然后编译代码的时候发现运行不了循环quq,如下
代码是:

#include <cstdio>
#include <iostream>

using namespace std;

int main(){
    cout<<"slsl";
    return 0;
}

命令行编译运行,输出slsl,正常;

现在换成如下代码:

#include <cstdio>
#include <iostream>

using namespace std;

int main(){
    int kl[10];
    for (int i=0; i<3; i++) cin>>kl[i];
    for (int i=0; i<3; i++) cout<<kl[i]<<endl;
    return 0;
}

输入1 2 3输出123,还是正常

现在换成如下代码

#include <cstdio>
#include <iostream>

using namespace std;

int main(){
    char kl[10];
    scanf("%s",kl+1);
    for (int i=1; i<=3; i++) cout<<kl[i]<<endl;
    return 0;
}

就会这样子quq:
图片说明

就是输入完进那个循环就一直卡在那里了,什么输出都没有,枯了

求求大神解答quq

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-09 06:52
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    你遇到的问题是因为在你的代码中使用了cin来读取输入,并且使用了cout来输出结果。但是,在你的第一个例子中,你需要先读入整数数组kl,然后再对它们进行循环操作。

    在第二个例子中,你直接在主函数中使用了scanf来读取输入,这会导致程序崩溃,因为scanf只接受字符串作为输入,而你的输入实际上是整数。你需要将scanf替换为std::cin

    在第三个例子中,你尝试了scanf来读取字符并将其存储在一个数组中。同样地,这个方法也会导致程序崩溃,因为你试图将一个字符串(即字符数组)转换成一个整数。你应该使用std::string来处理字符串,或者使用其他方式(例如,使用std::istringstreamstd::stringstream)来解析字符串。

    以下是一个修改后的示例:

    #include <iostream>
    #include <sstream>
    #include <iomanip>
    
    using namespace std;
    
    int main() {
        int kl[10];
        string input = "1 2 3"; // 这里使用的是逗号分隔的字符串,而不是空格
        stringstream ss(input);
    
        for (int i = 0; i < 3; ++i) {
            ss >> kl[i]; // 使用stringstream来解析输入字符串
        }
    
        for (int i = 0; i < 3; ++i) {
            cout << kl[i] << endl;
        }
    
        return 0;
    }
    

    这段代码首先将输入字符串分割成三个整数,然后逐个打印出来。

    评论

报告相同问题?

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀