首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

输出7和7的倍数,还有包含7的数字,该如何处理

2012-03-12 
输出7和7的倍数,还有包含7的数字输出7和7的倍数,还有包含7的数字例如(17,27,37...70,71,72,73...)【要求】【

输出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]
[解决办法]
嗯二楼的解法可以了 但只是一个伪代码哦 要自己完善
[解决办法]

C/C++ 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
C/C++ code
#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;}
[解决办法]
C/C++ code
/*输出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楼的正解,我补充一个简洁点的!

C/C++ code
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;
}

热点排行
Bad Request.