:猜数字(选作)
有如下一组数字,其中每个数字都在 1 ~ 63 之间,
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 632 3 6 7 10 11 14 15 18 19 22 23 26 27 30 31 34 35 38 39 42 43 46 47 50 51 54 55 58 59 62 634 5 6 7 12 13 14 15 20 21 22 23 28 29 30 31 36 37 38 39 44 45 46 47 52 53 54 55 60 61 62 638 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31 40 41 42 43 44 45 46 47 56 57 58 59 60 61 62 6316 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 6332 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
现在需要编写一个程序,当从键盘输入某数字在且仅在哪几行出现了,该程序可以“猜”出这个数字是几。
输入:
程序的输入是一串以空白符分开的数字,当输入 0 时表示输入结束。
输出:
输出猜到的数字。
程序:
#include
int main()
{
int a[7],m,n=0,i,p=0;
for (i=0;i<7;i++)
{
scanf("%d",&a[i]);
n++;
if (a[i]==0)
{
break;
}
scanf(" ");
}
for (m=1;m<64;m++)
{
p=0;
for (i=0;i<(n-1);i++)
{
if (a[i]==1)
{
if (m==m/2*2)
{p=1;break;}
}
if (a[i]==2)
{
if (m%4!=3&&m%4!=2)
{p=1;break;}
}
if (a[i]==3)
{
if (m%8!=4&&m%8!=5&&m%8!=6&&m%8!=7)
{p=1;break;}
}
if (a[i]==4)
{
if(m%16!=8&&m%16!=9&&m%16!=10&&m%16!=11&&m%16!=12&&m%16!=13&&m%16!=14&&m%16!=15)
{p=1;break;}
}
if (a[i]==5)
{
if (m>31&&m<48||m<16)
{p=1;break;}
}
if (a[i]==6)
{
if (m<32)
{p=1;break;}
}
}
if (p==0)
{
printf("%d\n",m);
break;
}
}
return 0;
}
本文来源:https://www.2haoxitong.net/k/doc/84ce4a48854769eae009581b6bd97f192279bf33.html
文档为doc格式