个人程序设计资料.docx
- 文档编号:5324149
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:27
- 大小:181.40KB
个人程序设计资料.docx
《个人程序设计资料.docx》由会员分享,可在线阅读,更多相关《个人程序设计资料.docx(27页珍藏版)》请在冰豆网上搜索。
个人程序设计资料
北方民族大学课程设计
课程名称:
高级语言程序设计
院(部)名称:
信息与计算科学学院
组长姓名学号:
曹永利20124473
同组人员姓名:
张婷、马义花
指导教师姓名:
董建强
设计时间:
2013年6、7——6、27
个人程序设计
(一)曹永利:
1、编写冒泡排序和选择排序的程序,主函数中编写菜单调用排序函数。
#include
voidsort(inta[],intsize)
{
inti,j;
for(i=0;i for(j=0;j if(a[j]>a[j+1]) { intt; t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } main() {inti,a[10]; for(i=0;i<10;i++) scanf("%d",&a[i]); sort(a,10); for(i=0;i<10;i++) printf("%4d",a[i]); printf("\n"); } 6、从文件读入一个字符处,统计该字符串中单词的个数单词之间用空格分开,空格数可以是多个。 #include #include #defineIN1 #defineOUT0 intmain() { charszFilename[256]; FILE*fp; printf("inputthefile: "); scanf("%s",szFilename); if((fp=fopen(szFilename,"r"))==NULL) { printf("thefiledon'texist! "); exit (1); } intflag=OUT; intc; intnw=0; while((c=fgetc(fp))! =EOF) { if(c=='') { flag=OUT; } elseif(OUT==flag) { flag=IN; nw++; } } printf("THenumis: %d\n",nw); return0; } 24.输入学生人数后输入每个学生的成绩,最后输出学生的平均成绩以及最高成绩和最低成绩的学生学号、姓名和成绩。 要求用动态分配存储空间来实现(学生信息包括学号、姓名、成绩) #include #include intmain(){ int*p,m,i,total=0,max=0,min=100; printf("输入学生人数"); scanf("%d",&m); p=(int*)malloc(m*sizeof(m)); for(i=0;i printf("输入第%d个成绩",i+1); scanf("%d",&p[i]); total+=p[i]; if(max max=p[i]; if(min>p[i]) min=p[i]; } printf("成绩的和是%d\nmax=%d\nmin=%d",total,max,min); } 个人程序设计 (二)张婷: 9,输出100-2000之间的所有素数,每行输出8个。 要求调用求素数函数 #include #include intmain(void) { intcount,i,m,n; count=0; for(m=100;m<=2000;m++) { n=sqrt(m); for(i=2;i<=n;i++) if(m%i==0)break; if(i>n) { printf("%6d",m); count++; if(count%8==0) printf("\n"); } } printf("\n"); return0; }#include intmain(void) { longa; intb[50],n,i; scanf("%ld",&a); i=0;while(a>9) { b[i]=a%10; a/=10; i++; } b[i]=a; for(;i>=0;i--) { printf("%d",b[i]); if(i! =0) printf(","); } printf("\n"); } 22,用递归法实现一个正整数的逆序输出。 #include voidprintData(intdata) { if(data==0) { return; } printf("%d",data%10); printData(data/10); } intmain() { intdata; printf("Enteranumber: "); scanf("%d",&data); printData(data); printf("\n"); return0; } 23,输入一个长整形数,从高位开始逐位分割并输出。 如输入123456,逐位输出1,2,3,4,5,6. #include intmain(void) { longa; intb[50],n,i; scanf("%ld",&a); i=0;while(a>9) { b[i]=a%10; a/=10; i++; } b[i]=a; for(;i>=0;i--) { printf("%d",b[i]); if(i! =0) printf(","); } printf("\n"); } 个人程序设计(三)马义花: 2.编写顺序查找和二分查找程序,主函数中编写菜单调用查找函数。 #include intshunxuchazhao(inta[],intn,intx)//顺序查找 { inti; for(i=0;i if(x==a[i]) returni; } return-1; } interfenchazhao(inta[],ints,inte,intx)//二分查找 { intindex=(s+e)/2; if(a[index]==x)returnindex; elseif(a[index]>x){ e=index; returnerfenchazhao(a,s,e,x); } elseif(a[index] s=index; returnerfenchazhao(a,s,e,x); } return-1; } intmain(){ inta[]={1,2,3,4,5,6,7,8,9}; inti,chose,index=-1; printf("输入1顺序查找输入2二分查找输入其他退出程序"); scanf("%d",&chose); switch(chose){ case1: index=shunxuchazhao(a,8,2);break; case2: index=erfenchazhao(a,1,8,2);break; default: return0; } printf("index=%d\n",index); 4.自己编写字符串求长、拷贝、连接、删除、插入指定字符的函数,要求主函数中编写菜单,可以分别实现调用。 #include #include #include intgetLenth(char*s)//求长度 { inti=0; for(i=0;s[i]! ='\0';i++){} returni; } char*copyString(char*s)//复制 { intn=strlen(s); inti; char*cs=(char*)malloc(n*sizeof(char)); for(i=0;i { cs[i]=s[i]; } returncs; } char*lianjie(char*s1,char*s2) { intn1=strlen(s1); intn2=strlen(s2); inti,j; char*cs=(char*)malloc((n1+n2)*sizeof(char)); for(i=0;i { cs[i]=s1[i]; } j=0; for(i=n1;i { cs[i]=s2[j++]; } returncs; } char*insert(char*s,intindex,charch) { intn=strlen(s); inti,j; char*cs=(char*)malloc((n+1)*sizeof(char)); for(i=0;i { cs[i]=s[i]; } for(i=index;i { cs[i+1]=s[i]; } cs[index]=ch; cs[n+1]='\0'; s=cs; returns; } intmain(){ intchose; char*s="12345"; char*s1="qwe"; char*s2="qqqqqqqqqqqqqqqqqqqqqqqqq"; printf("输入1求长度输入2复制输入3链接输入4插入字符输入其他退出程序"); scanf("%d",&chose); switch(chose){ case1: printf("lenth==%d\n",getLenth(s));break; case2: printf("复制出的字符串是");puts(copyString(s));break; case3: printf("连接成的新的字符串是");puts(lianjie(s1,s2));break; case4: printf("插入字符后新的字符串是");puts(insert(s,2,'y'));break; default: return0; } } 12、利用结构体变量求两个复数的和、差、积。 要求设计一个菜单分别调用函数。 #include typedefstructTYPE_PLURAL { doublerealpart; doubleimaginarypart; }plural; pluraloperator*(constplural&lp,constplural&rp) { pluralrtn; rtn.realpart=lp.realpart*rp.realpart-lp.imaginarypart*rp.imaginarypart; rtn.imaginarypart=lp.imaginarypart*rp.realpart+lp.realpart*rp.imaginarypart; returnrtn; } intmain(intargc,char*argv[]) { pluralplr_a={5,10}; pluralplr_b={2,3}; pluralplr_c=plr_a*plr_b; } 小组设计 1: 销售管理系统 某公司有四个销售员(编号: 1-4),负责销售五种产品(编号: 1-5)。 每个销售员都将当天出售的每种产品各写一张便条交上来。 每张便条包含内容: 1)销售员的代号 2)产品的代号 3)这种产品的当天的销售额 每位销售员每天可能上缴0-5张便条。 假设,收集到了上个月的所有便条,编写一个处理系统,读取上个月的销售情况(自己设定),进行如下处理。 1)计算上个月每个人每种产品的销售额。 2)按销售额对销售员进行排序,输出排序结果(销售员代号) 3)统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额) 4)输出统计报表 一: 设计目的 通过本次实训使我们在实际应用中熟悉C语言编程步骤,掌握编程方法,并具有初步的编程能力。 C语言课程设计是教学实践环节中一项重要内容,进行此课程设计旨在: 提高和加强学生的计算机应用及软件开发能力,使学生具备初级程序员的基本素质; 培养学生独立分析问题、解决问题、查阅资料以及自学能力,以适应信息管理行业日新月异的发展形势; 本次课程设计是以学生独立思考解决问题为主,教师指导为辅,结合上机操作,完成指定的任务,作出设计报告。 二: 总体设计程序流程图 程序整体流程图如图A所示: #include #include intmain(void) { intcount,m; intprime(intm); count=0; for(m=100;m<=2000;m++){ if(prime(m)){ printf("%6d",m); count++; if(count%8==0)printf("\n"); } } printf("\n"); 图A整体流程图 三: 详细设计模块详细说明 系统的功能是通过子函数调用的方式来完成的,下面对程序中用到的函数及其功能做一下说明。 ●voidmenu(): 显示主菜单界面。 ●voiddata_count(data*x): 以写方式打开文件,对商品信息清零,读入职工编号、产品编号、销售量等信息,对相同职工的相同产品的销售量求和后写入文件。 ●voidrange_sxy(data*x): 以读方式打开文件,读入信息,输入按何种产品排序后对存储职工编号的数组进行排序,最后输出新序的职工编号信息。 ●voidrange_shangpin(data*x): 从文件读入信息,对每项产品的销售量求和,按每项产品的总销售量排序。 ●voiddata_out(data*x): 打开文件,读入信息,求所有产品的销售量的和,输出统计表。 ●voidmain(): 主函数,调用以上函数,完成相应功能。 ● 四: 调试及测试 系统初始运行时,会显示如图1所示的菜单界面,用户可以根据提示,进行相应的选择,来完成系统提供的各种功能。 图1输入界面 当选择1时,系统调用函数voiddata_count(data*x),完成相应的功能。 运行界面如图2所示,系统会要求用户输入月份,然后要求输入这个月份中是哪个职工销售的哪项产品的数量的具体信息,我们的系统假设有四个职工,职工编号从1至4,一共有5项产品,产品编号从1至5。 职工和产品的数目都可以更改,只要修改一下程序中的宏定义语句即可。 图2计算产品销售额界面 当选择2时,系统调用voidrange_sxy(data*x),完成相应部分的功能。 运行界面如图3所示,系统会要求用户输入月份,然后排序的产品编号,最后给出此项产品的按照销售量的大小进行的销售员的编号的排序情况。 图3按销售额对销售员排序的界面 当选择3时,系统调用voidrange_shangpin(data*x),完成对每项商品的总销售量排序的功能,运行界面如图4-4所示: 图4产品总销售额排序界面 当选择4时,系统调用voiddata_out(data*x),完成输出统计表的功能,统计内容如图5所示: 图5统计报表界面 运行说明 首次打开系统必须输入一部分员工信息,如果没有员工信息文件,除了输入功能以外,其它的功能将自动禁止,按任意键退出程序。 输入时,按照提示陆续输入每个员工的单个信息,输入完毕,选择“0”,程序将自动回到菜单选择界面。 其它的功能模块都在执行程序时有相应的提示,非常容易操作。 。 五: 源程序清单: #include #include #include #include #defineZ5 #defineR4/*定义宏常量便于程序的一般化*//*R表示销售员个数*/ typedefstruct/*缩短结构体变量名*/ { intshangpin[Z];/*定义结构体便于信息的存储和读写,辨别*//*z是表示商品的种类,最后一个为该销售员商品总和*/ }data; voidmenu() {printf("*******************************************************\n"); printf("0.结束操作\n"); printf("1.计算上个月每个人每种产品的销售额\n"); printf("2.按销售额对销售员进行排序,输出排序结果\n"); printf("3.统计每种产品的总销售额,输出排序结果\n"); printf("4.输出统计报表\n"); printf("******************************************************\n"); } voiddata_count(data*x)/*计算上个月每个人每种产品的销售额*/ { FILE*fp; charfname[10]; intj,t;/*用于控制循环*/ inti,k,s;/*用于定义职工序号,产品序号,产品数量*/ system("cls"); printf("您想计算哪个月? \n"); printf("请输入月份: ");/*输入文件名,这样可以进行各个月份信息写入*/ scanf("%s",fname); strcat(fname,".txt"); if((fp=fopen(fname,"wb"))==NULL)/*打开文件*/ { printf("cannotopenthefile\n"); exit(0); } for(j=0;j for(t=0;t (x+j)->shangpin[t]=0; printf("pleaseputtheinformationaboutthe职工编号,产品编号,销售数量\n");/*写入信息*/ for(j=0;;j++) { scanf("%d%d%d",&i,&k,&s); if(i==0)/*输入职工为0时结束信息输入*/ break; if(i>R||i<0||k>Z||k<0) { printf("theinformationerror! \n");/*避免输入信息出错*/ continue; } else (x+i-1)->shangpin[k-1]=(x+i-1)->shangpin[k-1]+s;/*统计各个人的各种产品的数量,-1为了和数组中的序号相匹配*/ } for(j=0;j if(fwrite((x+j),sizeof(data),1,fp)! =1)/*把信息写入文件中便有以后调用*/ printf("writeerror! \n"); fclose(fp);/*关闭文件避免信息遗漏*/ } voidrange_sxy(data*x)/*按销售额对销售员进行排序,输出排序结果*/ { FILE*fp; charfname[10]; inti,k,j,t,bianhao[R]={0},z; system("cls"); printf("你要哪个月的? \n"); printf("请输入月份: ");/*输入文件名,这样可以进行各个月份信息读入*/ scanf("%s",fname); strcat(fname,".txt"); if((fp=fopen(fname,"rb"))==NULL)/*打开文件*/ { printf("cannotopenthefile\n"); exit(0); } for(i=0;i if(fread(x+i,sizeof(data),1,fp)! =1) printf("读入信息出错! ");/*读入信息提示*/ for(i=0;i bianhao[i]=i++; printf("请输入按何种产品排序\n"); scanf("%d",&k); k=k-1;/*便于与结构体中的数组值对应*/ for(i=0;i { t=i; for(j=i+1;j if((x+bianhao[t])->shangpin[k]<(x+bianhao[j])->shangpin[k])/*调用职工各自对应的结构体内的产品数量*/ t=j; if(t! =i) { z=bianhao[i]; bianhao[i]=bianhao[t]; bianhao[t]=z; } } printf("按%d产品对销售员排序为: \n",k+1); for(i=0;i printf("%5d",bianhao[i]+1); getch(); fclose(fp); } voidrange_shangpin(data*x)/*统计每种产品的总销售额,输出排序结果*/ { FILE*fp; charfname[10]; inti,j,sum[Z]={0},bianhao[Z]={0},z,t,k; system("cls"); printf("您想计算哪个月的? \n"); printf("请输入月份: ");/*输入文件名,这样可以进行各个月份信息读入*/ scanf("%s",fname); strcat(fname,".txt"); if((fp=fopen(fname,"rb"))==NULL)/*打开文件*/ { printf("cannotopenthefile\n"); ex
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 个人 程序设计 资料