长整数的处理

绝世美人儿
942次浏览
2021年01月11日 09:34
最佳经验
本文由作者推荐

渭水学子网-娓娓动听

2021年1月11日发(作者:许寒冰)





河南城建学院


《c语言程序设计》
课程设计报告






设 计 题 目: 长整数的处理
指 导 老 师:崔雪冰 沈云琴 张芳芳
学 生 学 号: 083215133
学 生 姓 名: 李 尧
同 组 人 员: 平捷 王舒涵 张媛婕
时 间: 2015年12月25日


目 录

第一章 长整数处理 .............................. .................................................. .. 3
1.1设计目的 ............................... .................................................. ......... 3
1.2题目要求 ........................ .................................................. ................ 3
1.3分组情况 ................. .................................................. ....................... 3
第二章 程序设计 ........... .................................................. ......................... 4
2.1 实现功能 ....... .................................................. ................................ 4
2.2 数据设计 .................................................. ....................................... 4
2.3 函数设计 ......................................... ................................................ 4
2.4 设计E-R图 ................................. .................................................. . 5
2.4 重点代码 ............................... .................................................. ........ 6

2.4 进入界面 .................... .................................................. ................... 7

第三章 程序运行 ........... .................................................. ......................... 8
3.1涉及知识点 ....... .................................................. ............................. 8
3.2运行截图 .... .................................................. .................................... 8
3.3 源代码 .............................................. ............................................... 9
第四章 总结 ....................................... .................................................. ... 11
2


第一章 长整数处理
1.1设计目的
课程设计围绕课程的整体教学目标进行,课程设计的题目具有一定的综合性
和应用性,只靠个别单元的 知识一般不能实现课程设计的目标,需要对课程知识
进行综合运用。要完成好课程设计,就要对课程知识 进行系统学习、复习、总结、
应用,达到在实践中学习知识、掌握知识、应用知识和培养能力的目的。
1.通过课程设计,进一步熟悉掌握以下知识:数据类型、分支控制、循环
控制、函数的定义及 调用、结构体及数组、指针、文件操作、编译预处理等。
2.通过课程设计,达到系统理解、综合运用课程知识的学习目标。
3.通过课程设计,学会用高级语言程序解决实际问题的方法。
4.通过课程设计,掌握程序 的局部测试、调试方法,建立程序系统调试、
测试的基本概念和思想,学会较大程序的系统测试和调试方 法。
1.2题目要求
假定用一个整型数组表示一个长整数,数组的每个元素存储长整数的一 位数
字,则实际的长整数m表示为:
其中a[0]保存该长整数的位数。求: 长整数加长整数或长整数减长整数。
用户输入两组不同的数组,每个数组代表一个长整数,然后对长整数进行相
加或者相减。
1.3分组情况
本组成员有李尧、平捷、王舒涵、张媛婕。
李尧负责get函数,以及最后整合;
平捷负责switch函数;
王舒涵负责jianfa函数;
张媛婕负责jiafa函数。
3


第二章 程序设计
2.1 实现功能
实现的功能就是输入一个数组把其转化为长整数,实现长整数加长整数或
长整数减长整数。
2.2 数据设计
由于程序是两个数组转化长整数,所以数据类型定位int;
程序中用的全局变量是int x[]和int y[]
2.3 函数设计
程序中 一共设计了五个函数,分别是:get函数、switch函数、jiafa函数、
jianfa函数以 及main函数。
get函数的功能是用来获取用户的输入;函数参数是:int d[]
switch函数是选择运算函数;函数参数是:d
afa函数jianfa函数则是进行加减法运算的;函数参数是:int x[],int y[]
Main函数是主函数。
下面是对本程序函数之间的调用关系

Main 函数
Get 函数Switch 函数
Jiafa 函数Jianfa 函数



4


2.4 设计E-R图

E-R流程图图

开始
输入两个长整数a,b
将字符型转化为数字
1
计算加法输入 1
计算减法输入 2
2
T
计算c[i]=x[i]+y[i]
a>b ?
F
a[i]>=10?
T
F
c[i]=x[i]-y[i]
交换a,b
F
进位
c[i]<0?
T
c[i]=x[i]+y[i ]
输出c[i]
借位
c[i]<0
T
借位
输出c[i]输出-c[i]
结束

5


2.5 重点代码
void get(int d[])
{
int i,temp;
for(i=1;;++i)
{
d[i]=getchar()-48;
if(d[i]==-38||d[i]==-16)
break;
}
d[0]=i-1;
d[i]=0;
for(i=1;i<=d[0]2;++i)
{
temp=d[i];
d[i]=d[d[0]-i+1];
d[d[0]-i+1]=temp;
}
}
void jiafa(int x[],int y[])
{
int i;
c[0]=x[0];
for(i=1;i<=x[0];++i)
{
c[i]=x[i]+y[i];
if(c[i]>=10)
{
c[i]-=10;
x[i+1]+=1;
}
}
if(x[i]>0)
{
c[i]=x[i];
c[0]++;
}
}
void jianfa(int x[],int y[])
{
int i=1;
c[0]=x[0];
for(i=1;i<=x[0];++i)
6












}
{
c[i]=x[i]-y[i];
if(c[i]<0)
{
c[i]+=10;
x[i+1]--;
}
}
while(c[--i]==10)
c[0]--;
2.6 进入界面 程序是两长整数相加相减,没有过多的界面设计,进入程序后选择加法输
入“1”,选择减法输入“ 2”,按回车后输入数组。

7


第三章 程序运行
3.1涉及知识点
要定义多个函数,实现函数之间的相互调用。函数参数的传递方法和函数
的返回值。
3.2运行截图
1、长整数加长整数


2、长整数减长整数


8


3.3 源代码
#include
#include
using namespace std;
int c[100]={0};
void get(int d[])
{
int i,temp;
for(i=1;;++i)
{
d[i]=getchar()-48;
if(d[i]==-38||d[i]==-16)
break;
}
d[0]=i-1;
d[i]=0;
for(i=1;i<=d[0]2;++i)
{
temp=d[i];
d[i]=d[d[0]-i+1];
d[d[0]-i+1]=temp;
}
}
void jiafa(int x[],int y[])
{
int i;
c[0]=x[0];
for(i=1;i<=x[0];++i)
{
c[i]=x[i]+y[i];
if(c[i]>=10)
{
c[i]-=10;
x[i+1]+=1;
}
}
if(x[i]>0)
{
c[i]=x[i];
c[0]++;
}
}
void jianfa(int x[],int y[])
9


{
int i=1;
c[0]=x[0];
for(i=1;i<=x[0];++i)
{
c[i]=x[i]-y[i];
if(c[i]<0)
{
c[i]+=10;
x[i+1]--;
}
}
while(c[--i]==10)
c[0]--;
}
int daxiao(int x[],int y[])
{
int i;
if(x[0]>y[0])
return 1;
if(x[0] return 0;
for(i=x[0];i>=1;i--)
if(x[i]!=y[i])
break;
if(x[i]>y[i])
return 0;
return 0;
}
void main()
{
int d,i,a[100]={0},b[100]={0};
cout<<为加法,2为减法:
cin>>d;
getchar();
cout<<请输入两个整数:n
get(a);
get(b);
switch(d)
{
case 1:
if(a[0]>=b[0])
jiafa(a,b);
else
10


jiafa(b,a);
break;
case 2:
if(daxiao(a,b)==1)
jianfa(a,b);
else
{
jianfa(b,a);
printf(
}
break;
}
for(i=c[0];i>=1;--i)
cout<cout<}
第四章 总结 < br>这个课程设计,我感觉对于我们现在只学了些基础的知识的人来说确实是一
个不小的挑战!从一个 函数到很多函数的有机集合到多个类的使用,其中也经历
了不少困惑与不知。但至少我现在做到了,终于 战胜了自己对课程设计的恐惧,
也收获了程序运行成功的喜悦,有付出,就有收获。通过这次课程设计, 发现自
己还有很多不足的地方,做起来感觉很困难。还好可以通过去网上搜索、去图书
馆查找资 料、请教老师同学等各种方式克服了一个又一个的困难。多样化的处理
问题,才是成功之道,终于把设计 给完成了!学习的心态很关键,不懂了就要学
着去用不同的方式去获取,补足自己。
通过这次 实践,我对编程有了新的理解,编程并不是像大多数人说的那样充
满单调,乏味。一件东西的乐趣在于你 能去接触去理解。我接触了,我理解了。
让所学的运用于生活中,做到灵活运用,学有所成的兴奋是难得 的宝贵。我在其
中感悟到乐趣了。
11

浪子心声歌词-描写冬天的作文


beusedtodo-佛教小故事


安息香缩合-国庆节活动


武汉樱花什么时候开-欢声笑语


方瑞娥-名言大全


悬崖勒马的意思-写秋的作文


费孝通乡土中国-千字文朗读


食品安全之歌-苏格拉底的故事