在一行中输入一个正整数
,满足
。
按升序输出所有满足条件的整数,每个数字占一行。
9
1 2 3 5 6 7 9
在到
中,数字
含有数字 4 且
为
的倍数,应跳过,剩余数字按升序输出。
#include <stdio.h>
int main()
{
int n=0;
scanf("%d",&n);
for(int i=1;i<=n;i++)//下面的分类是针对到具体的那个数字。不要理解错误
{
if(i%4>0)//非4的倍数
{
if(i<=10)
{
printf("%d\n",i);
}
else if(i>10)
{
for(int i1=i;i1>0;i1=i1/10)//是为了判断i中的每一位是否有4
{
if(i1%10==4)
{
break;
}
else if(i1%10!=4)//一旦有4就去掉,当i1为个位数时,再余10也是个位
{
if(i1<10)
{
printf("%d\n",i);
}
}
}
}
}
}
return 0;
} 卡在那个去除所有含有4的数字这一步很久(楼主菜)。 for(int i1=i;i1>0;i1=i1/10)//是为了判断i中的每一位是否有4
{
if(i1%10==4)
{
break;
}
else if(i1%10!=4)//一旦有4就去掉,当i1为个位数时,再余10也是个位
{
if(i1<10)
{
printf("%d\n",i);
}
}
} 找到有4的数不难,主要是那个输出部分老是出错,printf函数没放好,导致出现了好几次一样的数(比如111,就会输出3次,循环出了问题)。#include <iostream>
#include <string>
using namespace std;
bool containsFour(int num) {
string s = to_string(num);
return s.find('4') != string::npos;
}
int main() {
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
if (i % 4 == 0 || containsFour(i)) {
continue;
}
cout << i << endl;
}
return 0;
}
#include <iostream>
using namespace std;
int f(int b);
int f(int b){
int i;
while(b){
i=b%10;
b/=10;
if(i==4){
return 1;
}
}
return 0;
}
int main() {
int a, b;
cin>>a;
for(b=1;b<=a;b++){
if(b==4||b%4==0){
continue;
}
if(f(b)){
continue;
}
cout<<b<<endl;
}
}