muweijingzhi 2023-05-19 17:14 采纳率: 33.3%
浏览 20

错在哪里呢 找不出来了

请问大家错在哪里,,
是用来求1000以内素数的 谢谢!

#include<stdio.h>
#include<stdlib.h>
typedef struct PRIME_LINK
{
    int prime;
    struct PRIME_LINK* next;
     
}su;

int panduan(int a)
{
    int i;
    for(i=2;i<a/2;i++)
    {
        if(a%i==0) return 0;
    }
    return 1;
}

int main()
{
    int i,n;
    su* p1,*p2,*head;
    p2=(su*)malloc(sizeof(su));
    for(i=2,n=0;i<1000;i++)
    {
        if(i==2||i==3||panduan(i)==1)
        {
            p1=(su*)malloc(sizeof(su));
            p1->prime=i;
            if(n==0) head=p1;
            else p2->next=p1; 
            p2=p1;
            n++;
        }
        
    }
    for(i=0;i<=n;i++)
    {
        printf("%d ",(head+i)->prime);
    }
}

  • 写回答

2条回答 默认 最新

  • 於黾 2023-05-19 17:18
    关注

    你既然定义的是链表而不是数组,访问的时候为什么不写while+next,而是用head+i,地址是连续的吗你就+i
    再说你建立链表的代码本身也是错的
    p1为什么没有挂在头结点后面而是挂到p2后面去了,那head应该指向p2才对呀
    head=p2=(su*)malloc(sizeof(su));这样就行了,不要到for循环里面再判断

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月19日

悬赏问题

  • ¥30 电脑误删了手机的照片怎么恢复?
  • ¥15 (标签-python|关键词-char)
  • ¥15 python+selenium,在新增时弹出了一个输入框
  • ¥15 苹果验机结果的api接口哪里有??单次调用1毛钱及以下。
  • ¥20 学生成绩管理系统设计
  • ¥15 来一个cc穿盾脚本开发者
  • ¥15 CST2023安装报错
  • ¥15 使用diffusionbert生成文字 结果是PAD和UNK怎么办
  • ¥15 有人懂怎么做大模型的客服系统吗?卡住了卡住了
  • ¥20 firefly-rk3399上启动卡住了