为什么它会崩溃

Why does it crash?

本文关键字:崩溃 为什么      更新时间:2023-10-16

Mr。小Z正在看一张纸,试图找到写在纸上的数字的平方根,但没有成功。

帮助Little Z先生找到数字B,它是BIG数字A的平方根。数字A最多有1000位数字,A的平方根将始终是整数。

输入:标准输入的第一行包含数字0

输出:向标准输出写入数字M,其中M表示数字B的长度(其中B是数字A的平方根(,并在接下来的M行中写入数字B的数字(从最高有效数字到最低有效数字(。

输入:3.6.2.5

输出:2.2.5

说明:纸上写的数字是625,它的平方根是25。

我的代码:

#include <iostream> 
#include <cmath> 
using namespace std; 
int main() 
{ 
    int n,m,k,i; 
    int niza[1001]; 
    cin>>m; 
    for(int i=0;i<m;i++) 
    cin>>niza[i]; 
    niza[i]=k; 
    cout<<sqrt(k); 
    return 0; 
} 

这很可能是因为您从未设置k,并且它在程序开始时包含的随机值为负,因此sqrt(k)崩溃。此外,如果输入的m大于1000,则会超出数组边界。

您的程序将在:niza[i] = k处崩溃,因为i已超过数组的末尾。

k未初始化。您正在输出一个未初始化变量的平方根。

就像@Vilx-所说的,在循环之前,您必须检查m的值。

此外,sqrt函数不适用于数字数组,因此您必须想出一种不同的方法来计算基于数字的平方根。

您需要在cin >> mcin >> niza[i]之后检查cin的状态。用户可以也将输入任何内容,例如字母,当需要数字时,这些内容会导致失败。

此外,请尝试在运算符和函数名之间放置空格。它们不会增加可执行文件的大小或速度,但会使读取和维护更容易。