这是我的代码
#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一直增加呀,,,
第二个回答是正确的,你在循环的时候如果你的需求是遍历并处理所有的数据,则不需要跳出语句,但是如果你不是要遍历并处理所有的数据,只是需要其中几个或一个的时候,一定要注意跳出循环
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);
}
}
n加到等于a的时候,就开始打印,到n再+1,停止打印
lz的错误是少了一个跳出循环的条件,
if(n==a) {
printf("%d\n",t);
break;
}
这样就可以了
t=107的时候,n不自加,n=1,n==a,输出t;
可以将所有满足要求的数按顺序存到数组里面,然后调用,输出
#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 ;
}
}
}
缺少一个break,当n = 1时,t = 106,之后107,108...,n一直是1,都会有n==a,知道t = 115,n会等于2,之后就不会再输出t了
输出地方判断有误的哦!你这样会输出从第一个满足条件的数到下一个满足个十百等于7的数字。因为这中间n一直没有变,满足你的输出条件。
应该在输出完成第一次后处理n的值