C语言>>已知数组int num1[20],num2[20]中分别存放了两个20位整数的各个位的值,编写一个程序,求将这两个整数相加的结果。

使用工具:

Dev-C++ 5.11

解题思路:

定义一个num3[21]的数组,用于存放两个数组相加的结果,之所以长度为21,是因为要考虑进位的情况;数组num3[21]的每一位数的存放应是从尾放到头,因此在写循环的的时候,循环变量(作为数组的下标)应是递减的。最后还要注意num3[21]应被定义一个初始值0,其原因如下(摘自一位热心网友给我的解答):

  1. 就是num3没有初始化的原因,申请的内存还有残存的值,并不是0

  2. C语言的变量分为全局变量跟局部变量,全局变量是不用初始化的,它的值即是自身类型的默认值(其实就是全部为0)。但是局部变量的值是不确定的,除非你自己用程序给它手动写一个值,而初始化就是手动写值的这一步。

  3. 也就是说你申请的这个num3如果不初始化,没人能确定它的值是什么,每一次程序运行都会不一样。这里的区别就好比私人车位跟公共车位的区别,全局变量是私人车位,局部变量是公共车位。全局变量什么时候都是停的那一种车,而局部变量随着时间点的不同停的车辆是完全不确定的。

参考代码:

 #include<stdio.h>
int main()
{
 int num1[20],num2[20],num3[21]={0},i,t;
 printf("Please input num1[]:\n");
 for(i=0;i<20;i++)
 {
  scanf("%d",&num1[i]);  
 }
 printf("Please input num2[]:\n");
  for(i=0;i<20;i++)
 {
  scanf("%d",&num2[i]);
 }
 for(i=19;i>=0;i--)
 {
  t=num1[i]+num2[i]+num3[i+1] ;
  if(t<10)
  {num3[i+1]=t;}
  else
  {
  num3[i+1]=t%10;
  num3[i]=1;
  }
 }
 
 printf("array num3 is:\n");
 for(i=0;i<=20;i++)
    printf("%d",num3[i]);
 return 0;
}

运行结果:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值