先生。小Z看着一张纸,试图找到写在纸上的数字的平方根,但没有成功。
帮助Little Z先生找到数字B,它是BIG号A的平方根。数字A最多有1000位数字,A的平方根总是一个整数。
INPUT: 标准输入的第一行包含数字0
输出: 到标准输出写入数M,其中M表示数字B的长度(其中B是数字A的平方根),在接下来的M行中写入数字B的数字(从最高有效数字到数字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;
}
答案 0 :(得分:3)
这很可能是因为您从未设置k
,并且它在程序开头包含的随机值为负数,因此sqrt(k)
崩溃。此外,如果输入m
大于1000
,您将超出数组范围。
答案 1 :(得分:1)
您的程序将在niza[i] = k
崩溃,因为i
超过了数组的末尾。
k
未初始化。您正在输出未初始化变量的平方根。
就像@ Vilx-所说,你必须在循环之前检查m
的值。
此外,sqrt
函数对数字数组不起作用,因此您必须使用不同的方法根据数字计算平方根。
您需要在cin
和cin >> m
之后检查cin >> niza[i]
的状态。用户可以并且将输入任何内容,例如字母,这会在预期数字时导致失败。
另外,尝试在运算符和函数名之间放置空格。它们不会增加可执行文件的大小或速度,但可以使阅读和维护更容易。