![]() |
#2
apull2020-12-04 18:21
我用的gcc没有graphics.h,有关图形,声音的都屏蔽了,错误已指出并改正,函数的声明和使用还要多看看。
如果不是考试环境,把bcc和tc都扔了吧,太老了。 ![]() #include"stdio.h" #include"time.h" #include"conio.h" #include"stdlib.h" //函数声明放到main外面,有作用域的。 void add(); void subt(); void mult(); void divid(); void question(int,int,char); void voice(); void clrscr(); ////////gcc没有clrscr,自定义一个,下同 void clrscr() { system("cls"); } int random(int x) { return rand()%x; } void randomize() { srand((unsigned)time(NULL)); } //////////// int main(void) { int x=30,y=6; char choice; randomize();//void randomize(); 初始化随机种子,直接运行函数就行 while(1) { //{} 多了} clrscr(); //gotoxy(x,y); puts("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+6); puts("请选择(1,2,3,4,5):"); choice=getch(); switch(choice) { case'1':add();break; case'2':subt();break; case'3':mult();break; case'4':divid();break; case'5':exit(0);break; default:printf("输入有错误!按任意键后重新输入……"); getch(); } } } void add() //多了分号,跟下面的clrscr搞错了 //void clrscr(); 多了分号 这里应该是加法练习 { int i,num1,num2,answer; clrscr(); //自己嵌套,死循环 printf("加法练习\n"); //增加一个说明 for(i=1;i<=5;i++) { num1=random(99)+1; //random(99)+1; num2=random(99)+1; question(num1,num2,'+'); scanf("%d",&answer); if(answer==num1+num2) puts("正确!"); else { //void voice(); 应该是voice(); printf("错了,正确答案是:%d\n",num1+num2); } } printf("\n加法练习做完了,按任意键返回菜单……\n"); //加一个\n getch(); } void subt() //多了分号 { int i,num1,num2,answer; //void clrscr(); 调用函数,不是声明函数 clrscr(); printf("减法练习\n"); //增加一个说明 for(i=1;i<=5;i++) { num1=random(99)+1; num2=random(99)+1; question(num1,num2,'-'); scanf("%d",&answer); if(answer==num1-num2) puts("正确!"); else{ //void voice(); 同上 printf("错了,正确答案是: %d\n",num1-num2); } } printf("\n减法练习做完了,按任意键返回菜单……"); getch(); } void mult() //多了分号 { int i,num1,num2,answer; //void clrscr();同上 clrscr(); printf("乘法练习\n"); //增加一个说明 for(i=1;i<=5;i++) { num1=random(99)+1; num2=random(10); question(num1,num2,'*'); scanf("%d",&answer); if(answer==num1*num2) puts("正确!"); else { //void voice(); 同上 printf("错了,正确答案是:%d\n",num1+num2); } } printf("\n乘法练习做完了,按任意键返回菜单……"); getch(); } void divid() //多了分号 { int i,num1,num2,answer; //void clrscr(); 同上 clrscr(); //自己嵌套,死循环 printf("除法练习\n"); //增加一个说明 for(i=1;i<=5;i++) { do{ num1=random(99)+1; num2=random(9)+1; } while(num1%num2!=0); question(num1,num2,'/'); scanf("%d",&answer); if(answer==num1/num2) puts("正确!"); else { //void voice(); 同上 printf("错了,正确答案是:%d\n",num1/num2); } } printf("\n除法练习做完了,按任意键返回菜单……"); getch(); } void question(int n1,int n2,char opt) //多了分号 { printf("%d%c%d=",n1,opt,n2); } void voice() { int i; for(i=1;i<=3;i++) { //sound(i*1000); //缺分号 //delay(200); //缺分号 // nosound(); //缺分号 } } [此贴子已经被作者于2020-12-4 18:50编辑过] |
#include"stdio.h"
#include"time.h"
#include"conio.h"
#include"stdlib.h"
int main(void)
{
void add();
void subt();
void mult();
void divid();
void question(int,int,char);
void voice();
void clrscr();
int x=30,y=6;
char choice;
void randomize();
while(1)
{}
clrscr();
gotoxy(x,y);puts("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+6);puts("请选择(1,2,3,4,5):");
choice=getch();
switch(choice)
{
case'1':add();break;
case'2':subt();break;
case'3':mult();break;
case'4':divid();break;
case'5':exit(0);break;
default:printf("输入有错误!按任意键后重新输入……");
getch();
}
}
}
void add();
void clrscr();
{
int i,num1,num2,answer;
clrscr();
for(i=1;i<=5;i++)
{
num1=random(99)+1;
num2=random(99)+1;
question(num1,num2,'+');
scanf("%d",&answer);
if(answer==num1+num2)
puts("正确!");
else
{
void voice();
printf("错了,正确答案是:%d\n",num1+num2);
}
}
printf("\n加法练习做完了,按任意键返回菜单……");
getch();
}
void subt();
{
int i,num1,num2,answer;
void clrscr();
for(i=1;i<=5;i++)
{
num1=random(99)+1;
num2=random(99)+1;
question(num1,num2,'-');
scanf("%d",&answer);
if(answer==num1-num2)
puts("正确!");
else{
void voice();
printf("错了,正确答案是: %d\n",num1-num2);
}
}
printf("\n减法练习做完了,按任意键返回菜单……");
getch();
}
void mult();
{
int i,num1,num2,answer;
void clrscr();
for(i=1;i<=5;i++)
{
num1=random(99)+1;
num2=random(10);
question(num1,num2,'*');
scanf("%d",&answer);
if(answer==num1*num2)
puts("正确!");
else
{
void voice();
printf("错了,正确答案是:%d\n",num1+num2);
}
}
printf("\n乘法练习做完了,按任意键返回菜单……");
getch();
}
void divid();
{
int i,num1,num2,answer;
void clrscr();
for(i=1;i<=5;i++)
{
do{
num1=random(99)+1;
num2=random(9)+1;
}
while(num1%num2!=0);
question(num1,num2,'/');
scanf("%d",&answer);
if(answer==num1/num2)
puts("正确!");
else
{
void voice();
printf("错了,正确答案是:%d\n",num1/num2);
}
}
printf("\n除法练习做完了,按任意键返回菜单……");
getch();
}
void question(int n1,int n2,char opt);
{
printf("%d%c%d=",n1,opt,n2);
}
void voice()
{
int i;
for(i=1;i<=3;i++)
{
sound(i*1000)
delay(200)
nosound()
}
}