永发信息网

c语言中,我定义了一个double类型的数,因为这个可能会比较大,超过int和long long的

答案:2  悬赏:10  手机版
解决时间 2021-03-21 18:39
c语言中,我定义了一个double类型的数,因为这个可能会比较大,超过int和long long的
最佳答案
对于超长整数求解,一般使用字符串或者数组的形式。

如果能给出程序需求的更多细节,或者举个例子。
可以告诉你怎么写这个代码。

对于,你的问题我有一个疑问。
输入是超大的整数,为什么要给到一个double类型的变量里面呢?追问这个程序首先是输入一个自然数,然后要求把各个位数上的数加起来,然后每一位用拼音输出,自然数要求10的100次方范围内都可以。只要能求出各个位数上的数字的和后边就会写了。我想这么长的数字int和long long都不行,于是就选择了double,但是又不会取余。。你的意思是我写成类似于数组的形式?追答“然后每一位用拼音输出” 这个是打错了么? “拼音输出”不是很明白是什么意思。


就是要帮你写出,如何求出一个大数的各个位和。然后,后面的你自己可以写出来。


这里还要说一下,double是没有办法求余数的,因为余数是在整数级别才有的东西。
浮点数什么的,那都是余数往后衍生出来的。


先分析:
1.确定范围:0~10^100
也就是说,各位相加的最小值是0,最大值是900(100个9相加),所以,用int类型就完全能接收。
2.输入参数形式
①采用scanf函数的形式
②通过给可执行文件参数的形式 (这种形式需要你知道怎么向编译好的程序传递参数)
(这里每种形式对应不同的代码)


当你需要使用这些位相加的数时,可以修改函数返回类型,将其以返回值的方式返回。
//#define _CRT_SECURE_NO_WARNINGS
#include
#include

char NUM[1000];

void argu_type(char *num){
int sum = 0, i;

for (i = 0; num[i] != ''; i++);
printf("这个数有 %d 位。
 ", i);

for (i = 0; num[i] != ''; i++){
sum += num[i] - '0';
}
printf("%s get result is %d.
", __FUNCTION__, sum);
}

void scanf_type(void){
int sum = 0, i;
scanf("%s", NUM);

for (i = 0; NUM[i] != ''; i++);
printf("这个数有 %d 位。
 ", i);

for (i = 0; NUM[i] != ''; i++){
sum += NUM[i] - '0';
}
printf("%s get result is %d.
", __FUNCTION__, sum);
}
int main(int argc, char *argv[])
{
argu_type(argv[1]); // 参入形式①
scanf_type(); // 参数形式②




如果求余部分有问题,请完善追问描述。
追问实在是太谢谢你了,可是我还是不太懂你的意思,我输入的那个数是采用类似于数组方式的一个空间一个数吗?用putchar可以一个数字一个数字的输入吗?而不是字符。追答我输入的那个数是采用类似于数组方式的一个空间一个数吗?

可以这样理解,我这里使用的是字符数组。

用putchar可以一个数字一个数字的输入吗?

理论上来说,这个没有问题。
但实际上,你没法确定你的下一次输入得数位数是多少,所以采用putchar很不方便,多了程序停滞不运行,少了又获取不到正确的值。所以,这里不推荐使用。
除非你能确定你下一次输入数字的位数。

刚才因为字数超标,进行了多次修改,再刷新一下应该能看到我最后一次修改的结果。

补充:
还有,你在终端的输入本来就是字符型的。是scanf函数根据你需要的类型,将其进行了转化而已。所以在这里,数字和字符是没有本质区别的。追问太谢谢你了,回答的这么详细。(^_^)
全部回答
强制类型转换就可以了!追问强制类型转换会丢失数据。我会用到这个double类型的数(其实是个整数),中的每一位上的数,相加。追答这是大数问题,那就开个数组试试!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
翔宇通讯在哪里啊,我有事要去这个地方
在人们崇尚绿色消费的今天,草编饰品以其自然
一个大气压多少帕
关于清华紫光1G U盘
()the student in your school work hard at
读湖南省读图回答(1)A是______山脉,与大兴
南沙港快速路/繁荣路(路口)这个地址在什么地
两三个工作日是多少天,1至7个工作日内有多久
[求助]船舶用雨刮器的归类
学会看图:读等高线地形图,回答下列问题.(
五粮液尊耀,多少钱。真的假的。为什么之前没
买了两个月的二手车,当时下雨,没发现是事故车
韶关万人圈怎么发贴
爱你赞美松树的诗句,关于养老院的句子
判断题3.8扩大100倍后再缩小1000倍是38.
推荐资讯
牙龈痛咽水都难,是下边,最里面没有牙齿哪
求这种比较玄幻的异兽图,最好是这种高水平手
买了杯香飘飘,加了水忘了拆里面的了怎么办
One day,a young man cleaning out his late
东盛华辰医药模范楼店这个地址在什么地方,我
六月玫瑰365全国健康内衣体验馆地址在哪,我
祖荫丰厚是什么意思
只有一组对边平行的四边形是,两组对边平行没
尤里的复仇 ini 遥控坦克与控制中心之间关联
电影里有古丽珺的是什么电影
英雄无敌3地图编辑器怎么用?
来大疆面试了,不知能面试上么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?