kid_0203
kid_0203
采纳率85.1%
2015-10-23 12:50

我想问一下c语言循环语句的问题~

已采纳

图片说明图片说明
这是我的代码

 #include <stdio.h>
void main()                     
{int a,n=0,i,j,k,t;            
scanf("%d",&a);              
for(t=100;t<=999;t+=1)                     
{i=t/100;            
j=t/10%10;            
k=t%10;            
if(i+j+k==7) n+=1;            
if(n==a) printf("%d\n",t);              
}                  
}  

我使用了循环语句,但是结果出来很多数字 我不明白后面那些如何出来的,,,按说if(n==a)应该只有一种情况 a是输入的 然后n一直增加呀,,,

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

8条回答

  • qq_28633157 蒙昧的自己 6年前

    第二个回答是正确的,你在循环的时候如果你的需求是遍历并处理所有的数据,则不需要跳出语句,但是如果你不是要遍历并处理所有的数据,只是需要其中几个或一个的时候,一定要注意跳出循环
    for(t=100;t<=999;t+=1)

    {
    i=t/100;

    j=t/10%10;

    k=t%10;

    if(i+j+k==7)
    n+=1;

    if(n==a)
    {
    //你这里的意思是如果n==a,则输出所有的第一个数字为一的,且个位,十位,百位之和为7的数字
    printf("%d\n",t);

    }
    }

    点赞 评论 复制链接分享
  • aishugang SHUGANG_AI 6年前

    t=107的时候,n不自加,n=1,n==a,输出t;
    可以将所有满足要求的数按顺序存到数组里面,然后调用,输出

    点赞 1 评论 复制链接分享
  • u012505618 cxlovu 6年前

    lz的错误是少了一个跳出循环的条件,

     if(n==a) {
            printf("%d\n",t);
            break;
     }
    

    这样就可以了

    点赞 1 评论 复制链接分享
  • Leexianke Leexianke 6年前

    应该在输出完成第一次后处理n的值

    点赞 评论 复制链接分享
  • Fancyyuan yuans_f 6年前

    输出地方判断有误的哦!你这样会输出从第一个满足条件的数到下一个满足个十百等于7的数字。因为这中间n一直没有变,满足你的输出条件。

    点赞 评论 复制链接分享
  • havedream_one havedream_one 6年前

    缺少一个break,当n = 1时,t = 106,之后107,108...,n一直是1,都会有n==a,知道t = 115,n会等于2,之后就不会再输出t了

    点赞 评论 复制链接分享
  • c18120446428 0_0Kirk 6年前

    #include
    void main()

    {
    int a,n=0,i,j,k,t;

    scanf("%d",&a);

    for(t=100;t<=999;t+=1)

    {
    i=t/100;

    j=t/10%10;

    k=t%10;

    if((i+j+k)==7)
    n+=1;

    if(n==a)
    {
    printf("%d\n",t);
    break ;
    }
    }

    }

    点赞 评论 复制链接分享
  • q3733353520 我用双手-成就你的梦想 6年前

    n加到等于a的时候,就开始打印,到n再+1,停止打印

    点赞 评论 复制链接分享

相关推荐