c语言课程设计实习报告全解.docVIP

  • 1
  • 0
  • 约1.23万字
  • 约 22页
  • 2017-01-06 发布于湖北
  • 举报
c语言课程设计实习报告全解

C语言课程设计 第一章 两个大数相乘 §1.1题目描述 本问题中,要求输入两个相对较大的正整数,能够通过程序计算出其结果。 §1.2算法设计 设计思想:两个相对较大的数肯定是不能够用LONG INT类型存储的,因为LONG型数据的数据范围也并不是很大,于是就需要采用其他的存储结构。这里推荐用数组存储一个大数,数组的初始空间可以定义到如200或300个单元,每个单元存储一位数据,形如下图: 2 5 5 9 6 2 0 7.。。。。 这样理论上,比如数组定义为200,就可以存储200个数字的整数,应该是满足足够大的条件了。而结果的存储也需要考虑空间的问题,所以需要一个更大的数组。在解决了存储问题后,我们需要来实现乘法运送的过程,也就是说你必须要把这个数组中的每一位数字单独来进行乘法运算,比如我们可以用一个数字和另外一个数组中的每一位去相乘,从而得到乘法运算中一行的数字,再将每一行数字错位相加。这就是乘法运算的过程。 §1.3程序设计及代码分析 #include stdio.h #include math.h void sum(int a[300],int b[300],int m,int n) { int k=0; int c[400]={0}; int i,j,s,t; for(i=0;im+n;i++) { s=0; for(j=0;jm;j++) { if((t=(m-1+n-1-i-j))=n||(t=(m-1+n-1-i-j))0) continue; else s=s+a[j]*b[m-1+n-1-i-j]; } s=s+k; c[i]=s%10; k=s/10; } printf(\n结果是:\n); for(i=399;i=0;i--) { if(c[i]!=0) { t=i; break; } else continue; } for(i=t;i=0;i--) printf(%d,c[i]); printf(\n); } void main() {int i,m,n,c; int a[300]={0},b[300]={0}; printf(请输入第一个数字:\n); for(i=0;(c=getchar())!=\n;i++) a[i]=c-48; m=i; printf(\n请输入第二个数字:\n); for(i=0;(c=getchar())!=\n;i++) b[i]=c-48; n=i; sum(a,b,m,n); } §1.4实验数据及运行效果截图 §1.5设计中出现的错误及解决方法 对于这个问题,看到题目的第一反应就是用“sum=a+b“的程序算法做。设计中出现的错误大部分是for循环的混乱。此外数组定义数据,常常会忽略a[0],会造成思想上的越界。对于题目要求的大数,我们可以定义一个较大的数组,再引用数组中的元素。 学生信息管理系统设计 §1.1 题目描述 学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一 学生信息管理系统,使之能提供以下功能: 系统以文本菜单方式工作, 学生信息录入功能(学生信息最好用文件保存)---输入 学生信息浏览功能---输出 查询、排序功能---算法 按学号查询 按姓名查询 学生信息的删除与修改(可选项) §1.2算法设计 开始可用结构体包含题目所需信息,然后自定义一系列函数,运用输入输出等函数、循环语句等呈现数据,然后定义主函数,通过其调用自定义的函数,switch语句实现多分支结构,实现其子功能,最终实现输入、输出、查询、修改、删除等功能。 §1.3程序设计及代码分析 #includestdio.h #includestdlib.h #includestring.h struct student {int id; char name[10]; int age; char sex[10]; char birthady[20]; char nativeplace[50]; int tel; char e[20]; }st[50]; int i=0; void shuru() {char a; do{ printf(\n请输入学号:); scanf(%d,st[i].id); fflush(stdin); printf(\n请输入姓名:); gets(st[i].n

文档评论(0)

1亿VIP精品文档

相关文档