| 网站首页 | 业界新闻 | 群组 | 人才 | 技术文章 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 277 人关注过本帖
标题:小白求教,这样编还有问题,有没有需要优化的地方???
只看楼主 收藏
加一
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2017-7-29
结帖率:100%
  已结贴   问题点数:20  回复次数:7   
小白求教,这样编还有问题,有没有需要优化的地方???
main()
{
/*
编程实现:输入一个整数,判断它是否被3、5、7整处,并输入以下信息之一;
1 能同时被3、5、7整除;
2 能同时被两个数整除(指出哪两个);
3 能被其中一个整除(指出哪一个);
4不能被3、5、7任何一个整除
*/

    int i = 0, j = 0, k = 0;
    int num;
    printf("请输入一个数:");
    scanf("%d",&num);
    if(num % 3 == 0)
        i++;
    if(num % 5 == 0)
        j++;
    if(num % 7 == 0)
        k++;
    switch(i+j+k)
    {
        case 0 :
            printf("不能被3、5、7任何一个数整除");
            break;
        case 1 :
            printf("能被其中一个整除");
            if(i)
            {
                printf("被3整除");
            }
            if(j)
            {
                printf("被5整除");
            }if(k)
            {
                printf("被7整除");
            }
            break;
        case 2 :
            printf("能被其中俩个整除");
            if(i)
            {
                printf("被3整除");
            }
            if(j)
            {
                printf("被5整除");
            }if(k)
            {
                printf("被7整除");
            }
            break;
        case 3 :
            printf("能同时被3、5、7整除;");
            break;
        
    }
        
    return 0;
}
2017-08-11 19:56
jklqwe111
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:10
帖 子:217
专家分:709
注 册:2014-4-13
  得分:5 
int k = 0;
    int num;
    printf("请输入一个数:");
    scanf("%d",&num);
    if(num % 3 == 0)
        k+=1;
    if(num % 5 == 0)
        k+=2;
    if(num % 7 == 0)
        k+=4;
    switch(k)
    {
        case 0 :
            printf("不能被3、5、7任何一个数整除");
            break;
        case 1 :
           
                printf("被3整除");
               break;
           
              case  2 :
                 printf("被5整除");
          case 4:
                printf("被7整除");
            
            break;
        case 3 :
            printf("能被3,5俩个整除");
             break;
            case 5 :
                printf("被3,7整除");

            break;
          case 6
                printf("被5,7整除");
           
               
            break;
        case 7:
            printf("能同时被3、5、7整除;");
            break;
        
    }
        
    return 0;  
}
2017-08-11 20:29
lmlm1001
Rank: 6Rank: 6
等 级:侠之大者
威 望:3
帖 子:99
专家分:490
注 册:2015-3-1
  得分:5 
#include <stdio.h>
int main(void)
{
    int n = 0, m3 = 0, m5 = 0, m7 = 0;
    scanf("%d", &n);
    if( 0 == n )
        return 1;
    m3 = 0 == n % 3 ? 0 : 1;
    m5 = 0 == n % 5 ? 0 : 1;
    m7 = 0 == n % 7 ? 0 : 1;
    m3 + m5 + m7 < 3 && printf("can mod by %d integer as :%s%s%s\n", 3 - m3 - m5 - m7, 0 == m3 ? " 3" : "", 0 == m5 ? " 5" : "", 0 == m7 ? " 7" : "") || printf("can not mod by 3 5 7\n");
    return 0;
}
2017-08-11 23:46
八画小子
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:466
专家分:1107
注 册:2010-11-11
  得分:5 
从理论上来说,最优化的解决方案不需要任何除法就可以完成。
2017-08-12 11:39
lmlm1001
Rank: 6Rank: 6
等 级:侠之大者
威 望:3
帖 子:99
专家分:490
注 册:2015-3-1
  得分:0 
to 四楼:
截止到四楼的代码,都没有出现过除法
2017-08-12 14:02
小巷小北
Rank: 1
等 级:新手上路
帖 子:3
专家分:5
注 册:2017-5-27
  得分:5 
帮三楼改了一点符号

#include <stdio.h>
int main(void)
{
    int n = 0, m3 = 0, m5 = 0, m7 = 0;
    scanf("%d", &n);
    if( 0 == n )
        return 1;
    m3 = 0 == n % 3 ? 0 : 1;
    m5 = 0 == n % 5 ? 0 : 1;
    m7 = 0 == n % 7 ? 0 : 1;
    m3 + m5 + m7 < 3 &&
printf("can mod by %d integer as :%s%s%s\n",
3 - m3 - m5 - m7, 0 == m3 ? " 3" : "", 0 == m5 ? " 5" : "",
 0 == m7 ? " 7" : "");printf("can not mod by 3 5 7\n");
    return 0;
}
6 天前 02:04
lmlm1001
Rank: 6Rank: 6
等 级:侠之大者
威 望:3
帖 子:99
专家分:490
注 册:2015-3-1
  得分:0 
to 六楼:
    你的意思是,任何数都要输出 can not mod by 3 5 7
    是这意思么?
6 天前 20:02
加一
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2017-7-29
  得分:0 
回复 2楼 jklqwe111
受教,计数时复杂了
3 天前 21:03









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

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