
一个程序运行肯定是先运行主程序
我们当然可以把所有程序都写在主程序里面,但是你会发现主程序过于庞大,有些程序反复使用,那么我们就写一个子程序,当要用这段程序的时候我们就通过调用来解决
比如我一个主程序,里面一直要用到查找,我们就先写个子程序把它定义为findtext(int str1,int str2)str1为查找内同 str2为查找目标
然后我们写主程序,就可以直接用这个子程序
其实在C里面你可能觉得没什么,如果你学过单片机,我们写程序不用到子程序不行,应为单片机容量有限,如果重复代码出现就会下不下,所以我们会尽量把所有重复出现的代码写成子程序,减少代码体积
我个人加了一些修改 运行结果可能不完全相同但是基本一样我是用vc++6.0#include<stdio.h>
#include<stdlib.h>
int main()
{
void print()
void aver()
void aver2()
void aver3()
print()
printf("班级成绩统计\n张旭\n")
loop:
print()
printf("1、统计小组一门课程的总分及平均分\n")
printf("2、统计小组若干门课程的总分及平均分\n")
printf("3、输入小组学生姓名及三门课程成绩并显示排序后的成绩单\n")
printf("4、退出程序\n\n")
printf("请在1~4间选择:")
int n
scanf("%d",&n)
print()
switch(n)
{
case 1:aver()goto loop
case 2:aver2()goto loop
case 3:aver3()goto loop
case 4:break
}
return 0
}
void print()
{
printf("***********************************************************\n")
}
void aver()
{
void *calloc(unsigned n,unsigned size)
int a,i
printf("请输入小组人数:")
scanf("%d",&a)
float *p,b=0,c
p=(float *)calloc(a,4)
printf("请输入本小组%d位同学的一门课程的成绩:\n",a)
for(i=0i<ai++)
{
printf("第%d位同学:",i+1)
scanf("%f",&p[i])
b+=p[i]
}
c=b/a
printf("该小组%d位同学1门课程的总分为:%4.2f\t平均分为:%4.2f\n",a,b,c)
}
void aver2()
{
void *calloc(unsigned n,unsigned size)
int m,n,i,j,k
printf("请输入小组人数:")
scanf("%d",&m)
printf("请输入课程门数:")
scanf("%d",&n)
print()
float *p,b=0,c
p=(float *)calloc(m,4)
for(i=1i<=ni++)
{
k=1
b=0
printf("本小组%d位同学第%d门课程的成绩:\n",m,i)
for(j=0j<mj++)
{
printf("第%d位同学第%d门课成绩:",k,i)
scanf("%f",&p[j])
b+=p[j]
k++
}
c=b/m
printf("该小组%d位同学第%d门课程的总分为:%.2f\t平均分为:%.2f\n",m,i,b,c)
print()
}
}
struct stu
{
char nm[4]
float k1,k2,k3,kz,ka
}
void aver3()
{
void *calloc(unsigned n,unsigned size)
int n,i,j
printf("请输入小组人数:")
scanf("%d",&n)
stu *p
p=(stu *)calloc(n+1,22)
print()
for(i=0i<ni++)
{
printf("第%d位同学的姓名及三门课程的成绩:",i+1)
scanf("%s%f%f%f",p[i].nm,&p[i].k1,&p[i].k2,&p[i].k3)
p[i].kz=p[i].k1+p[i].k2+p[i].k3
p[i].ka=p[i].kz/3
}
for(i=0i<ni++)
for(j=1+1j<nj++)
if(p[i].kz<p[j].kz)
{
p[n]=p[j]
p[j]=p[i]
p[i]=p[n]
}
printf("排序 姓名 课1课2课3总分平均分\n")
for(i=0i<ni++)
printf("第%d名 %-4s %-.2f %-.2f %-.2f %-.2f %-.2f\n",i+1,p[i].nm,p[i].k1,p[i].k2,p[i].k3,p[i].kz,p[i].ka)
}
一个程序开始运行时,运行的是主程序段。之后主程序调用的其他程序段就叫子程序。C语言的程序段都是以函数形式存在,所以除了主程序main()以外,其他程序中出现的函数都是子程序。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)