谁能帮我解释一个程序!` 画一个流程图!~
我是一个新手 看不懂这个程序 希望会的人能帮帮我 具体解释一下这个程序越详细越好!~ 还有能不能画个流程图!~ 帮帮忙吧!~
原代码在下面:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main()
{
for (;;){
switch (menu()){
case '1 ':test();break;
case '2 ':practise();break;
case '3 ':exit(0);
}
}
}
menu()
{
char c;
do{
clrscr();
printf( "\n 1.测试\n ");
printf( " 2.练习\n ");
printf( " 3.退出\n ");
printf( "\n请选择(1或2或3): ");
c=getche();
}while(c < '1 '||c> '3 ');
return c;
}
test()
{
int ts,i,m,n,s,r=0;
ts=numsoftest();
randomize();
for (i=1;i <=ts;i++){
do {
m=num();n=num();
}while ((m+n)> 9);
printf( "%d) %d+%d= ",i,m,n);
scanf( "%d ",&s);
if (s==m+n) r++;
}
printf( "成绩:%d\n ",100*r/ts);
printf( "按任意键继续... ");
getch();
}
numsoftest()
{
int n;
clrscr();
do{
printf( "\n请输入题数(10~20): ");
scanf( "%d ",&n);
}while (n <10||n> 20);
return n;
}
practise()
{
int ts,i,m,n,s;
ts=numsoftest();
randomize();
for (i=1;i <=ts;i++){
do {
m=num();n=num();
}while ((m+n)> 9);
printf( "%d) %d+%d= ",i,m,n);
scanf( "%d ",&s);
if (s==m+n) right();
else wrong();
}
printf( "按任意键继续... ");
getch();
}
num()
{
return random(9);
}
right()
{
printf( "正确\n ");
}
wrong()
{
printf( "错误\n ");
}
[解决办法]
原代码在下面:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main()
{
for (;;){ // 无穷for循环
switch (menu()){ // 先执行menu()函数,从menu函数返回值来确定是下面的哪一种情况,然后执行相应的函数.
case '1 ':test();break; // menu函数的返回值是 '1 '时,执行test()函数
case '2 ':practise();break; // 同上
case '3 ':exit(0); // 是3时,程序退出
}
}
}
menu()
{
char c;
do{
clrscr(); // 把屏幕上输出的东西清空
printf( "\n 1.测试\n ");
printf( " 2.练习\n ");
printf( " 3.退出\n ");
printf( "\n请选择(1或2或3): ");
c=getche(); // 输入一个字符
}while(c < '1 '||c> '3 '); // 字符如果不在 '1 '与 '3 '的范围内,说明不是所要的,继续输入.
return c;
}
test()
{
int ts,i,m,n,s,r=0;
ts=numsoftest();
randomize();
for (i=1;i <=ts;i++){
do {
m=num();n=num();
}while ((m+n)> 9);
printf( "%d) %d+%d= ",i,m,n);
scanf( "%d ",&s);
if (s==m+n) r++;
}
printf( "成绩:%d\n ",100*r/ts);
printf( "按任意键继续... ");
getch();
}
numsoftest()
{
int n;
clrscr(); // 清屏
do{
printf( "\n请输入题数(10~20): ");
scanf( "%d ",&n);
}while (n <10||n> 20);
return n;
}
practise()
{
int ts,i,m,n,s;
ts=numsoftest();
randomize();
for (i=1;i <=ts;i++){
do {
m=num();n=num();
}while ((m+n)> 9);
printf( "%d) %d+%d= ",i,m,n);
scanf( "%d ",&s);
if (s==m+n) right();
else wrong();
}
printf( "按任意键继续... ");
getch();
}
num()
{
return random(9);
}
right()
{
printf( "正确\n ");
}
wrong()
{
printf( "错误\n ");
}
[解决办法]
忘了贴图片地址了
http://www.wanfangdata.com.cn/qikan/periodical.Articles/scdxxb/scdx99/scdx9904/image4/P16-1.gif
网页地址:
http://www.wanfangdata.com.cn/qikan/periodical.Articles/scdxxb/scdx99/scdx9904/990416.htm