| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 956 人关注过本帖
标题:代码有问体,求大家帮忙找找改改!!谢谢了!!!
只看楼主 加入收藏
jokerskill
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:392
专家分:554
注 册:2012-3-4
结帖率:73.08%
收藏
已结贴  问题点数:20 回复次数:11 
代码有问体,求大家帮忙找找改改!!谢谢了!!!
这是一个求输入的一个数然后判断他是质数(又称素数),还是合数(并把所以约数列出来)的代码;觉得有些问题,求大家改改,哪里有问题????
#include <stdio.h>
int main(void)
{
int a,b = 0,n;
scanf("%d",&n);
for ( a = 1; a < 10; ++a ) {
if ( a == n ) {
printf("%d%%d = %d",n,a,n%a);
printf("%d的约数有:%d",n,a);
++b;
printf("%d能够被整除%d次",n,b);
if ( b > 2 )
printf("%d:是一个合数",n);
else if ( b <= 2 )
printf("%d:是一个质数",n);
break;
}
if ( n%a == 0 )
{
printf("%d的约数有:%d",n,a);
++b;
printf("%d能够被整除%d次",n,b);
}
else
printf("不能整除%d的书有:%d",n,a);
}
return 0;
}
当我输入整数4的时候输出的是:4的约数有:14能够被整除1次4的约数有:24能够被整除2次不能整除4的书有:34%d = 44的约
数有:44能够被整除3次4:是一个合数。

下面是编译的内容:没有错误,但是有一警告:
Warning 3.c: 8  printf: too many arguments
0 errors, 1 warning
搜索更多相关主题的帖子: include 
2012-06-20 15:03
雪狼MJ
Rank: 8Rank: 8
来 自:甘肃
等 级:蝙蝠侠
威 望:4
帖 子:267
专家分:853
注 册:2012-5-27
收藏
得分:10 
这是我在你的代码的基础上修改的,你看看吧:
#include <stdio.h>
#include <math.h>
int main(void)
{
    int a, b=0, n;
    scanf("%d",&n);
    for (a=2;a< sqrt(n); a++) {
        if ( n%a==0 ) {
            ++b;
        }
        else if (b==0){
            printf(" %d:是一个质数",n);
            break;
        }
    }
    if ( b >0 ) {
           printf("%d:是一个合数\n",n);
           printf("约数为:");
           for(a=2;a<n;a++){
                   if(n%a==0) printf("%4d", a);
               }
        }
    putchar(10);
    return 0;
}

Edsger Dijkstra:算法+数据结构=程序
2012-06-20 16:16
雪狼MJ
Rank: 8Rank: 8
来 自:甘肃
等 级:蝙蝠侠
威 望:4
帖 子:267
专家分:853
注 册:2012-5-27
收藏
得分:0 
你的代码里有许多printf语句是没用的,我都剪掉了

Edsger Dijkstra:算法+数据结构=程序
2012-06-20 16:18
星璇凌
Rank: 2
等 级:论坛游民
帖 子:15
专家分:33
注 册:2012-6-19
收藏
得分:10 
回复 2楼 雪狼MJ
我试了下,这个稍微有点问题,有2以上约数的都算成质数了。而且对于可以直接开方的也不对,我改了一下。
#include <stdio.h>
#include <math.h>
int main(void)
{
    int a, b=0, n;
    scanf("%d",&n);
    for (a=2;a<=sqrt(n); a++) {
        if ( n%a==0 ) {
            ++b;
        }   
    }
    if ( b >0 ) {
           printf("%d:是一个合数\n",n);
           printf("约数为:");
           for(a=2;a<n;a++){
                   if(n%a==0) printf("%4d", a);
               }
    }
    else if (b==0){
        printf(" %d:是一个质数",n);
    }
    putchar(10);
    return 0;
}
2012-06-20 17:08
雪狼MJ
Rank: 8Rank: 8
来 自:甘肃
等 级:蝙蝠侠
威 望:4
帖 子:267
专家分:853
注 册:2012-5-27
收藏
得分:0 
回复 4楼 星璇凌
嗯,是的,多谢改正

Edsger Dijkstra:算法+数据结构=程序
2012-06-20 17:18
jokerskill
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:392
专家分:554
注 册:2012-3-4
收藏
得分:0 
有机会出来喝茶啊我请客。
我 觉得大家挺有缘的,船长你好啊!!!
#include <stdio.h>
#include <math.h>
int main(void)
{
    int a, b=0, n;
    scanf("%d",&n);
    for (a=2;a<=sqrt(n); a++) {
        if ( n%a==0 ) {
            ++b;
        }   
    }
    if ( b >0 ) {
           printf("%d:是一个合数\n",n);
           printf("约数为:");
           for(a=2;a<n;a++){
                   if(n%a==0) printf("%4d", a);
               }
    }
    else if (b==0){
        printf(" %d:是一个质数",n);
    }
    putchar(10);
    return 0;
}
你的代码输出:4:是一个合数
约数为:   2
代码挺完美的
2012-06-20 18:01
jokerskill
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:392
专家分:554
注 册:2012-3-4
收藏
得分:0 
不错每人给10分,
2012-06-20 18:20
雪狼MJ
Rank: 8Rank: 8
来 自:甘肃
等 级:蝙蝠侠
威 望:4
帖 子:267
专家分:853
注 册:2012-5-27
收藏
得分:0 
喝茶?好啊!我太粗心了,都是人家美女细心,挑出了我的bug,一起切磋吧。。。。

Edsger Dijkstra:算法+数据结构=程序
2012-06-20 20:04
jokerskill
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:392
专家分:554
注 册:2012-3-4
收藏
得分:0 
美女的代码有一个错误:
当你输入1时是:1是一个质数(但是1即不是质数也不是合数)
2012-06-20 20:09
雪狼MJ
Rank: 8Rank: 8
来 自:甘肃
等 级:蝙蝠侠
威 望:4
帖 子:267
专家分:853
注 册:2012-5-27
收藏
得分:0 
群众的眼睛是雪亮的!有些bug在自己编的时候是发现不了的,多看几次,不同的视角会发现不同的bug,所以,发现错误就改!
所以,程序员都是好男人!

Edsger Dijkstra:算法+数据结构=程序
2012-06-20 20:18
快速回复:代码有问体,求大家帮忙找找改改!!谢谢了!!!
数据加载中...
 
   



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

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