#include"stdio.h"
#include"time.h"
#include"conio.h"
#include"stdlib.h"
#include"windows.h"
#define N 10
void add();
void hui();
void subt();
void mult();
void divid();
void shui();
void question(int,int,char);
void ling();
void zhi();
void yang();
void tong();
void jiu();
void shu();
void jj();
void xz();
void zj();
void zsj();
void dsj();
void gotoxy(int,int);
//选项显示位置
void gotoxy(int m, int n)
{
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos;
pos.X = m;
pos.Y = n;
SetConsoleCursorPosition(handle, pos);
}
main()
{
int x=30,y=6;
char choice;
srand((unsigned) time(NULL));//产生随机值
while(1)
{
system("cls") ;
gotoxy(x,y+1);puts("1.加减乘除");
gotoxy(x,y+2);puts("2.形状");
gotoxy(x,y+3);puts("3.杨辉三角");
gotoxy(x,y+4);puts("4.九九乘法表");
gotoxy(x,y+5);puts("5.性质数");
gotoxy(x,y+6);puts("6.退 出");
gotoxy(x,y+7);puts("请选择(1,2,3,4,5,6):");
choice=getchar();
switch(choice)
{
case '1':jj();break;
case '2':xz();break;
case '3':yang();break;
case '4':jiu();break;
case '5':shu();break;
case '6':exit(0);break;
default:printf("输入有误!请重新输入......\n");
}
}
}
//形状调用
void xz()
{
int x=30,y=6;
char choice;
while(1)
{
system("cls") ;
gotoxy(x,y);printf("1.正三角");
gotoxy(x,y+1);puts("2.倒三角");
gotoxy(x,y+2);puts("3.菱形");
gotoxy(x,y+3);puts("4.直角三角形");
gotoxy(x,y+4);puts("5.返回主菜单");
gotoxy(x,y+5);puts("请选择(1,2,3,4,5):");
choice=getchar();
switch(choice)
{
case '1':zsj();break;
case '2':dsj();break;
case '3':ling();break;
case '4':zj();break;
case '5':main();break;
default:printf("输入有误!请重新输入......\n");
}
}
}
//数的计算
void jj()
{
int x=30,y=6;
char choice;
while(1)
{
system("cls") ;
gotoxy(x,y);printf("1.加法练习");
gotoxy(x,y+1);puts("2.减法练习");
gotoxy(x,y+2);puts("3.乘法练习");
gotoxy(x,y+3);puts("4.除法练习");
gotoxy(x,y+4);puts("5.返回主菜单");
gotoxy(x,y+5);puts("请选择(1,2,3,4,5):");
choice=getchar();
switch(choice)
{
case '1':add();break;
case '2':subt();break;
case '3':mult();break;
case '4':divid();break;
case '5':main();break;
default:printf("输入有误!请重新输入......\n");
}
}
}
//性质数
void shu()
{
char c;
int x=30,y=6;
while(1)
{system("cls") ;
gotoxy(x,y);printf("1.质数");
gotoxy(x,y+1);puts("2.水仙花数");
gotoxy(x,y+2);puts("3.回文数");
gotoxy(x,y+3);puts("4.同构数");
gotoxy(x,y+4);puts("5.返回主菜单");
gotoxy(x,y+5);puts("请选择(1,2,3,4,5):");
c=getchar();
switch(c)
{
case '1':zhi();break;
case '2':shui();break;
case '3':hui();break;
case '4':tong();break;
case '5':main();break;
default:printf("输入有误!请重新输入......\n");
}
}
}
//正三角
void zsj()
{system("cls") ;
printf("请输入直角三角形的层数:\n");
int m,i,j,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(m=n-i;m>0;m--)
printf(" ");
for(j=1;j<=i;j++)
printf("* ");
printf("\n");
}
getch();
}
//倒三角
void dsj()
{ system("cls");
printf("请输入直角三角形的层数:\n");
int m,i,j,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=n;j>=i;j--)
printf("* ");
printf("\n");
for(m=i;m>0;m--)
printf(" ");
}
getch();
}
//直角三角形
void zj()
{system("cls");
printf("请输入直角三角形的层数:\n");
int m,i,j,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=i;j++)
printf("*");
printf("\n");
}
getch();
}
//质数
void zhi()
{
system("cls");
int x,i,j;
x=0;
for(i=2;i<1000;i++)
{
for(j=2;j<i;j++)
if(i%j==0)
break;
if(j>=i)
{printf("%d\t",i);
x++;
if(x%7==0)
printf("\n");
}
}
getch();
}
//加
void add()
{
int i,num1,num2,answer;
system("cls") ;
for(i=1;i<=5;i++)
{
num1=rand()%99+1;
num2=rand()%99+1;
question(num1,num2,'+');
scanf("%d",&answer);
if(answer==num1+num2)
puts("正确!");
else
printf("错了,正确答案是:%d\n",num1+num2);
}
printf("\n加法练习做完了,按任意键返回菜单......");
getch();
}
//减
void subt()
{
int i,num1,num2,answer;
system("cls") ;
for(i=1;i<=5;i++)
{
num1=rand()%99+1;
num2=rand()%99+1;
question(num1,num2,'-');
scanf("%d",&answer);
if(answer==num1-num2)
puts("正确!");
else
printf("错了,正确答案是:%d\n",num1-num2);
}
printf("\n减法练习做完了,按任意键返回菜单......");
getch();
}
//乘
void mult()
{
int i,num1,num2,answer;
system("cls") ;
for(i=1;i<=5;i++)
{
num1=rand()%99+1;
num2=rand()%10;
question(num1,num2,'*');
scanf("%d",&answer);
if(answer==num1*num2)
puts("正确!");
else
printf("错了,正确答案是:%d\n",num1*num2);
}
printf("\n乘法练习做完了,按任意键返回菜单......");
getch();
}
//除
void divid()
{
int i,num1,num2,answer;
system("cls") ;
for(i=1;i<=5;i++)
{
do
{
num1=rand()%99+1;
num2=rand()%9+1;
}while(num1%num2!=0);
question(num1,num2,'/');
scanf("%d",&answer);
if(answer==num1/num2)
puts("正确!");
else
printf("错了,正确答案是:%d\n",num1/num2);
}
printf("\n除法练习做完了,按任意键返回菜单......");
getch();
}
void question(int n1,int n2,char opt)
{
printf("%d%c%d=",n1,opt,n2);
}
//菱形
void ling()
{system("cls");
int m,i,j,n;
printf("请输入菱形的边长:\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(m=n-i;m>0;m--)
printf(" ");
for(j=1;j<=i;j++)
printf("* ");
printf("\n");
}
for(i=n;i>=1;i--)
{
for(m=n-i;m>0;m--)
printf(" ");
for(j=1;j<=i-1;j++)
printf(" *");
printf("\n");
}
getch();
}
//杨辉三角
void yang()
{
system("cls");
printf("杨辉三角\n");
int x,c,ls,rs;
int t[N]={1};
for(x=0;x<N;x++)
{
ls=0;
for(c=N-x;c>0;c--)
printf(" ");
for(c=0;c<=x;c++)
{
rs=t[c];
t[c]=ls+rs;
ls=rs;
printf("%4d",t[c]);
}
printf("\n");
}
getch();
}
//同构数
void tong()
{
system("cls");
printf("0~1000以内的同构数:\n");
int k,x,n;
for(x=0;x<=1000;x++)
{k=1;
n=x;
while(n)
{
k*=10;
n/=10;
}
if(x==x*x%k)
printf("%d\t",x);
}
getch();
}
//九九乘法表
void jiu()
{
system("cls");
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
printf("%d*%d=%d\t",j,i,j*i);
printf("\n");
}
getch();
}
//回文数
void hui()
{system("cls");
int i,j,k,x;
for(i=0;i<=1000;i++)
{k=0;j=i;
while(j)
{
k=k*10+j%10;
j/=10;
}
if(k==i)
printf("%d\t",i);
}
getch();
}
//水仙花数
void shui()
{system("cls");
int i,x,g,s,b;
for(i=100;i<1000;i++)
{
g=i/100;
s=i/10%10;
b=i%10;
if(i==g*g*g+s*s*s+b*b*b)
printf("%d\t",i);
}
getch();
}