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

敲七有关问题

2012-04-15 
敲七问题敲七问题,输出与7相关的数字,能被7整除或数字中有一位是7,并统计个数。有逻辑上的错误,部分与7相关

敲七问题
敲七问题,输出与7相关的数字,能被7整除或数字中有一位是7,并统计个数。
有逻辑上的错误,部分与7相关的数字不能输出,另外在输入一个N,运行结束,然后再输入一个两位数,为什么会输出两个“input again”????
#include<iostream>
using namespace std;
void main()
{
int i,a=0,N,t;
loop:
cout<<"请输入一个正整数N(N小于30000)。"<<endl;
cin>>N;
if(N>=30000||N<=0)
cout<<"输入有误,请重新输入!"<<endl;
for(i=1;i<=N;i++)
{
if(i%7==0) 
{
cout<<i<<endl;
a++;
}
else
{
if(i%10==7)
{
cout<<i<<endl;
a++;
}
else
{
if(i/10-10*i/100==7)
{
cout<<i<<endl;
a++;
}
else
{
if(i/100-10*i/1000==7)
{
cout<<i<<endl;
a++;
}
else
if(i/1000-10*i/10000==7)
{
cout<<i<<endl;
a++;
}
}
}
}
}
cout<<"与7有关连的数有";
cout<<a;
cout<<"个"<<endl;
cout<<"1、退出;2、继续输入"<<endl;
cin>>t;
while(t!=1||t!=2)
{
cout<<"input again!"<<endl;
  cin>>t;
}
switch(t)
{
case 1:exit(1);break;
case 2:goto loop;break;
}
}


[解决办法]
while(t!=1||t!=2)
 {
 cout<<"input again!"<<endl;
cin>>t;
 }
 这里错了~~
应该是:
while(t!=1&&t!=2)
 {
 cout<<"input again!"<<endl;
cin>>t;
 }
注意||和&&的区别~~一个与,一个或,这里面应该用与啊~~
[解决办法]

C/C++ code
#include<iostream>using namespace std;void main(){    int i,a=0,N,t,j;    do    {        cout<<"请输入一个正整数N(N小于30000)。"<<endl;        cin>>N;        if(N>=30000||N<=0)            cout<<"输入有误,请重新输入!"<<endl;        for(i=1;i<=N;i++)        {            if(i%7==0)              {                cout<<i<<endl;                a++;                continue;            }            j=i;            while(j>0)            {                if(j%10==7)                  {                    cout<<i<<endl;                    a++;                    break;;                }                j/=10;            }        }        cout<<"与7有关连的数有";        cout<<a;        cout<<"个"<<endl;        cout<<"1、退出;2、继续输入"<<endl;        cin>>t;        while(t!=1&&t!=2)        {            cout<<"input again!"<<endl;            cin>>t;        }    }while(t==2);}
[解决办法]
类似i/100-10*i/1000==7的可以修改一下,i/100不就是10*i/1000么,相减始终为0;另外,在后面的while循环,当t如何不为1且不为2才需要重新输入,不是“或”的关系。
C/C++ code
#include<iostream>using namespace std;int main(){        int i,a=0,N,t;loop:        cout<<"input a number between 1 and 30000:";        cin>>N;        if(N>=30000||N<=0)        {                cout<<"error number,exit"<<endl;                return 1;        }        for(i=1;i<=N;i++)        {                if(i%7==0)                {                        cout<<i<<endl;                        a++;                }                else if(i%10==7)                {                        cout<<i<<endl;                        a++;                }                else if(i/10-i/100==7)                {                        cout<<i<<endl;                        a++;                }                else if(i/100-i/1000==7)                {                        cout<<i<<endl;                        a++;                }                else if(i/1000-i/10000==7)                {                        cout<<i<<endl;                        a++;                }        }        cout<<"7 related number has:"<<a<<endl;        cout<<"input:1-quite;2-continue"<<endl;        cin>>t;        while(t!=1 && t!=2)        {                cout<<"input again!"<<endl;                cin>>t;        }        switch(t)        {                case 2:                        goto loop;        }        return 0;} 


[解决办法]
1、部分与7相关的数字不能输出:
把你的if(i/10-10*i/100==7)
判断改成if(i/10-10*(i/100)==7)即可解决~~

2、另外在输入一个N,运行结束,然后再输入一个两位数,为什么会输出两个“input again”????
while(t!=1&&t!=2)
{
cout<<"input again!"<<endl;
cin>>t;
}

while里是与的关系~~不是或的关系~~
[解决办法]

探讨

引用:

类似i/100-10*i/1000==7的可以修改一下,i/100不就是10*i/1000么,相减始终为0;另外,在后面的while循环,当t如何不为1且不为2才需要重新输入,不是“或”的关系。
C/C++ code


#include<iostream>
using namespace std;

int main()
{
int i,a=0……

热点排行