C语言多功能模块设计.docx
- 文档编号:29319752
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:14
- 大小:68.48KB
C语言多功能模块设计.docx
《C语言多功能模块设计.docx》由会员分享,可在线阅读,更多相关《C语言多功能模块设计.docx(14页珍藏版)》请在冰豆网上搜索。
C语言多功能模块设计
C语言多功能模块设计(总9页)
算
法
应
用
一、
总模块设计
二、功能模块程序
总菜单:
#include<>
#include<>
externvoidmenu1();
externvoidmenu2();
externvoidmenu3();
voidmain()
{intchoice;
while
(1)
{
system("CLS");
printf("\n");printf("****************\n");
printf("菜单\n");
printf("--------------------\n");
printf("1.简单数据应用\n");
printf("2.递推应用\n");
printf("3.枚举应用\n");
printf("0.退出\n");
printf("****************\n");printf("请输入序号:
");
scanf("%d",&choice);
switch(choice)
{case1:
menu1();break;
case2:
menu2();break;
case3:
menu3();break;
case0:
return;
}}}
1.简单数据应用:
#include<>
#include<>
externvoidgcdn();
externvoidzhaoshu();
voidmenu1()
{
while
(1)
{
intchoice1;
system("CLS");
printf("\n");
printf("----------------------\n");
printf("简单数据应用\n");
printf("----------------------\n");
printf("1.最大公约数\n");
printf("2.排序找数\n");
printf("0.返回\n");
printf("----------------------\n");
printf("请输入序号:
");
scanf("%d",&choice1);
switch(choice1)
{case1:
gcdn();break;
case2:
zhaoshu();break;
case0:
return;}}}
2.递推应用:
#include<>
#include<>
externvoidgcdn();
externvoidzhaoshu();
voidmenu2()
{
intchoice2;
While
(1)
system("CLS");
printf("\n");
printf("----------------------\n");
printf("递推应用\n");
printf("----------------------\n");
printf("1.兔子繁殖\n");
printf("2.捕鱼问题\n");
printf("0.返回\n");
printf("----------------------\n");
printf("请输入序号:
");
scanf("%d",&choice1);
switch(choice1)
{case1:
tuzi();break;
case2:
buyu();break;
case0:
return;}}}
3.枚举应用:
#include<>
#include<>
externvoidgcdn();
externvoidzhaoshu();
voidmenu2()
{
intchoice3;
While
(1){
system("CLS");
printf("\n");
printf("----------------------\n");
printf("枚举应用\n");
printf("----------------------\n");
printf("1.兑币问题\n");
printf("2.八皇后问题\n");
printf("0.返回\n");
printf("----------------------\n");
printf("请输入序号:
");
scanf("%d",&choice1);
switch(choice1)
{case1:
duibi();break;
case2:
bahuanghon();break;
case0:
return;}}}
三、各子功能设计
a.最大公约数
#include<>
#include<>
intgcd(intn)
{inta,b,r,i;
printf("\nNumber1:
");
scanf("%d",&b);
for(i=1;i {printf("Number%d: ",i+1); scanf("%d",&a); r=a%b; while(r! =0) {a=b; b=r; r=a%b; } } return(b); } voidgcdn() {intx,n1; system("CLS"); printf("请输入数的个数: \n"); scanf("%d",&n1); x=gcd(n1); printf("最大公约数: %d\n",x); system("PAUSE"); system("CLS"); return; } b.排序找数 #include<> #include<> #include<> #defineN30 voiddeldit(char*s) {intk; k=1; while(s[k]! ='\0'){if(s[k-1]>s[k]) break; k++; } if(s[k]=='\0') {s[k-1]='\0'; return; } k--; do {s[k]=s[k+1]; k++; } while(s[k]! ='\0'); return; } voidsortpro(char*s) {inti,j,k,len; charstmp; len=strlen(s); for(i=0;i {k=i; for(j=i+1;j if(s[k]>s[j])k=j; if(k! =i) {stmp=s[k]; s[k]=s[i]; s[i]=stmp; } } } voidzhaoshu(void) {intd,s,len,i,k,m; charstr[N+1],stmp; system("CLS"); scanf("%d",&d); while(d-->0) {scanf("%s%d",str,&s); for(i=0;i deldit(str); len=strlen(str); k=len-1; while(k>0) {if(str[k]>str[k-1]) break; k--; } if(k==0) {printf("0\n"); return; } for(m=k,i=k+1;i m=i; stmp=str[k-1]; str[k-1]=str[m]; str[m]=stmp; sortpro(&str[k]); printf("%s\n",str); } system("PAUSE"); } c.兔子繁殖: #include<> intmain() {inti,n,f[37]; scanf("%d",&n); f[1]=1; f[2]=2; for(i=3;i<=n;i++) f[i]=f[i-1]+f[i-2]; printf("第%d个月有%d对兔子\n",n,f[n]); return0;} d.捕鱼问题: #include<> intmain() {inti,n,f[5],flag; flag=1; n=1; while(flag! =0) { f[0]=5*n+1; flag=0; for(i=1;i<5;i++) { if(f[i-1]%4! =0) {flag=1;break;} f[i]=5*f[i-1]/4+1; } n++; } printf("5个人至少捕到%d条鱼\n",f[4]); return0; } e.兑币问题: 整币兑换问题。 有1角、2角、5角、1元、5元共5种零币,现要将一张100元的整币换成零币,问共有多少种不同的兑换方案。 #include<> voidmain() {intp1,p2,p5,p10,p20,p50,n,m; n=100;m=0; for(p2=0;p2<=n/2;p2++) for(p5=0;p5<=n/5;p5++) for(p10=0;p10<=n/10;p10++) for(p20=0;p20<=n/20;p20++) for(p50=0;p50<=n/50;p50++) {p1=n-(2*p2+5*p5+10*p10+20*p20+50*p50); if(p1>=0) m++; } printf("%d\n",m); } f.八皇后问题: #include<> #include<> voidmain() {intn=0; longa; for(a=;a<=;a++) {if(chk18(a)==0)continue; if(chkdia(a)==0)continue; printf("%ld",a); n++; if(n%6==0) printf("\n");} printf("\n%d\n",n);} intchk18(longm) {intf[10],i,fg; for(i=0;i<10;i++) f[i]=0; while(m! =0) {f[m%10]++; m=m/10;} for(fg=1,i=1;i<=8;i++) if(f[i]! =1) {fg=0;break;} return(fg);} intchkdia(longm) {intg[9],i,j,fg; for(i=8;i>=1;i--) {g[i]=m%10; m=m/10;} fg=1; for(i=1;i<=7;i++) for(j=i+1;j<=8;j++) if(abs(g[j]-g[i])==j-i) {fg=0;break;} return(fg);} 心得体会: 这次的实验是以前曾经做过的,不过可能很久没有练习又忘记了,而且在以前的基础上增加了一些难度,经过同学的指导才把整个程序写出来,非常有成就感。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 多功能 模块 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)