c语言课程设计实习报告_第1页
c语言课程设计实习报告_第2页
c语言课程设计实习报告_第3页
c语言课程设计实习报告_第4页
c语言课程设计实习报告_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言课程设计第一章 两个大数相乘§1.1题目描述 本问题中,要求输入两个相对较大的正整数,能够通过程序计算出其结果。§1.2算法设计 设计思想:两个相对较大的数肯定是不能够用LONG INT类型存储的,因为LONG型数据的数据范围也并不是很大,于是就需要采用其他的存储结构。这里推荐用数组存储一个大数,数组的初始空间可以定义到如200或300个单元,每个单元存储一位数据,形如下图:25596207.。这样理论上,比如数组定义为200,就可以存储200个数字的整数,应该是满足足够大的条件了。而结果的存储也需要考虑空间的问题,所以需要一个更大的数组。在解决了存储问题后,我们需要

2、来实现乘法运送的过程,也就是说你必须要把这个数组中的每一位数字单独来进行乘法运算,比如我们可以用一个数字和另外一个数组中的每一位去相乘,从而得到乘法运算中一行的数字,再将每一行数字错位相加。这就是乘法运算的过程。§1.3程序设计及代码分析#include <stdio.h> #include <math.h> void sum(int a300,int b300,int m,int n) int k=0; int c400=0; int i,j,s,t; for(i=0;i<m+n;i+) s=0; for(j=0;j<m;j+) if(t=(m-

3、1+n-1-i-j)>=n|(t=(m-1+n-1-i-j)<0) continue; else s=s+aj*bm-1+n-1-i-j; s=s+k; ci=s%10; k=s/10; printf("n结果是:n"); for(i=399;i>=0;i-) if(ci!=0) t=i; break; else continue; for(i=t;i>=0;i-) printf("%d",ci); printf("n"); void main() int i,m,n,c; int a300=0,b300=0;

4、 printf("请输入第一个数字:n"); for(i=0;(c=getchar()!='n'i+) ai=c-48; m=i; printf("n请输入第二个数字:n"); for(i=0;(c=getchar()!='n'i+) bi=c-48; n=i;sum(a,b,m,n); §1.4实验数据及运行效果截图§1.5设计中出现的错误及解决方法 对于这个问题,看到题目的第一反应就是用“sum=a+b“的程序算法做。设计中出现的错误大部分是for循环的混乱。此外数组定义数据,常常会忽略a0,会造成

5、思想上的越界。对于题目要求的大数,我们可以定义一个较大的数组,再引用数组中的元素。第2章 学生信息管理系统设计§1.1 题目描述学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,使之能提供以下功能:系统以文本菜单方式工作,学生信息录入功能(学生信息最好用文件保存)-输入学生信息浏览功能-输出查询、排序功能-算法按学号查询按姓名查询学生信息的删除与修改(可选项)§1.2算法设计开始可用结构体包含题目所需信息,然后自定义一系列函数,运用输入输出等函数、循环语句等呈现数据,然后定义主函数,通过其调用自定义的函数,switch语句

6、实现多分支结构,实现其子功能,最终实现输入、输出、查询、修改、删除等功能。§1.3程序设计及代码分析#include<stdio.h> #include<stdlib.h> #include<string.h> struct studentint id; char name10; int age; char sex10; char birthady20; char nativeplace50;int tel; char e20;st50; int i=0; void shuru() char a; do printf("n请输入学号:&q

7、uot;); scanf("%d",&sti.id); fflush(stdin); printf("n请输入姓名:"); gets(); printf("n") ; printf("请输入年龄:"); scanf("%d",&sti.age); fflush(stdin); printf("n请输入姓别:"); gets(sti.sex); fflush(stdin); printf("n请输入出生年月:"); gets(

8、sti.birthady);printf("n请输入地址:");gets(sti.nativeplace); printf("n请输入电话:"); scanf("%d",&sti.tel); fflush(stdin); printf("n请输入e-mail:");scanf("%d",&sti.e); printf("n是否继续输入另外一个学生信息?(y/n)"); fflush(stdin); a=getchar(); i+; while(a='y

9、' && i<=50); void shuchu() int j; printf("t学号t姓名t年龄t性别t出生年月t地址t电话ten"); for(j=0;j<i;j+) printf("t%dt%st%dt%st%st%dt%st%dn", stj.id,,stj.age,stj.sex,stj.birthady,stj.nativeplace,stj.tel,sti.e); void paixu() /按年龄从大到小排序函数 int j,k; int temp; for(j=0;j<i;j

10、+) for(k=0;k<i-1-j;k+) if(stk.age<stk+1.age) temp=stk.age; stk.age=stk+1.age; stk+1.age=temp; ; shuru() ;/排序后输出 void chaxun() int m; char name20,b; do printf("n请输入想查找的学生姓名:"); fflush(stdin); gets(name); for(m=0;m<i;m+) if(strcmp(name,)=0) printf("nt您查找的学生在第%d个位置找到了!n&

11、quot;,m+1); break; if(m>=20) printf("nt没有找到这个学生!n"); else printf("t学号t姓名t年龄t性别t生日tt电话t籍贯n"); printf("t%dt%st%dt%st%st%dt%sn", stm.id,,stm.age,stm.sex,stm.birthady,stm.tel,stm.nativeplace); printf("n是否查找另一个学生的信息?(y/n)"); fflush(stdin); b=getchar(); w

12、hile(b='y'); void shanchu() char name20,c; int a,b; do printf("n请输入要删除的学生姓名:n"); fflush(stdin); gets(name); for(a=0;a<i;a+) if(strcmp(name,)=0) break; for(b=a;b<i;b+) stb=stb+1; if(a>i) printf("t没有找到这个学生!n"); else i-; shuru(); printf("n是否继续删除另一个学生信息?

13、(y/n) "); fflush(stdin); c=getchar(); while(c='y'); void xiugai() shuru(); paixu(); void main() /定义主函数 int change; do system("cls"); printf("=学生信息管理系统=n"); printf("tt一: 输入学生信息n"); printf("tt二: 输出学生信息n"); printf("tt三: 排序学生信息n"); printf(&q

14、uot;tt四: 删除学生信息n"); printf("tt五: 修改学生信息n"); printf("tt六: 退出程序n"); fflush(stdin); printf("tt请输入功能选项:"); scanf("%d",&change); switch(change) case 1: shuru(); break; case 2: shuchu(); break; case 3: chaxun(); break; case 4: shanchu(); break; case 5: xiug

15、ai(); break; case 6: break; while(change!=6); §1.4实验数据及运行效果截图§1.5设计中出现的错误及解决方法 这个题的设计,对设计多个变量的程序,可以通过结构体,加上调用自定义函数实现其功能。但是在设计中我对对结构体的使用了解不是很深,在显示的运行效果图中,有很多功能没有实现,只能输入、查找和删除,。第3章 职工信息管理系统设计§1.1 题目描述职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。试设计一职工信息管理系统,使之能提供以下功能:系统以菜单方式工作v职工信息录入功能(职工信息用

16、文件保存)输入v职工信息浏览功能 输出v查询和排序功能:(至少一种查询方式)  算法vl 按工资查询l 按学历查询等职工信息删除、修改功能(任选项)v§1.2算法设计用结构体包含题目所需信息,然后自定义一系列函数,调用自定义的函数,switch语句实现多分支结构,最终输出所需数据。§1.3程序设计及代码分析#include<stdio.h>#include <string.h>#define N 6struct employee int number,age,wage; char name20,sex10,address

17、30,xueli20; long int telephone;emN; int a=N; int *p=&a; main() void search();void search_name();void search_xueli();void search_number();void load();void display();void del();void input();void add();void save(); int n;printf("n");printf(" *职工信息管理*n");printf("n");pri

18、ntf(" 1.录入职工信息n");printf(" 2.浏览职工信息n");printf(" 3.查询职工信息n按工资查询n");printf(" 4.删除职工信息n");printf(" 5.添加职工信息n");printf(" 6.退出n");printf("n");scanf("%d",&n);switch(n)case 1:printf(" 输入职工信息n");printf("n"

19、;);input();main();break;case 2:printf(" 浏览职工信息n");printf("n");display(*p);main();break;case 3:printf(" 查询职工信息n");printf("n");search();break; case 4:printf(" 删除职工信息n");printf("n");del(p);break;case 5:printf(" 添加职工信息n");printf("

20、;n");add(p);break;case 6: break;default : break; void input() int i;for(i=0;i<N;i+)printf("请输入职工号: ");scanf("%d",&emi.number); printf("请输入姓名: ");scanf("%s",); printf("请输入性别: ");scanf("%s",&emi.sex); printf("请输入年

21、龄: ");scanf("%d",&emi.age); printf("请输入学历: ");scanf("%s",emi.xueli); printf("请输入工资: ");scanf("%d",&emi.wage); printf("请输入住址: ");scanf("%s",emi.address); printf("请输入电话: ");scanf("%d",&emi.teleph

22、one); printf("n");printf("n创建完毕!n"); save(N);void save(int m) int i;FILE*fp;if(!(fp=fopen("d:/bbb.txt","w")printf("打开失败");for(i=0;i<m;i+)fprintf(fp,"M %8s %5s %8s %8s ?n",emi.number,,emi.sex,emi.age,emi.xueli,emi.wage,emi.address

23、,emi.telephone);/传送格式化输出到一个文件中fclose(fp);void load(int b) int i;FILE*fp;if(!(fp=fopen("d:/bbb.txt","r")printf("打开失败");else for(i=0;i<b;i+)fscanf(fp,"?%8s%5s%8s%8s?n",&emi.number,&,&emi.sex,&emi.age,&emi.xueli,&emi.wage,&e

24、mi.address,&emi.telephone);fclose(fp);void display(int a) int i,b=a; load(b); printf("n职工号t姓名t性别t年龄t 学历t工资t住址t电话n");for(i=0;i<a;i+)printf("%dt%8st%st%dt%8s %dt%st%dn",emi.number,,emi.sex,emi.age,emi.xueli,emi.wage,emi.address,emi.telephone);printf("n");vo

25、id search() int t;printf("n按职工号查询按1n按姓名查询请按2");printf("n按学历查询请按3n返回主菜单请按4n");scanf("%d",&t);switch(t) case 1:printf("n按职工号查询n");search_number(); break; case 2:printf("n按姓名查询n");search_name(); break; case 3:printf("n按学历查询n");search_xueli

26、(); break; case 4:main(); break; default :printf("输入错误,请重新输入!n");search(); break;void search_number() int i,number;load(*p); printf("n请输入要查询的职工号:");scanf("%d",&number);for(i=0;i<*p;i+)if(number=emi.number) printf("n该职工信息如下:n"); printf("n职工号t姓名t性别t年

27、龄t学历t工资t住址t电话n");printf("n%dt%8st%st%dt%8s %dt%st%dn",emi.number,,emi.sex,emi.age,emi.xueli,emi.wage,emi.address,emi.telephone); printf("n");break;if(i=*p)printf("n查无此人n");search();void search_name() int i;char name20;load(*p); printf("n请输入要查询的姓名:"

28、;);scanf("%s",name);for(i=0;i<*p;i+) if(!strcmp(,name) printf("n该职工信息如下:n"); printf("n职工号t姓名t性别t年龄t学历t工资t住址电话n");printf("n%dt%8st%st%dt%8s %dt%st%dn",emi.number,,emi.sex,emi.age,emi.xueli,emi.wage,emi.address,emi.telephone); printf("n&q

29、uot;); break; if(i=*p) printf("n查无此人n"); search();void search_xueli() int i,k=0;char xueli20;load(*p); printf("n请输入要查询的学历:");scanf("%s",xueli);for(i=0;i<*p;i+)if(!strcmp(emi.xueli,xueli)printf("职工号t 姓名t性别t年龄t 学历t工资t住址t电话n");printf("%dt%8st%st%dt%8s %dt

30、%st%dn",emi.number,,emi.sex,emi.age,emi.xueli,emi.wage,emi.address,emi.telephone);for(i=0;i<*p;i+) if(!strcmp(emi.xueli,xueli) break; else k+;if(k=*p)printf("n查无此人n");search();void del(int *b)int i,t,j,m;int a=*b;char name20;printf("n所有职工信息:n");display(a); printf(

31、"n请输入要删除职工的名字:");scanf("%s",name);for(i=0;i<a;i+)if(!strcmp(,name)printf("n确认删除请按1n取消请按2n");scanf("%d",&t);if(t=1) for(j=i;j<a-1;j+)emj.age=emj+1.age;emj.wage=emj+1.wage;emj.number=emj+1.number;emj.telephone=emj+1.telephone;strcpy(emj.xueli,e

32、mj+1.xueli);strcpy(,emj+1.name);strcpy(emj.address,emj+1.address);strcpy(emj.sex,emj+1.sex);a-;save(j); break;if(t=2) break;if(i=a)printf("n输入错误,无此人n");*b=a;printf("n继续删除请按1n浏览信息请按2n返回主菜单请按3n");scanf("%d",&m);switch(m) case 1:del(p);break; case 2:display(*b)

33、;main();break; case 3:main();break; default:break;void add(int *a) int i,n,m;FILE*fp;if(!(fp=fopen("d:/bbb.txt","a")printf("打开失败");printf("n请输入想添加的人数:n");scanf("%d",&n);for(i=*a;i<n+(*a);i+) printf("请输入职工号: "); scanf("%d",&

34、amp;emi.number); printf("请输入姓名: "); scanf("%s",); printf("请输入性别: "); scanf("%s",&emi.sex); printf("请输入年龄: "); scanf("%d",&emi.age); printf("请输入学历: "); scanf("%s",emi.xueli); printf("请输入工资: "); s

35、canf("%d",&emi.wage); printf("请输入住址: "); scanf("%s",emi.address); printf("请输入电话: "); scanf("%d",&emi.telephone); printf("n");printf("n添加完毕n");for(i=*a;i<n+(*a);i+)fprintf(fp,"M %8s %5s %8s %8s ?n",emi.number,,emi.sex,emi.age,emi.xueli,emi.wage,emi.address,emi.telephone);fclose(fp);*a=*a

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论