新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
有专门的软件可以根据C/++语言代码,自动生成流程图的,比如Crystal FLOW for C++
创新互联公司专注于善左网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供善左营销型网站建设,善左网站制作、善左网页设计、善左网站官网定制、小程序开发服务,打造善左网络公司原创品牌,更为您提供善左网站排名全网营销落地服务。
流程图是对程序步骤的概述,不需要详细到实现,例如你给的例子
流程图应该是 程序开始-获得一个三位数-求百位数、十位数、个位数(可以并行求也可以依次求)-将结果打印到屏幕上-结束程序
C语言中用函数来实现程序模块。
模块化程序设计是将一个大的任务分解成若干个小任务,再将小任务分解成更小的任务,直到每一个任务都只完成一个独立功能。这样的每个任务都叫做模块,C语言中模块是用函数来实现的。
借助函数来实现程序模块化,把你想实现的功能用函数来实现,不同功能的就用不同的函数来实现,而且,函数在一定程度上可以被复用,所以称为模块,搜索零基础学通C语言系列大全之线程_模块儿_静态库_循环总结视频教程就可以看了。
函数执行流程:
开始:
fact(5) 函数结束
|
return 5 * fact(4) return 5 * 4* 2 *1
| |
return 4 * fact(3) return 4* 3* 2*1
| |
return 3 * fact(2) return 3* 2*1
| |
return 2 * fact(1) return 2* 1
| |
return 1 函数返回
本人将功能重现,代码如下:(解决了你的源代码中无法正常循环运行的问题)
#includestdio.h
#define N 4 //人数
#define KMS 3 //科目数
struct student
{
char name[20];
float score[3];//score[0]语文,score[1]数学,score[2]历史
float ave;
}stu[N];
void input(student p[],int n)
{
int i;
for(i=0;in;i++)
{
scanf("%s%f%f%f",p[i].name,p[i].score[0],p[i].score[1],p[i].score[2]);
}
}
void perave(student p[],int n)
{
int i;
for(i=0;in;i++)
p[i].ave=(p[i].score[0]+p[i].score[1]+p[i].score[2])/3.0;
}
void ehsbave(float p[],student q[],int n)//main()中p[]用于存储单科均分p[KMS]
{
int i,j;
for(i=0;iKMS;i++)
{
p[i]=0;
for(j=0;jn;j++)
p[i]+=q[j].score[i];
p[i]/=n;
}
}
void search(student p[],int n,int *l1,int *l2)
{
int r,c;
*l1=0;*l2=0;
for(r=0;rn;r++)
for(c=0;cKMS;c++)
if(p[*l1].score[*l2]p[r].score[c])
{
*l1=r;
*l2=c;
}
}
main()
{
float a[KMS];
int r,c,i,*p_r,*p_c;
char subject[KMS][20]={"语文","数学","历史"},pd='y';
p_r=r;p_c=c;
for(;pd=='y';)
{
printf("输入%d名学生的姓名,语文,数学,历史成绩\n",N);
input(stu,N);
perave(stu,N);
ehsbave(a,stu,N);
search(stu,N,p_r,p_c);
printf("姓名\t平均成绩\n");
for(i=0;iN;i++)
printf("%s\t%.2f\n",stu[i].name,stu[i].ave);
printf("科目\t平均成绩\n");
for(i=0;iKMS;i++)
printf("%s\t%.2f\n",subject[i],a[i]);
printf("单科最高:\n姓名\t科目\t分数\n%s\t%s\t%.2f\n",stu[r].name,subject[c],stu[r].score[c]);
printf("是否继续(y/n)?\n");
getchar();
pd=getchar();
}
}