快乐王子146 2021-11-23 11:06 采纳率: 100%
浏览 26
已结题

我想问一下为什么没有输出

img


#include<stdio.h>
#include<math.h>
#define N 2000
int count = 0;
int Isprime(int n);
void Firtrow(int a[]);
void Secondrow(int a[],int b[]);
void Exam(int a[],int b[]);
void Printf(int a[],int m,int i);
int main()
{
int st[N] = {0},nd[N] = {0};
Firtrow(st);
Secondrow(st,nd);
Exam(nd,st);
return 0;
}

int Isprime(int n)
{
int i;
if(n == 1)
{
return 0;
}
for(i = 2;i <= sqrt(n);i ++)
{
if(n % i == 0)
{
return 0;
}
}
return 1;
}

void Firtrow(int a[])
{
int i,m;
m = 0;
for(i = 1;i <= 2000;i ++)
{
if(Isprime(i))
{
a[m] = i;
m ++;
}
}
}

void Secondrow(int a[],int b[])
{
int i;
for(i = 0;a[i + 1] != 0;i ++)
{
b[i] = a[i + 1] - a[i];
}
}

void Exam(int a[],int b[])
{
int i,sum,m,flag;
sum = flag = 0;
for(m = -1;a[m + 1] != 0;m ++)
{
for(i = m + 1;sum < 1898 && flag == 0 && i < N;i ++)
{
sum += a[i];
if(sum == 1898)
{
flag = 1;
}
}
if(flag == 1)
{
count ++;
flag = 0;
Printf(b,m,i);
}
}
}

void Printf(int a[],int m,int i)
{
printf("There are follwing primes in first row :\n");
printf("(%d).%3d,......,%d\n",count,a[m + 1],a[i - 1]);
}

  • 写回答

1条回答 默认 最新

  • ヾ凉秋 2021-11-23 11:42
    关注

    for(m = -1;a[m + 1] != 0;m ++)这个地方的a[m + 1] != 0,a[m + 1] 的值是0,0!=0返回的是false,程序就没有进入这个for循环所以就没有进入if(flag == 1)
    {
    count ++;
    flag = 0;
    Printf(b,m,i);
    }判断,没有调用到Printf方法,自然就没有输出了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 12月1日
  • 已采纳回答 11月23日
  • 创建了问题 11月23日

悬赏问题

  • ¥15 odoo17处理受托加工产品
  • ¥15 如何用MATLAB编码图三的积分
  • ¥15 为什么我安装了Homebrew之后,无法像官网的那样通过执行命令安装Watchman
  • ¥15 圆孔衍射光强随孔径变化
  • ¥15 MacBook pro m3max上用vscode运行c语言没有反应
  • ¥15 ESP-PROG配置错误,ALL ONES
  • ¥15 结构功能耦合指标计算
  • ¥50 AI大模型精调(百度千帆、飞浆)
  • ¥15 非科班怎么跑代码?如何导数据和调参
  • ¥15 福州市的全人群死因监测点死亡原因报表