首页 > 解决方案 > 使用 operator-new 和数组时出错

问题描述

我正在尝试编写一个程序,该程序需要输入一个自然数 n,创建一个包含 n 个自然数的数组,用零替换数组中的所有素数,并将生成的数组打印到屏幕上,但它以一个命令结束,而不是找到了,请向我解释我做错了什么

#include <iostream>

int main() {
 int *arr ;
 int n;
 for(int i = 0;i < n ;i++ ){
   std::cin>>n;
 }
 arr = new int [n]; 
 for(int i = 0;i < n ;i++ ){
   if(arr[i] % arr[i]/2 == 0 ){
      std::cout << arr[i];
   } else {
     arr[i] = 0;
     std::cout<< arr[i];
   }
 }
}

标签: c++arraysnew-operator

解决方案


首先,您的代码没有获得 的值n,您应该cin>>n然后使用 for 循环获取整个数组。另外,arr[i] % arr[i]/2总是为零,因为arr[i] %arr[i]是零。你应该知道如何检查一个数字是否是素数。这是一个 链接


推荐阅读