输出7和7的倍数,还有包含7的数字
输出7和7的倍数,还有包含7的数字例如(17,27,37...70,71,72,73...)
【要求】
【数据输入】一个整数N。(N不大于30000)
【数据输出】从小到大排列的不大于N的与7有关的数字,每行一个。
【样例输入】
20
【样例输出】
7
14
17
我用if语句做了,但是太麻烦,想换成switch语句,但是却写不出来。 这样的该怎么写啊?
[解决办法]
先存去以个char数组.
然后sscanf()//一次格式化成整数.然后判断能否被7整除.
在一次sscanf()//只要7这个数字,存去一个字符串最后判对应的字符串是否为空串.
[解决办法]
[code=C/C++]
#include <stdio.h>
int fun(){
int temp;
while(i> 10){
temp=i%10;
if(temp==7)
return 1;
i=i/10;
}
if(i!=7)
return 0;
}
int main(){
for(int i=7;i <N;i++){
if(i%7==0||fun(i))
printf( "%d\n ",i);
}
}
[/code]
[解决办法]
嗯二楼的解法可以了 但只是一个伪代码哦 要自己完善
[解决办法]
#include <iostream>using namespace std;//判断是否是7的倍数 bool IsDivision(const int n,const int m =7){ return !(n%m);}//判断整数n中是否含有7 bool IsContain(const int n,const int m =7){ int temp = n; while(temp) { if( m == temp%10) return true; else temp /= 10; } return false;}int main(){ int n; cout<<"Enter n:"<<endl; cin>>n; for(int i=7;i<=n;++i) { if(IsDivision(i) || IsContain(i)) cout<<i<<endl; } system("pause"); return 0;}
[解决办法]
root@~ #cat 3.c#include <stdio.h>#include <stdbool.h>int main (void) { int n,i; bool is7 (int n); scanf ("%i",&n); for(i=7;i<=n;i++) { if(i%7==0|is7(i)) { printf ("%i\n",i); } } return 0;}bool is7 (int n) { do { if(n%10==7) { return true; } n/=10; }while(n!=0); return false;}
[解决办法]
/*输出7和7的倍数,还有包含7的数字例如(17,27,37...70,71,72,73...)【要求】【数据输入】一个整数N。(N不大于30000)【数据输出】从小到大排列的不大于N的与7有关的数字,每行一个。【样例输入】20【样例输出】71417*/ #include <stdio.h>#define ARRAY 30000int main(int argc, char *argv[]){ int data; int i,m,j,k,index,fenjie[5]; int array_test[ARRAY]; int flag=0; index=0; printf("please input a data<=30000\n"); scanf("%d",&data); for(i=7;i<=data;i++) { m=i; for(j=4;j>=0;j--) { fenjie[j]=m%10; m/=10; } flag=(fenjie[4]==7)||(fenjie[3]==7)||(fenjie[2]==7)||(fenjie[1]==7)||(fenjie[0]==7); if((i%7==0)||flag) { array_test[index++]=i; } } for(k=0;k<index;k++) { printf("%d\n",array_test[k]); } return 0;}
[解决办法]
[code=C/C++][/code]#include "StdAfx.h"
int main()
{
for(int i=7;i <300;i++)
{
if(i%7==0||i%10==7)
printf("%d\n",i);
}
}
N=300,自己可以调
[解决办法]
#include <iostream>
#include <sstream>
using namespace std;
void s7(int n)
{
for(int i=1;i<n;++i)
{
if(i%7==0)cout<<i<<" ";
if(i%10==7)cout<<i<<" ";
}
cout<<endl;
}
int main(int argc,char** argv)
{
stringstream ss;
ss<<argv[1];
int val;
ss>>val;
s7(val);
}
[解决办法]
2楼的正解,我补充一个简洁点的!
void print_7(int m){int i = 0;char Temp[100] = "\0";for(i=1; i<=m; i++){if(i%7 == 0){printf("%d ",i);continue;}sprintf(Temp,"%d",i);if(strstr(Temp,"7") != NULL)printf("%s ",Temp);}return;}
[解决办法]
最基础的方法了,还是if语句~~
//输出7和7的倍数,还有包含7的数字例如(17,27,37...70,71,72,73...)
#include<stdio.h>
#include<stdlib.h>
#define N 200
int main()
{
int i=7,temp,temp2;
while(i<=N){
if(0==i%7){//7的倍数
printf("%d\n",i);
++i;
continue;
}
else{
temp=i;
while(temp>=7){
temp2=temp-temp/10*10;//temp2是最低位数字
if(7==temp2){
printf("%d\n",i);//包含7的数
break;
}
temp/=10;//去掉最低位
}
i++;
}
}
system("pause");
return 0;
}