c++高精度(数字极大)如何读入与输出(搞笑的)

大家好,又到了一天一度的打“i”现场

在上次,通过程序员地抢救,i活了,今日继续拿他作实验!

i(手缠绷带,拄着拐杖,笑容异常和蔼):

“嗯!我又要被程序员折磨,啊啊啊啊!孰可忍孰不可忍!!!”

不用理他,我们转入正题吧 嘻嘻

话说天下大数,int,龙龙(long long)皆可解决

特别是龙龙(long long)手持long long的最大值:9223372036854775807尺的大刀
身穿long long的最小值:-9223372036854775808耐久度的防御甲

让那些平常数字一看,就为之颤抖,呆若木鸡

气场使他们无法动弹:

龙龙(long long):“哥一直被模仿,但从未被超越,哈哈哈哈哈!”

正当龙龙(long long)吃了一颗益达 ,仰天长笑时。

99999999感到无比愤怒,却又无可奈和

忽然旁边的12345678递出了两样神器。

“999感冒灵”以及“士力架”!!!!!!

只见99999999喝下"999感冒灵",吃下了“士力架”。

“啊!”99999999马上变成了999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999

“汗流浃背了吧,老弟”

龙龙(long long)一跪 二哭 三忏悔。(灬ꈍ ꈍ灬)

这时i还待在龙龙这里呢

i正读着这个数,不禁脑壳发昏 头晕目眩 眼前直冒金星 最终英勇牺牲

if(你在哀悼i){

      for(int i=1;i<=9999999999999999999999999999999999999999999999999999;i++){

              printf("从前有座山,山里有座庙,庙里有个老和尚再给小和尚讲故事");

              printf("讲的是什么故事呢:");//念经模式已开启

}

else{

        cout<<"干得好”<<endl;

}

999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999

已开始狂轰乱炸

oh 对了  i呢?

#include<bits/stdc++.h>
using namespace std;
int main(){
	long long i;
	scanf("%lld",&i);
	printf("%lld",i);
	return 0;
}

看一下

唉 i真是可怜啊

邓布利多曾说要怜悯活人,不用怜悯死人,要怜悯没有家的人(所以i咱不管了  哈哈哈!)

面对如此大的灾难 

longlong国防部立刻召开了会议

根据协商 各大被longlong赋予的字母

马上抓住了12345678

12345678在审讯室里一问三不知

“砰”“盔甲护身!”

不想 12345678竟然私藏枪支

程序员怒了

“阿瓦达啃大瓜!”

绿光闪过 打在12345678的旁边

12345678顿时吓晕

各大字母争相喂给12345678吐真剂

醒后 一问三都知

终于找到了破解之法。

方法如下:

首先将char事务所的s数组调过来

#include<bits/stdc++.h>
using namespace std;
int main(){
	char s[101]//跟数字位数有关
	return 0;
}

然后把数字当字符分配给是s数组的各位成员

#include<bits/stdc++.h>
using namespace std;
int main(){
	char s[101];
    scanf("%s",s);
	return 0;
}

嗯!我要的是数字,不是字符啊,这样做谁都会吧

而且,字符无法运算(不准确,大概应该差不多吧)

哈哈 打住,方案还没有执行完呢

接下来存到int数组

“啊啊啊啊????????????????????????????????”

“char字符怎么可以存到int里呢  类型都不一样!!!!!!!”

你为何不试一下呢?

#include<bits/stdc++.h>
using namespace std;
int main(){
	char s='0';
    printf("%d",s);
	return 0;
}

"这肯定是错的!一定会报错!!!!!!!char一个字符应该用%c怎么能用int的%d来用呢"

赶紧试一下吧

根本不会报错!!!

“怎么会这样!!!”

别着急

加上输出试一下(如果你是个小白 用的是cout和cin)(我也是小白)

cin------scanf

cout------printf

#include<bits/stdc++.h>
using namespace std;
int main(){
	char s='0';
    printf("%d",s);
	return 0;
}

会输出“48”

“啊!”

不信吗

这就是证据

没错 int与char有联系

是的ASCll闪亮登场!!

对照表来啦!

大家不用慌张(别以为你需要背下来)

这些涂了颜色的,用的多了也就记住了

另外,空格(space)换行也记一下就好了

通过ASCII码

在蓝色那部分的“0”看到了吗

对应的就是48

这下大家懂了吧

把他存进int:

#include <bits/stdc++.h>
using namespace std;
int a[101];
char s[101];
int main(){
	scanf("%s",s+1);
	int len=strlen(s+1);
	for(int i=1;i<=len;i++){
		a[i]=s[i]-'0';
	}
	return 0;	
}
	

strlen是一个函数

会自动计数字符的个数

格式如下

strlen(数组名+1)(我是1派的,你们是0派的我不管)

这样len的范围1-len

这里面-'0'是字符0

要加单引号

相当于-48

为何要-48呢

找规律

48-0=48;

49-1=48;

...........

所以字符所对应的数字-48就是原来的数字

现在读入完成了

输出还是问题吗?

#include <bits/stdc++.h>
using namespace std;
int a[101];
char s[101];
int main(){
	scanf("%s",s+1);
	int len=strlen(s+1);
	for(int i=1;i<=len;i++){
		a[i]=s[i]-'0';
	}
	for(int i=1;i<=len;i++){
		printf("%d",a[i]);
	}
	return 0;	
}
	

好的现在 我们就可以打败喝了“999感冒灵” 吃了“士力架”的999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999

鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅

为了让更多人看不到

我要水点字数!!!!!!!!!!!!!!!!

  • 14
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值