描述
接收一组数,范围是1~9的整数,试判断是否为9个,并且1~9都在且不重复。
输入
用户输入若干个1~9的整数,数之间用空格符隔开。若遇到输入0,则结束输入。
输出
判断输入的数是否满足1~9都存在,且不重复,并输出相应的结果。例如:
- 满足时, 输出 Right!
- 不满足时, 输出 Wrong!
- 输入的个数不等于9个时, 输出 The input is not correct!!
#include<iostream> //iostream库,配合下面的调用全名域可以使用cin,cout
using namespace std;
int main()
{
int str[9]; //建立一个存储空间为9的数组,命名为str;
int i,j,n,c; //i,j,为循环使用;n是用来存数据到数组里;c作为计数器
int m=0,l=0; //m和l都是用于比较的计数器
for(i=0;i<9;i++)
{
cin>>n ; //输入n
if(n==0) //如果n是0则跳出输入循环语句
break;
else
{
str[i]=n; //否则将n的数据从1~9赋给str数组,并进行c计数
c++;
}
}
if(c!=9) //输入的数不够9个,则按要求3输出
cout<<"The input is not correct!!";
else //否则(以下的语句都是满足数够9个)
{
for(j=1;j<=9;j++) //循环j(用于1~9的数的比较)
{
l=0; //为了使每次计数时l都从0开始计数;
for(i=0;i<9;i++)
{
if(j==str[i]) //如果在数组中找到了这个数,则l计数+1
l++;
m+=l; //m用于计数l的和
}
}
if(m>=2) //当m大于等于2(即意为在1~9中,某个数出现了多次)
cout<<"Wrong!"; //此种情况,按要求2输出
if(m==1) //当m等于1时,满足了游戏要求有且仅有一,则输出1
cout<<"Right!";
}
return 0;
}
写在后面的一点
使用 m 和 l 一起做计数器,是因为要保证 l 在每次比较的时候都要从0开始计数,如果这样,到后面进行重复的统计时 l 只能是0,不存在 l =1或 l >=2的情况。
或许说可以把比较放在for循环里,那么在循环里带有输出,所以做了比较就会输出9个,不符合题意。故我写成了上述代码片。