|

- 发帖数
- 2
- 在线时间
- 3 小时
|
楼主
发表于 2010-3-7 18:01
| 只看该作者
趣味菜单实在很无趣············(求高人指点)
遇到 如下的所谓C语言趣味菜单的代码,如何才能简化它到极致·······(太长了,那打的就不是代码啦·······)还请个路高手指点·······························
1·
#nclude<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include<math.h>
void FindNum();
void FindRoot();
void Detective();
void Bear();
void Diamond();
int menu_select();
void main()
{
for(; ; ) {
switch(menu_select()){
case1:
FindNum();
break;
case2:
FindRoot();
break;
case3:
Detective();
break;
case4:
Bear();
break;
case5:
Diamond();
break;
case6:
printf("Goodbye!\n");
exit(0);
}
}
}
int menu_select()
{
chars;
intcn;
printf("1.FindNum\n");
printf("2.Findroot\n");
printf("3.Detective\n");
printf("4.Bear\n");
printf("5.Diamond\n");
printf("6.Goodbye\n");
printf("Input1-6:");
do{
s=getchar();
cn=(int)s-48;
}while(cn<0||cn>6);
returncn;
}
void FindNum()
{
charbegin;
inti;
printf("要使下面的等式成立,应在_中填上哪个相同的数字?\n");
printf("
3_x6237=_3x3564\n");
printf("求解结果为:\n");
for(i=1;i<10;i++)
if((30+i)*6237==(10*i+3)*3564)
{
printf("number=%d\n",i);
break;
}
}
void FindRoot()
{
floata,b,c;
doublex1,x2,d,p=0,q=0;
printf("这是一个求方程ax2+bx+c=0的根的程序。\n");
printf("把变量设为double型,使用库函数math进行计算。\n");
printf("输入方程系数啊a,b,c:\n");
scanf("%f,%f,%f",&a,&b,&c);
d=b*b-4*a*c;
printf("方程的解是:\n");
if(d>0)
{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("x1=%5.2f+%5.2fi\tx2=%5.2fi\n",p,q,p,q);
}
}
void Detective()
{
inti,j,k,c;
printf("一辆汽车撞人后逃跑.4个目击者提供如下线索:\n");
printf("甲:牌照三、四位相同;\n");
printf("乙:牌号为31xxxx;\n");
printf("丙: 牌照五、六位相同;\n");
printf("丁:三、六位是一个整数的平方。\n");
for(i=1;i<=9;i++)
for(j=0;j<=9;j++)
if(i!=j)
{
k=i*1000+i*100+j*10+j;
for(c=31;c*c<k;c++);
if(c*c==k)
printf("牌照号码是:%ld.\n",310000+k);
}
}
void Bear()
{
intday,x1,x2;
printf("狗熊到玉米地吃包谷.\n");
printf("第一天吃了一半又拿走一个回去喂小熊.\n");
printf("第二天又去吃了剩下的一半,走时仍然带一个回去.\n");
printf("以后每天都吃前一天剩下的一半,拿走一个.\n");
printf("到第十天时,地里只剩下一个包谷.求地里一共有多少包谷.\n");
day=10;
x2=1;
while(day>0)
{
x1=(x2+1)*2;
x2=x1;
day--;
}
printf("包谷总数=%d\n",x1);
}
void Diamond()
{
inti,j,k;
printf("打印菱形图案.\n");
for(i=1;i<=4;i++)
{
for(j=1;j<=16-i;j++)
printf("");
for(k=1;k<=(2*i-1);k++)
printf("*");
printf("\n");
}
for(i=1;i<=3;i++)
{
for(j=1;j<=i+12;j++)
printf("");
for(k=1;k<=(7-2*i);k++)
printf("*");
printf("\n");
}
}
还有第二个············
//s4.h
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
extern const int SIZE;
double *init(int);
void readin(double *);
void product(double *,double *,int n);
void sort(x,a,SIZE);
#include"s4.h"
double *init(int n)
{
return(double*)malloc(n*sizeof(double));
}
#include"s4.h"
void product(double *addr,double *result,int n)
{
for(n--,*result=*(addr+n);--n>=0;*result*=*(addr+n));
}
#include"s4.h"
void readin(double *a)
{
int i;
printf("Please enter %d value:\n",SIZE);
for(i=0;i<SIZE;i++)
scanf("%lf,a+i");
}
#include"s4.h"
const int SIZE=10;
int main()
{
double *x,*y,res,a[10]={0.0};
int i;
if((x=init(SIZE))==NULL)
return 0;
readin(x);
product(x,&res,SIZE);
printf("Their product is: %10.2f\n",res);
printf("\tx:\n");
for(i=0;i<SIZE;i++)
{
if(i==5)printf("\n");
printf("%10.2f",*(x+i));
}
printf("\n\ta:\n");
sort(x,a,SIZE);
for(i=0;i<SIZE;i++)
{
if(i==5)printf("\n");
printf("%10.2f",*(a+i));
}
printf("\n\ty:\n");
if((y=init(SIZE))==NULL)
return 0;
for(i=0;i<SIZE;i++,y++)
*y=a*SIZE;
for(--y,i=SIZE;i>0;i--,y--)
{
if(i==5)printf("\n");
printf("%10.2f",*y);
}
++y;
free(y);
free(x);
return 0;
}
#include"s4.h"
void swap(double *,double *);
void sort(double *x,double a[],int n)
{
int i,j,pick;
for(i=0;i<n;i++)
a=*(x+i);
for(i=0;i<(n-1);++i)
{
pick=i;
for(j=i+1;j<n;j=j+1)
{
if(a[j]<a[pick])
pick=j;
}
swap(&a[pick],&a);
}
}
void swap(double *p1,double *p2)
{
double temp;
temp=*p1;
*p1=*p2;
*p2=temp;
} |
|