| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1733 人关注过本帖
标题:麻烦大佬看看还有谁不足
只看楼主 加入收藏
Knightl8
Rank: 1
等 级:新手上路
帖 子:48
专家分:7
注 册:2020-3-8
结帖率:87.5%
收藏
已结贴  问题点数:8 回复次数:8 
麻烦大佬看看还有谁不足
问题
图片附件: 游客没有浏览图片的权限,请 登录注册

我的答案,不知道为啥我判断是否全部都为0,竟然错误的测试点比美没加之前多了,麻烦大佬指点指点
程序代码:
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int a[10];
    int flag = 0;  //判断是否全为0
    for (int i = 0; i < 10; i++)
        scanf("%d", &a[i]);
    int index = 0;

    if (a[0] != 0)
    {
        while (a[++index])
        {
            flag = 1;
            printf("%d", index);
            a[index]--;
            break;
        }
    }
    for (int i = 0; i < 10; i++)
    {
        while (a[i])
        {
            printf("%d", i);
            a[i]--;
        }
    }
    if (!flag)
    {
        printf("%d", 0);
    }
    system("pause");
    return 0;
}
搜索更多相关主题的帖子: flag printf int 是否 index 
2020-03-11 22:03
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
收藏
得分:2 
输入与输出不合题意?输入有2输出一个2都没了?
2020-03-11 22:13
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
收藏
得分:0 
其实这个题目很简单只是对0进行特别处理即可。
2020-03-11 22:14
Knightl8
Rank: 1
等 级:新手上路
帖 子:48
专家分:7
注 册:2020-3-8
收藏
得分:0 
回复 2楼 xianfajushi
它那个2是判断0有几个
2020-03-11 22:21
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
收藏
得分:0 
看不懂输入与输出的关系,能解释?意思是说下标就是数字的值?若如此就对了,那就更容易了。
图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2020-3-11 22:51编辑过]

2020-03-11 22:27
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
收藏
得分:0 
忘记添加花括号了,更正:    if (a[0])cout << j << ends, a[j]--;
2020-03-11 23:29
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10539
专家分:42927
注 册:2014-5-20
收藏
得分:2 
图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册

#include <stdio.h>

int main(void)
{
    int i, j, a[10];
    for (i = 0; i < 10; ++i)
        scanf("%d", &a[i]);
    for (i=1; i<10 && !a[i]; ++i);
    if (i==10)
        return 0;
    printf("%d", i);
    for (j=0; j<a[0]; ++j)
        printf("0");
    for (--a[i]; i<10; ++i)
        for (j=0; j<a[i]; ++j)
            printf("%d", i);
    printf("\n");
    system("pause");
    return 0;
}
2020-03-12 07:49
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
收藏
得分:2 
楼主的意思应该是这样的吧:
给定两个 0,两个 1,三个 5,一个 8,我们得到的最小的数就是 10015558。
如果给定两个 0,两个 7,三个 5,一个 8,我们得到的最小的数就是 50055778。
如果是这样的话,请看:
程序代码:
#include <stdio.h>
int main()
{
    int a[10];
    int i,j,m,n;
    n=0;
    for(i=0;i<10;i++)
    scanf("%d",&a[i]);
    for(i=0;i<9;i++)
    {
       for(j=i+1;j<10;j++)
       {
           if(a[j]<a[i])
           {
               m=a[j];
               a[j]=a[i];
               a[i]=m;
           }
       }
    }
    for(i=0;i<10;i++)
    {
        if(a[i]==0)
        n=n+1;
    }
    a[0]=a[n];
    a[n]=0;
    for(i=0;i<10;i++)
    {
        printf("%d",a[i]);
    }
    return 0;
}
2020-03-12 16:35
bcbbcclbbc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:194
专家分:528
注 册:2019-8-15
收藏
得分:2 
while语句应该加上一个判断语句。
while(1){
if(!a[++index]) continue;
if (a[0] != 0)  
    {
        while (a[++index])
/*问题在while语句。在遇到需要输出0的情况,while语句应该先找到一个非0的数字,然后输出这个数退出循环。
这里存在有一个bug就是如果数字1的个数为0即++index==0,这时没有执行while,就做了无用功。*/
        {                  
            flag = 1;
            printf("%d", index);
            a[index]--;
            break;
        }
    }
2020-03-13 01:12
快速回复:麻烦大佬看看还有谁不足
数据加载中...
 
   



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

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