刚学了函数..就要把开始的改编成函数形式的..到底什么是函数阿..?

原创 2013年11月20日 21:29:26
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
main()
{ int s/*任务选择*/,i=0/*计数器*/,f=0/*计分器*/,c1/*数1*/,c2/*数2*/,o/*符号*/,j/*随机*/;
double c/*答案*/,p/*输入*/;
char F/*四则运算*/,x[100]/*字符串*/,z;
srand(time(NULL));
printf("欢迎使用计算机辅助教学系统!\n\n请选择要进行的任务(1~6):");
while(!(scanf("%d",&s) && s>=1 && s<=6))
printf("输入有误!请重新输入:");
switch(s)
{case 1:
do{c1=rand()%10+1,c2=rand()%10+1,c=c1*c2;
printf("%d*%d=",c1,c2);
while(!(scanf("%lf",&p) && p==c))
printf("\n\"Wrong!Please try again.\"\n\n%d*%d=",c1,c2);
printf("\n\"Right!\"\n\n");}while(1);
break;
case 2:
c1=rand()%10+1,c2=rand()%10+1,c=c1*c2;
printf("%d*%d=",c1,c2);
while(!(scanf("%lf",&p) && p==c))
{i++;
if(i==3)
{printf("\n\"Wrong!You have tried three times!Test over!\"\n\n");
break;}
printf("\n\"Wrong!Please try again.\"\n\n%d*%d=",c1,c2);}
if (p==c)
printf("\n\"Right!\"\n\n");
break;
case 3:
do{i++,c1=rand()%10+1,c2=rand()%10+1,c=c1*c2;
printf("%d*%d=",c1,c2);
scanf("%lf",&p);
if(p==c)
{printf("\n\"Right!\"\n\n");
f+=10;}
else printf("\n\"Wrong!\"\n\n");}
while(i!=10);
printf("你的总分为:%d分\n回答正确率为:%d%%\n",f,f);
break;
case 4:
do{i++,c1=rand()%10+1,c2=rand()%10+1,o=rand()%4;
if(o==0)
F='+',c=c1+c2;
else if(o==1)
F='-',c=c1-c2;
else if(o==2)
F='*',c=c1*c2;
else F='/',c=(double)c1/c2;
printf("%d%c%d=",c1,F,c2);
scanf("%lf",&p);
if(p==c)
{printf("\n\"Right!\"\n\n");
f+=10;}
else printf("\n\"Wrong!\"\n\n");}
while(i!=10);
printf("你的总分为:%d分\n回答正确率为:%d%%\n",f,f);
break;
case 5:
do{i=0,f=0;
do{i++,c1=rand()%10+1,c2=rand()%10+1,o=rand()%4;
if(o==0)
F='+',c=c1+c2;
else if(o==1)
F='-',c=c1-c2;
else if(o==2)
F='*',c=c1*c2;
else F='/',c=(double)c1/c2;
printf("%d%c%d=",c1,F,c2);
scanf("%lf",&p);
if(p==c)
{printf("\n\"Right!\"\n\n");
f+=10;}
else printf("\n\"Wrong!\"\n\n");}
while(i!=10);
printf("你的总分为:%d分\n回答正确率为:%d%%\n\n",f,f);
if (f<75)
printf("你的正确率低于75%%!请重新作答!\n\n");}
while(f<75);
break;
case 6:
do{i=0,f=0;
do{i++,c1=rand()%10+1,c2=rand()%10+1,o=rand()%4,j=rand()%4+7;
if(o==0)
F='+',c=c1+c2;
else if(o==1)
F='-',c=c1-c2;
else if(o==2)
F='*',c=c1*c2;
else F='/',c=(double)c1/c2;
printf("%d%c%d=",c1,F,c2);
scanf("%lf",&p);
if(j==7)
z='+';
else if(j==8)
z='-';
else if(j==9)
z='*';
else z='/';
switch(z){
case '+':
if(p==c)
strcpy(x,"Very good!");
else strcpy(x,"No.Please try again.");
goto x;
case '-':
if(p==c)
strcpy(x,"Excellent!");
else strcpy(x,"Wrong.Try once more.");
goto x;
case '*':
if(p==c)
strcpy(x,"Nice work!");
else strcpy(x,"Don't give up!");
goto x;
case '/':
if(p==c)
strcpy(x,"Keep up the good work!");
else strcpy(x,"Not correct.Keep trying.");
goto x;}
x: if(p==c)
{printf("\n\"%s\"\n\n",x);
f+=10;}
else printf("\n\"%s\"\n\n",x);}
while(i!=10);
printf("你的总分为:%d分\n回答正确率为:%d%%\n\n",f,f);
if (f<75)
printf("你的正确率低于75%%!请重新作答!\n\n");}
while(f<75);
break;
default:;}

}


把之前的一变就变了样,,感觉更复杂更麻烦了..


#include<stdio.h>

#include<stdlib.h>
#include<time.h>
#include<string.h>
int s/*任务选择*/,i=0/*计数器*/,f=0/*计分器*/,c1/*数1*/,c2/*数2*/,o/*符号*/,j/*随机*/;
double c/*答案*/,p/*输入*/;
char F/*四则运算*/,x[100]/*字符串*/;
int PDXT/*判断系统含正确率*/()
{
if(p!=c)
return 0;
else f+=10;
return 1;
}
void SZYS/*四则运算*/()
{
o=rand()%4;
if(o==0)
F='+',c=c1+c2;
else if(o==1)
F='-',c=c1-c2;
else if(o==2)
F='*',c=c1*c2;
else F='/',c=(double)c1/c2;
}
void PJXT/*评价系统*/(int a/*是否正确*/,int b/*类型1:普通;2:防疲劳;3:三次规则.*/)
{
j=rand()%4;
if(b==1 || b==3){
if(a==1){
i=0;
strcpy(x,"Right!");}
else {
i++;
if(b==3 && i==3)strcpy(x,"Wrong!You have tried three times!Test over!");
else strcpy(x,"Wrong!Please try again.");}}
else 
if(a==1){
if(j==0)strcpy(x,"Very good!");
else if(j==1)strcpy(x,"Excellent!");
else if(j==2)strcpy(x,"Nice work!");
else strcpy(x,"Keep up the good work!");}
else 
{if(j==0)strcpy(x,"No.Please try again.");
else if(j==1)strcpy(x,"Wrong.Try once more.");
else if(j==2)strcpy(x,"Don't give up!");
else strcpy(x,"Not correct.Keep trying.");}
printf("\n\"%s\"\n\n",x);
}
void main()
{ srand(time(NULL));
printf("欢迎使用计算机辅助教学系统!\n\n请选择要进行的任务(1~6):");
while(!(scanf("%d",&s) && s>=1 && s<=6))
printf("输入有误!请重新输入:");
switch(s)
{ case 1:
while(1)
{c1=rand()%10+1,c2=rand()%10+1,c=c1*c2;
printf("%d*%d=",c1,c2);
scanf("%lf",&p);
PJXT(PDXT(),1);}
break;
case 2:
while(1)
{c1=rand()%10+1,c2=rand()%10+1,c=c1*c2;
printf("%d*%d=",c1,c2);
scanf("%lf",&p);
PJXT(PDXT(),3);
if(i==3)
break;}
break;
case 3:
do{i++,c1=rand()%10+1,c2=rand()%10+1,c=c1*c2;
printf("%d*%d=",c1,c2);
scanf("%lf",&p);
PJXT(PDXT(),1);}
while(i!=10);
printf("你的总分为:%d分\n回答正确率为:%d%%\n",f,f);
break;
case 4:
do{i++,c1=rand()%10+1,c2=rand()%10+1;
SZYS();
printf("%d%c%d=",c1,F,c2);
scanf("%lf",&p);
PJXT(PDXT(),1);}
while(i!=10);
printf("你的总分为:%d分\n回答正确率为:%d%%\n",f,f);
break;
case 5:
do{i=0,f=0;
do{i++,c1=rand()%10+1,c2=rand()%10+1;
SZYS();
printf("%d%c%d=",c1,F,c2);
scanf("%lf",&p);
PJXT(PDXT(),1);}
while(i!=10);
printf("你的总分为:%d分\n回答正确率为:%d%%\n\n",f,f);
if (f<75)
printf("你的正确率低于75%%!请重新作答!\n\n");}
while(f<75);
break;
case 6:
do{i=0,f=0;
do{i++,c1=rand()%10+1,c2=rand()%10+1;
SZYS();
printf("%d%c%d=",c1,F,c2);
scanf("%lf",&p);
PJXT(PDXT(),2);}
while(i!=10);
printf("你的总分为:%d分\n回答正确率为:%d%%\n\n",f,f);
if (f<75)
printf("你的正确率低于75%%!请重新作答!\n\n");}
while(f<75);
break;
default:;}
}

函数的开始和结束标志

.text:00401010 ; void *__thiscall CtmpApp___vector deleting destructor_(CtmpApp *this, unsigned int)...
  • dasgk
  • dasgk
  • 2013年05月28日 20:39
  • 969

js中new一个函数的时候,到底发生了什么

function x(){             debugger             this.w=1             this.a()         }         ...
  • THEANARKH
  • THEANARKH
  • 2016年07月20日 02:02
  • 1646

到底什么是闭包

感觉楼里大部分回答太复杂了,过于理论化,文绉绉地绕来绕去,没抓住本质和精髓。抄书谁不会啊?其实闭包没那么复杂。 最简洁、直击要害的回答,我能想到的分别有这么三句(版权属于 @张恂老师 ): 1、...
  • wy_Blog
  • wy_Blog
  • 2017年02月25日 22:13
  • 1079

2.2 什么是lambda函数?它有什么好处?

So: 什么是lamda函数? lambda 函数是一个可以接收任意多个参数(包括可选参数)并且返回单个表达式值的函数。 (注意:lambda 函数不能包含命令,它们所包含的表达式不能超过一个...
  • u011860731
  • u011860731
  • 2015年07月19日 16:38
  • 2012

angle 函数

angle 函数 Phase angle 相位角 Syntax 语法 P = angle(Z) Description 描述 P = angle(Z) returns the phas...
  • qpc411074777
  • qpc411074777
  • 2012年09月02日 20:22
  • 1693

JavaScript创建函数的几种类型

2、如何将事件的监听绑定到html的标签中呢? 一共有2中方式: (1)直接在html的标签中添加on***方法=“一个或者多个js的语句;” 添加内容    其中test();代表js的语句,不代表...
  • u011955252
  • u011955252
  • 2015年11月15日 13:26
  • 189

函数之函数字面量

javascript 函数字面量
  • u010130282
  • u010130282
  • 2016年04月02日 21:40
  • 808

下划线开头的函数的含义

_snprintf, _stricmp等函数是下划线开头的,下划线开头表示这些函数是MS扩展的,如果一个函数有两个版本一个是带下划线的,一个是不带的,那么不带下划线的是ANSI版本,带下划线的是编译器...
  • hbrr224
  • hbrr224
  • 2006年12月23日 18:27
  • 2749

复变函数 学习心得

好久没更新博客了,原因很多;主要的一点是我在中途换了本书,由《复变函数及应用》换成了《复分析基础及工程应用》,然后又从头看了。现在大概说说这门学问的学习感受吧! 首先,与微积分相比,它的学习难度要小...
  • thefutureisour
  • thefutureisour
  • 2014年12月02日 20:23
  • 4852

什么是函数嵌套和递归

解释一: 函数的嵌套调用是在函数调用中再调用其它函数,函数的递归调用是在函数调用中再调用该函数自身。 解释二: 函数嵌套是语言特性,递归调用是逻辑思想。 函数嵌套允许在一个函数中调用另外一个函...
  • jlxuqiang
  • jlxuqiang
  • 2013年04月16日 16:37
  • 8868
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:刚学了函数..就要把开始的改编成函数形式的..到底什么是函数阿..?
举报原因:
原因补充:

(最多只允许输入30个字)