基于visual Studio2013解决C语言竞赛题之1077大数相加

时间:2023-03-10 07:20:22
基于visual Studio2013解决C语言竞赛题之1077大数相加



基于visual Studio2013解决C语言竞赛题之1077大数相加

题目

基于visual Studio2013解决C语言竞赛题之1077大数相加

解决代码及点评



/************************************************************************/
/*
77. 大数相加。
写一个程序,实现对任意长的两个大整数(例如100位)进行相加。每个数可用以下形式存放,
例如整数179534679198可放于数组N中,其中:
N[1]=198, N[2]=679, N[3]=534, N[4]=179
把两个数组中的元素一一相加,并根据需要进行进位。
要求:
1) 输出一个大数时中间不允许有空格, 如上述N数组输出时不允许输出:
179 534 679 198
而应输出
179534679198
2) 输出的数据中间的零不能用空格代替。
假设N[1]=23, N[2]=5, N[3]=534, N[4]=179时应输出
179534005023
而不应输出
179534 5 23
思考: 一个数组元素存放一位数时应如何修改程序? */
/************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
int GETWS77(int num)
{
int count=0;
while(num)
{
count++;
num/=10;
}
return count;
}
void Printfarr(int * arr,int n)
{
int i=0;
while(arr[i]==0)
i++;
for(;i<n;i++)
{
if (GETWS77(arr[i])==3)
{
printf("%d",arr[i]);
}
else
{
for (int j=0;j<3-GETWS77(arr[i]);j++)
{ printf("%d",0);
}
printf("%d",arr[i]);
}
}
printf("\n");
}
int * ADD77(int *arr1,int * arr2,int n)
{ int JW=0;
for (int i=n-1;i>=0;i--)
{
if (arr1[i]+arr2[i]+JW>1000)
{
arr1[i]=(arr1[i]+arr2[i]+JW)%1000;
JW=(arr1[i]+arr2[i]+JW)/1000;
}
else
{
arr1[i]=(arr1[i]+arr2[i]+JW);
JW=0;
}
}
return arr1;
}
void main()
{
int arr[30]={0};
arr[25]=192;
arr[26]=123;
arr[27]=154;
arr[28]=176;
arr[29]=98;
Printfarr(arr,30);
int brr[30]={0};
brr[25]=192;
brr[26]=123;
brr[27]=154;
brr[28]=176;
brr[29]=998;
Printfarr(brr,30);
ADD77(arr,brr,30);
Printfarr(arr,30);
system("pause");
}

代码编译以及运行

由于资源上传太多,资源频道经常被锁定无法上传资源,同学们可以打开VS2013自己创建工程,步骤如下:

1)新建工程

基于visual Studio2013解决C语言竞赛题之1077大数相加

2)选择工程

基于visual Studio2013解决C语言竞赛题之1077大数相加

3)创建完工程如下图:

基于visual Studio2013解决C语言竞赛题之1077大数相加

4)增加文件,右键点击项目

基于visual Studio2013解决C语言竞赛题之1077大数相加

5)在弹出菜单里做以下选择

基于visual Studio2013解决C语言竞赛题之1077大数相加

6)添加文件

基于visual Studio2013解决C语言竞赛题之1077大数相加

7)拷贝代码与运行

基于visual Studio2013解决C语言竞赛题之1077大数相加

程序运行结果

基于visual Studio2013解决C语言竞赛题之1077大数相加

代码下载

http://download.****.net/detail/yincheng01/6681845

解压密码:c.itcast.cn