| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
买学问 - 大牛一对一辅导,有问必答买学问 - 专业的付费知识问答平台
共有 394 人关注过本帖
标题:不知道哪里逻辑错了,代码写得不好,麻烦大家帮忙看看,可以帮我把整个改掉 ...
只看楼主 加入收藏
加冕
Rank: 2
等 级:论坛游民
帖 子:31
专家分:15
注 册:2018-11-24
结帖率:62.5%
  已结贴   问题点数:20  回复次数:3   
不知道哪里逻辑错了,代码写得不好,麻烦大家帮忙看看,可以帮我把整个改掉,指出我的错误,谢谢输入一个正整数n(1<n≤10),再输入n个正整数,找出其中的素数,并
#include<stdio.h>
#define n 10
main()
{
    int x,j,k,i,a[n],b[n],max;
    scanf("%d",&x);
    for(i=0;i<x;i++)
    {
    scanf("%d",&b[i]);     
    k=0;
       for(j=0;j<b[k];j++)//在输入一组数的同时,进行素数判断
    {
        if(b[k]%j==0) break;
        k++;
    }
    if(j>=b[k])   //将得到的一组素数  赋予新数组   
        a[i]=b[k];
   
    }
        
        
     
        
        //进行排序
        
        for(i=0;i<x-1;i++)

    {
        max=a[i];
        for(j=i+1;j<x;j++)
        {
            if(max<a[j])
            {
                max=a[j];
                k=j;
            }
            a[k]=a[i];
            a[i]=max;
        }

    }  for(i=0;i<x;i++)
        printf("%d",a[i]);
}
2018-11-26 21:31
C基础
Rank: 6Rank: 6
等 级:侠之大者
威 望:6
帖 子:130
专家分:416
注 册:2018-10-15
  得分:10 
#include "stdio.h"
int main()
{
    int b[1000],a[1000];//没有必要去自定义常量,不是什么大的程序,没必要去定义常量,就简原则
    int i,j,n,s=0;//这里注意把s初始化,因为下面变量s是直接用的,i,j变量下面在使用之前进行了赋值,所以这里可以初始化,也可以不初始化
    printf("请输入需要判断的数字的个数,并按下回车键:\n");
    scanf("%d",&n);
    printf("请输入需要判断的n个数字\n");
    for(i=0;i<n;i++)
    scanf("%d",&a[i]);
    for(i=0;i<n;i++)
    {
        for(j=2;j<a[i];j++)
        if(a[i]%j==0)
        break;
        if(j==a[i])
        {
          b[s]=a[i];
          s++;
        }
    }
    printf("这n个数字中的素数分别为:\n");
    for(i=0;i<s-1;i++)//注意这里是s-1不是s
    printf("%d\t",b[i]);
return 0;
}


我的程序是在DEVC的基础上运行成功的,希望对你有所帮助,至于你的程序中,虽然没有语法错误,但是就第一个for循环语法混乱,这里不是批评你,也不是我不想给你纠正,我希望你能通过自己找出来,我给你一个提示,你就先看看你的第一个循环中,按照你的想法是输入一个数字然后按下回车,然后输入n个数字,但是你看看你的第一个for循环是不是按照你的步骤进行的,相信你可以找出来,如果找不出来的话,可以发消息给我。
2018-11-26 22:39
kfyniriu
Rank: 6Rank: 6
等 级:侠之大者
威 望:9
帖 子:105
专家分:426
注 册:2018-7-6
  得分:10 
#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int main()
{
    int i,j,n,*p;

    scanf("%d",&n);
    p = (int*) malloc (sizeof(int)*n);

    for(i=0;i<n;++*p,i++)
    {
        scanf("%d",p);
        if(*p==1 || *p==2 || *p==3)        //1,2,3是素数
            printf("%d\t",*p);
        else
        {
            for(j=2;j<sqrt(*p);j++)        //判断是否是素数,是就输出,不是就跳过
                if(*p%j==0)
                    break;
            if(j>=sqrt(*p))
                printf("%d\t",*p);
        }
    }
    printf("\n");

    return 0;
}
2018-11-27 15:52
加冕
Rank: 2
等 级:论坛游民
帖 子:31
专家分:15
注 册:2018-11-24
  得分:0 
回复 楼主 加冕
请问是在素数判断if()要从2开始是吗?
但是还是有错

授人以鱼不如授人以渔请说一下用什么方法和需要学习什么来解决问题,谢谢大家
2018-11-28 19:15







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.069232 second(s), 9 queries.
Copyright©2004-2019, BCCN.NET, All Rights Reserved