arrays - 如何创建一个存储素数的数组?
问题描述
给定用户一个 8 个整数的数组,程序应该打印出每个输入的素数。输入一些数字后程序停止,我不知道为什么。你能告诉我我做错了什么吗?代码:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int main()
{
const int N=8;
int i, j, count, x;
int arr[N];
int prime[N];
j = 2;
for(i = 0; i < N; i++)
{
printf("Enter a number %d:", i + 1);
scanf("%d", &arr[i]);
if (arr[i] == 1)
{
prime[i] = arr[i];
count++;
}
else
{
do
{
x=arr[i] % j;
if (x != 0)
j++;
else
break;
}
while(true);
if(arr[i] == j)
{
prime[i] = arr[i];
count++;
}
}
}
for (i = 0; i < count; i++)
printf("%dth prime number:%d\n", i + 1, prime[i]);
getch();
return 0;
}
解决方案
如果用户输入的整数小于前一个整数,您的程序将进入无限循环。您可能打算在 else 子句中初始化j,就在 do-while 循环之前。
另请注意,您应该检查scanf的返回值,以确保实际输入了一个整数。
推荐阅读
- reactjs - 如何在 JEST 中测试 Window.postMessage()?
- javascript - IndexedDB - 如何在对象存储中读取最大 ID
- python - 根据索引从一列中选择第一个值,从第二个中选择最后一个值
- node.js - 在 Express 和 Axios 中使用 JSON 发布文件(图片)
- sql-server - 在使用 row_number() 时加入临时表
- markdown - 是否可以在 yaml 前端指定 pandoc 独立选项?
- docker - lasticsearch.exceptions.RequestError search_phase_execution_exception','编译错误')
- mysql - 如何复制数据库中列的内容
- javascript - 有没有办法让 IMG 标签上的边距可点击以关闭模式?
- scala - 在 scala sangria-graphql 中处理 api 调用身份验证