今天晚上,我一晚没有睡,大部分时间呆在论坛里。今天晚上真是让我大开眼界,我真的感到天有多大,人有多小。看了“我的作品”里网友用C语言编的“俄罗斯方块”、和“一个体育彩票”。真的,让我感到自惭不如啊。我坚持向你们致敬!!!!!!!
前些天,我编了一个用到随机数编加减乘运算的小游戏。本来,我是想实现除功能的;可是不理想,希望网友能帮我完善。 源代码如下: #include<stdio.h>/*实现随机数*/ #include<conio.h>/*实现清屏*/ void picture();/*实现菜单主界面*/ void ribd01();/*实现加法游戏*/ void ribd02();/*实现减法游戏*/ void ribd03();/*实现除法游戏*/ main() {int m; do{ picture(); printf("\n请输入您的选择:"); scanf("%d",&m); if(m==4) break; switch(m) { case 0:clrscr();break; case 1:ribd01();break; case 2:ribd02();break; case 3:ribd03();break; default:printf("your put error!!!\n"); } }while(1);/*建立了永循环*/ void picture() { printf("\n\n\t\t|----------welcome to this play--------|"); printf("\t\t| |"); printf("\t\t| 0-cls |"); printf("\t\t| 1:^-^ + |"); printf("\t\t| 2:^-^ - |"); printf("\t\t| 3:^-^ * |"); printf("\t\t| 4:^-^ exit |"); printf("\t\t|------------------------------------------------|");} void ribd01();/*实现加法*/ { int i,j,n; int k,m,ri=0;bd=0; clrscr(); printf("请问您想做几道题:"); scanf("%d",&m); for(k=0;k<m;k++) {randomize();/*设制随机种子*/ i=random(100);/*定义产生0-100以内的随机数*/ j=random(100); printf("\n::::=>\t%d+%d=",i,j); scanf("%d",&n); if(n==i+j) {printf("\nyour are very good!!!\n"); ri++;}/*计数正确的数*/ else {printf("\nyour are wrong!!!\n"); bd++;}/*计数错误的数*/ } printf("\n 总共:%d,对了:%d,错了:%d\n",k,ri,bd);} void ribd01();/*实现减法*/ { int i,j,n; int k,m,ri=0;bd=0; clrscr(); printf("请问您想做几道题:"); scanf("%d",&m); for(k=0;k<m;k++) {randomize();/*设制随机种子*/ i=random(100)+60;/*定义产生0-100以内的随机数*/ j=random(60); printf("\n::::=>\t%d-%d=",i,j); scanf("%d",&n); if(n==i-j) {printf("\nyour are very good!!!\n"); ri++;}/*计数正确的数*/ else {printf("\nyour are wrong!!!\n"); bd++;}/*计数错误的数*/ } printf("\n 总共:%d,对了:%d,错了:%d\n",k,ri,bd);} void ribd01();/*实现乘法*/ { int i,j,n; int k,m,ri=0;bd=0; clrscr(); printf("请问您想做几道题:"); scanf("%d",&m); for(k=0;k<m;k++) {randomize();/*设制随机种子*/ i=random(50);/*定义产生0-100以内的随机数*/ j=random(50); printf("\n::::=>\t%d*%d=",i,j); scanf("%d",&n); if(n==i*j) {printf("\nyour are very good!!!\n"); ri++;}/*计数正确的数*/ else {printf("\nyour are wrong!!!\n"); bd++;}/*计数错误的数*/ } printf("\n 总共:%d,对了:%d,错了:%d\n",k,ri,bd);} 《本文完!》注:希望网友能够帮我实现除法功能,我编了一下,不理想。谢谢!
[此贴子已经被作者于2004-10-06 05:10:37编辑过]
----------------解决方案--------------------------------------------------------
有人帮我修改吗?
----------------解决方案--------------------------------------------------------
switch(m) { case 0:clrscr();break; case 1:ribd01();break; case 2:ribd02();break; case 3:ribd03();break; // 这里应该由case 0改为case 3, default:printf("\nyour put error!!\n"); } 你里面做除法应该也很简单阿,都一样吗,只改其中一点就可以了
void ribd01()/*实现乘法运算*/ { int i,j,n; int k,m,ri=0,bd=0; clrscr();/*实现清屏*/ printf("请问您想做几道题:"); scanf("%d",&m); for(k=0;k<m;k++) { randomize(); i=random(50); j=random(50); printf("\n:::=>\t%d+%d=",i,j);(在这里将里面的%d改为"%f / %f=",i,j)
scanf("%d",&n); if(n==i*j) (这里改成((n-float(i)/j) <=0.000001)就基本上差不多了吧,没试过,不过相信没什么大问题) {printf("\n your good right!\n"); ri++}; else {printf("\n your wrong!!"); bd++;} } printf("\n 总共有%d道题,您答对了%d道题,您答错了%d道题",k,ri,bd);}
转自“http://www.codestudy.net/bbs/dispbbs.asp?BoardID=7&ID=16868”
----------------解决方案--------------------------------------------------------