用循环不停地输出2的倍数

u3t8:编写一个程序,用循环不停地输出2的倍数,观察最终会发生什么情况。
我写的代码如下:

#include <stdio.h>
int main()
{
    int i;
    for(i=1;;i++)
        printf("%d\n",2*i);
    return 0;
}

运行的时候很正常,似乎可以无穷地跑下去
在这里插入图片描述
可是这已经超过了int的范围了呀!为什么还能进行下去呢?是发生了隐式类型转换吗?不然的话,凭int类型有限的存储空间,怎么能存下这么大的数字呢?


已解决:大多数系统int类型占4个字节,32位;而不是2个字节,16位。
因此整数的最大值位2^31-1(与long相同~)

农夫约翰的奶牛不停地从他的农场中逃出来,导致了很多损害。为了防止它们再逃出来,他买了一只很大的号码锁以防止奶牛们打开牧场的门。 农夫约翰知道他的奶牛很聪明,所以他希望确保它们不会在简单地试了很多不同的号码组合之后就能轻易开锁。锁上有三个转盘,每个上面有数字 ~ ,因为转盘是圆的,所以 和 是相邻的。有两种能开锁的号码组合,一种是农夫约翰设定的,还有一种“预设”号码组合是锁匠设定的。但是,锁有一定的容错性,所以,在每个转盘上的数字都与一个合法的号码组合中相应的数字相距两个位置以内时,锁也会打开。 比如说,如果农夫约翰的号码组合是 ( , , ),预设号码组合是 ( , , ),在转盘被设定为 ( , , )(因为这和农夫约翰的号码组合足够接近)或 ( , , )(因为这和预设号码组合足够接近)时可以打开锁。注意,( , , )并不会打开锁,因为它与任一号码组合都不够接近。 给出农夫约翰的号码组合和预设号码组合,请计算能够开锁的不同的号码组合的数目。号码是有序的,所以 ( , , ) 与 ( , , ) 不同。 输入描述 输入的第一行是一个整数 ,代表锁上的数字个数。 输入的第二行有三个整数 ,代表农夫约翰的号码组合。 输入的第三行有三个整数 ,代表预设的号码组合。 输出描述 输出一行一个整数代表能够开锁的组合数目。 用例输入 1  50 1 2 3 5 6 7 用例输出 1  249 #include<bits/stdc++.h> using namespace std; int hh(int a,int b,int po) { if(a+b>50)return a+b-po; else if(a+b<1)return a+b+po; else return a+b; } int main(){ int p; cin>>p; int x[2][3]; for(int i=0;i<2;i++) { for(int j=0;j<3;j++) { cin>>x[i][j]; } } int y[500][3]; int s=0; for(int i=-2;i<=2;i++) { for(int j=-2;i<=2;i++) { for(int k=-2;i<=2;i++) { y[s][0]=hh(i,x[0][0],p); y[s][1]=hh(j,x[0][1],p); y[s][2]=hh(k,x[0][2],p); s++; } } } int d=0; int ji[500][3]; for(int i=-2;i<=2;i++) { for(int j=-2;i<=2;i++) { for(int k=-2;i<=2;i++) { ji[d][0]=hh(i,x[1][0],p); ji[d][1]=hh(j,x[1][1],p); ji[d][2]=hh(k,x[1][2],p); d++; } } } int f=0; for(int i=0;i<s;i++) { for(int j=0;j<d;j++) { if(y[i][0]==ji[j][0]&&y[i][1]==ji[j][1]&&y[i][2]==ji[j][2])f++; } } cout<<pow(5,3)*2-f; return 0; }
最新发布
09-15
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值