C语言简单问题? 20

能使用数组的方式对两个15位的正整数相加,并将结果显示出来。提示:请将每一位数存放在一个数组元素中,然后逐位相加。这是问题,我想问一下我这个问题在哪,为什么输出不了15位... 能使用数组的方式对两个15位的正整数相加,并将结果显示出来。 提示:请将每一位数存放在一个数组元素中,然后逐位相加。这是问题,我想问一下我这个问题在哪,为什么输出不了15位数,小的数倒是正常运行 展开
 我来答
阳光上的桥
2021-11-28 · 知道合伙人软件行家
阳光上的桥
知道合伙人软件行家
采纳数:21424 获赞数:65782
网盘是个好东东,可以对话和传文件

向TA提问 私信TA
展开全部
int的变量装不下15位那么大的,无法scanf("%d")输入,要表示这种超过计算机long大小的数据,最简单的就是使用字符串,例如要表示1000位的整数,可以定义的变量为:
char big1[1000], big2[1000],big3[1000];
用scanf("%s")或者gets读入数据,按照按右对齐进行加运算结果存入big3,最简单的办法是逆向big1、big2然后按位加结果保存到big3,最后逆向big后就是结果,形象点举例:
如果输入的big1是:123456789999999999
程序逆向排序为:999999999987654321
对big2同样的处理,然后就可以按位计算合计存入big3
整个程序,关键的就是两个函数,第一个是计算求和的:
void big_sum(char a[], char b[], char c[]);
函数的功能是计算超大整数的加法:c=a+b
第二个是逆向字符串的函数:
void str_rev(char s[]);
功能是把字符串s收尾颠倒,下面以C语言的语法描述两个函数算法,如果看不懂就代码就看注释。
void str_rev(char s[]){
int n=0,i=0;
char t;
while(s[n]) n++;/*使得指针移动到字符串末尾的结束符*/
n--;
while(i>n){t=s[i];s[i]=s[n];s[n]=t;i++;n--;}/*首尾交换*/
}
加法函数的算法逻辑如下:
void big_sum(char a[], char b[], char c[]){
int ia=0,ib=0,ic=0,s=0;
str_rev(a);/*逆向a*/
str_rev(b);/*逆向b*/
while(a[ia] && b[ib]){
if (a[ia]) {s+=a[ia]-'0'; ia++;}/*如果a没有完,那么取出一位累加到s,移动到下一位*/

if (b[ib]) {s+=b[ib]-'0'; ib++;}/*如果b没有完,那么取出一位累加到s,移动到下一位*/
c[ic]='0' + s%10;/*一位结果,转换为字符*/
s/=10;/*保留进位*/
ic++;
}
c[ic]='\0';/*给结果添加结束符*/
str_rev(a);/*还原a*/
str_rev(b);/*还原b*/
str_rev(c);/*还原c*/
}

最后就是主程序了:
main(){
char a[1000],b[1000],c[1000];
printf("a=");gets(a);
printf("b=");gets(b);
big_sum(a,b,c);
printf("c=");pets(c);
}
TableDI
2024-07-18 广告
VLOOKUP是Excel中用于垂直查找的函数,其基本用法包括四个参数:1. 查找值:即在数据表首列中需要搜索的值。2. 数据表:包含查找值的单元格区域或数组。3. 返回值所在列数:指定返回查询区域中第几列的值。4. 查找方式:选择精确匹配... 点击进入详情页
本回答由TableDI提供
崔carat要开心

2021-11-28 · 超过167用户采纳过TA的回答
知道小有建树答主
回答量:533
采纳率:100%
帮助的人:24.1万
展开全部

这样写:

追问
谢谢,我还是想问一下,为什么我那个输出不了呢
追答
你如果说的是 i=123456789123456这样的15位数的话,那就超出int 的取值范围了,没办法取到。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2021-11-28
展开全部
在这个新的时代,我相信有很多人是对计算机领域怀有极大的好奇心的,人们好奇心的出发点千奇百怪,但是不论如何,学习一门编程语言是了解这个领域的最佳选择,那么有的人会说:“C、C++、C#、Jave、Python……这么多种,我该选择哪一种呢?”别犹豫了选择C吧,它会是你爱上编程的开始。那么在正式学习之前我们先开始了解一下C语言吧。

C 语言是一种通用的高级语言,当然这个高级是相对于机器语言,汇编语言来说的。现在它并不那么高级,但我们为什么还要学他呢?因为你现在看到的大多数的经典都是用C语言完成的。C原因最初是由丹尼斯·里奇在贝尔实验室为开发 UNIX 操作系统而设计的。C 语言最开始是于 1972 年在 DEC PDP-11 计算机上被首次实现。在 1978 年,布莱恩·柯林汉和丹尼斯·里奇制作了 C 的第一个公开可用的描述,现在被称为 K&R 标准。UNIX 操作系统,C编译器,和几乎所有的 UNIX 应用程序都是用 C 语言编写的。由于各种原因,C 语言现在已经成为一种广泛使用的专业语言。那么它有哪些优点呢?1.易于学习。2.结构化语言。3.它产生高效率的程序。4.它可以处理底层的活动。5.它可以在多种计算机平台上编译。

C 语言是为了编写 UNIX 操作系统而被发明的。C 语言是以 B 语言为基础的,B 语言大概是在 1970 年被引进的。至于B语言,有兴趣的小伙伴可以自行百度。(我决不承认自己是个懒货)

C 语言标准是于 1988 年由美国国家标准协会制定的。截至 1973 年,UNIX 操作系统完全使用 C 语言编写。目前,C 语言是最广泛使用的系统程序设计语言。大多数先进的软件都是使用 C 语言实现的。当今最流行的 Linux 操作系统(啥?操作系统除了windows还有别的?不会真有人以为操作系统只有一个windows吧)和 RDBMS MySQL(这又是个啥?额,这是数据库,在这里就不多做赘述了,感兴趣的小伙伴可以自行百度。度娘才是yyds)都是使用 C 语言编写的。

C 语言最初是用于系统开发工作,特别是组成操作系统的程序。由于 C 语言所产生的代码运行速度与汇编语言编写的代码运行速度几乎一样,所以采用 C 语言作为系统开发语言。下面列举几个使用 C 的实例:操作系统、语言编译器、汇编器、文本编辑器、打印假脱机、网络驱动器、现代程序、数据库、语言解释器、实体工具

一个 C 语言程序,可以是 3 行,也可以是数百万行,它可以写在一个或多个扩展名为 “.c”的文本文件中,我们可以使用 "vi"、"vim" 或任何其他文本编辑器来编写您的 C 语言程序。实际上任何一款代码编辑器都可以编写C语言代码,比如VSCode,sublime,atom,vim等。但我并不推荐使用记事本这种工具,你不要看网上有些视频用哪个文档编个高大上程序,其实外行看的是个热闹,内行嘛看他们的时候感觉他们多少有点……你懂的,至于我,我不看,扯远了,用记事本编写的话可能会出现一些未知的错误,会很烦。所以还是使用前面提到的代码编辑工具吧,他们都是经过实践后可以使用的。另外,c语言程序的后缀还有可能是.h和.cpp,前者是c语言的头文件,后者是C++的代码文件,当然它也可以用在C语言上,C++和C基本不分家的嘛。

当然学习编程还要有相应的开发环境,那么你该下载那些软件呢?上面提到那么多,哪款适合我呢

就我个人而言,我推荐你可以下个dev,当然vs(Visual Studio)也是可以的,毕竟vs它在以后可以进行多种的编程任务。当然你要是mac系列的话,我就无能为力了,贫穷的我买不起macbook,哪怕是air。额,题外话说的有点多了。这些软件你都可以在电脑的软件商店里找到,记住不要找错了。

最后最后感谢各位观众老爷的点赞收藏与分享。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
来自重阳宫动人的绿萝

2021-12-21 · 超过107用户采纳过TA的回答
知道小有建树答主
回答量:1136
采纳率:20%
帮助的人:42.8万
展开全部
1
char num1[1000], num2[1000],sum[1001];
取出字符数组最后一位的数字 可以用 temp1=num1[1000]-'0';
反之数字转为字符 加上 '0'
设置一个进位标志 使用循环就好了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
八零末001

2021-12-24 · 超过15用户采纳过TA的回答
知道答主
回答量:766
采纳率:0%
帮助的人:27.3万
展开全部
C 语言最初是用于系统开发工作,特别是组成操作系统的程序。由于 C 语言所产生的代码运行速度与汇编语言编写的代码运行速度几乎一样,所以采用 C 语言作为系统开发语言。下面列举几个使用 C 的实例:操作系统、语言编译器、汇编器、文本编辑器、打印假脱机、网络驱动器、现代程序、数据库、语言解释器、实体工具
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(15)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式