谁能帮我解释一个程序!` 画一个流程图!~

metears 2007-07-04 07:59:27
我是一个新手 看不懂这个程序 希望会的人能帮帮我 具体解释一下这个程序越详细越好!~ 还有能不能画个流程图!~ 帮帮忙吧!~

原代码在下面:
#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");
}
...全文
315 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
碧树西风 2008-07-20
  • 打赏
  • 举报
回复
AutoFlowchart, 根据源代码生成流程图,www.ezProg.com
metears 2007-07-06
  • 打赏
  • 举报
回复
谢谢你们了!~
fiveyes 2007-07-05
  • 打赏
  • 举报
回复
忘了贴图片地址了

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
fiveyes 2007-07-05
  • 打赏
  • 举报
回复
这程序的总体结构很简单啊,就是一个主菜单,有3个分支选项,其中1个是退出,另外两个是两个功能模块。

你可以参照这个流程图里面“显示主菜单”后面的部分,这个是9分支的,你画3分支的就行了,注意其中的“退出”分支的箭头应该指向下面的一个单独的方框,方框里可以写上“程序结束”。
fengdream 2007-07-05
  • 打赏
  • 举报
回复
看看注释,理解了自己就画出来了
metears 2007-07-05
  • 打赏
  • 举报
回复
有没有会画流程图的啊 急急急啊!~~
Inhibitory 2007-07-04
  • 打赏
  • 举报
回复
原代码在下面:
#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");
}
metears 2007-07-04
  • 打赏
  • 举报
回复
越快越好 急啊 急急急!!~~

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧