| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3188 人关注过本帖, 2 人收藏
标题:刚学C语言,不太会,用多重循环,求大佬赐教
只看楼主 加入收藏
opq2020
Rank: 1
等 级:新手上路
帖 子:15
专家分:3
注 册:2020-4-3
结帖率:100%
收藏(2)
已结贴  问题点数:20 回复次数:10 
刚学C语言,不太会,用多重循环,求大佬赐教
输出 1000 到 20000 之间的数据中有 3 个数字为 9 的所有整数,每行输出 8 个数
搜索更多相关主题的帖子: C语言 输出 循环 多重 每行 
2020-04-03 18:43
hbccc
Rank: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:108
专家分:315
注 册:2020-2-18
收藏
得分:0 
用%和/来求
2020-04-03 19:32
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:0 
9999算不算?
有没有要求按照从小到大的顺序输出
乱序可以吗

[此贴子已经被作者于2020-4-3 19:57编辑过]


https://zh.
2020-04-03 19:54
吕孟伟
Rank: 8Rank: 8
等 级:贵宾
威 望:27
帖 子:200
专家分:870
注 册:2018-10-4
收藏
得分:20 
程序代码:
#include<stdio.h>

int main(void) {
    
    int i, n, cnt, index;

    for(i = 1000, index = 0; i <= 20000; ++i) {
        n = i;
        cnt = 0;
        while( n ) {
            if(n % 10 == 9) {
                ++cnt;
            }
            n /= 10;
        }
        if(3 == cnt) {
            printf("%d\t", i);
            ++index;
            if(index%8 == 0) {
                printf("\n");
            }
        }

    }

    return 0;
}

输出:
1999    2999    3999    4999    5999    6999    7999    8999
9099    9199    9299    9399    9499    9599    9699    9799
9899    9909    9919    9929    9939    9949    9959    9969
9979    9989    9990    9991    9992    9993    9994    9995
9996    9997    9998    10999   11999   12999   13999   14999
15999   16999   17999   18999   19099   19199   19299   19399
19499   19599   19699   19799   19899   19909   19919   19929
19939   19949   19959   19969   19979   19989   19990   19991
19992   19993   19994   19995   19996   19997   19998
代码较丑,你可以再简化写得优美一些。再根据楼上的问题适当地进行修改。

借用一下侯捷的话:勿在浮沙筑高台。
2020-04-03 22:09
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
笨方法是从1000循环到20000,按位统计3个9的数输出,循环19000次。还有一个高效办法是先把999定位,用9进制计数器把9逐位挤出来,大概循环4×9+4×9-1=71次即可得到结果。

能编个毛线衣吗?
2020-04-03 22:14
hbccc
Rank: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:108
专家分:315
注 册:2020-2-18
收藏
得分:0 

//输出 1000 到 20000 之间的数据中有 3 个数字为 9 的所有整数,每行输出 8 个数
//writer:hbccc
#include<stdio.h>
#include<stdbool.h>

int main(void)
{
    int a=0,sum=0,hh=0;
    bool nine[5]={false,false,false,false,false};
   
    for(int i=1000;i<=20000;i++)
    {
        a=i;
        for(int j=0;j<5;j++)
        {
        if(a%10==9)
        {
            nine[j]=true;
            sum+=nine[j];
        }
        a/=10;
        }
        if(sum>=3&&sum<=5)
        {
            printf("%d\t\t",i);
            hh++;
            if(hh==8)
            {
                printf("\n");
                hh=0;
            }
        }
        sum=0;
        
        
        for(int j=0;j<5;j++)
        {
            nine[j]=false;
        }
    }
    return 0;
}
2020-04-03 22:24
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
3楼的问题很重要,“9999算不算?
假设是 允许3个9的话,
程序代码:
#include <stdio.h>

int main( void )
{
    for( unsigned i=1; i!=72; ++i )
    {
        unsigned x = (unsigned[]){1000,100,10,1}[i%36/9];
        printf( "%u%c", i/36*10000 + 999%x + 999/x*x*10 + i%9*x, " \n"[i%8==0] );
    }
}


收到的鲜花
  • forever742020-04-04 08:44 送鲜花  1朵   附言:赞!精炼就是美
  • 吕孟伟2020-04-04 15:27 送鲜花  1朵   附言:哈哈哈,请收下我的膝盖!
  • x674491232020-04-07 15:44 送鲜花  1朵   附言:五体投地
2020-04-03 23:17
纯蓝之刃
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:76
帖 子:570
专家分:3727
注 册:2019-7-29
收藏
得分:0 
回复 7楼 rjsp
这种写法是哪里规定的呢?
一开始根本就看不明白,后来根据输出结果大概理解这么写的含义了,
但是还是不知道这么写的格式依据是什么。换句话说,me孤陋寡闻了。。。(没见过)

一沙一世界,一花一天堂。无限掌中置,刹那成永恒。
2020-04-03 23:59
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:0 
回复 8楼 纯蓝之刃
C99的复合字面量
https://zh.

https://zh.
2020-04-04 01:53
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
回复 7楼 rjsp

将rjsp版主代码修改为大部分编译器可编译的代码:
程序代码:
#include <stdio.h>

int main(void)
{
    int i, x, a[] = { 1000,100,10,1 };
    for (i = 1; i != 72; ++i)
    {
        x = a[i % 36 / 9];
        printf("%5d%c", i / 36 * 10000 + 999 % x + 999 / x * x * 10 + i % 9 * x, i % 8 ? ' ':'\n');
        //" \n"[i%8==0]等同于字符串常量指针运算,二选一的话用三目运算更容易理解些
    }
}


“999 / x * x * 10”可不要迷惑哦,不能像数学里那样:干嘛不直接写“9990”,其实是动态地输出0,9000,9900,9990

[此贴子已经被作者于2020-4-4 07:32编辑过]


能编个毛线衣吗?
2020-04-04 07:21
快速回复:刚学C语言,不太会,用多重循环,求大佬赐教
数据加载中...
 
   



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

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