赞
踩
编写函数fun(int n),其功能是:计算整数n所有因子(指除1和n之外,能整除n的数)之和作为函数值返回。主函数输入n,调用函数,并输出结果。例如:若输入120,则输出239。
图1.1 求整数因子之和流程图
#include<stdio.h>
int fun(int n) /*定义一个调用函数fun()*/
{
int sum=0; /*定义整型变量sum,i */
int i;
for(i=2;i<n;i++) /*统计能整除n的数*/
{
if(n%i==0)
{
sum+=i; /*求因数之和*/
}
}
return sum; /*把sum作为返回值*/
}
int main()
{
int n;
printf("输入一个整数n:");
scanf("%d",&n); /*键盘输入n*/
int num=fun(n); /*主函数中调用外部函数fun()*/
printf("因子之和为:%d",num);
return 0;
}
图1.2求整数因子之和运行结果截图
用函数调用的方法编程,输入二维数组a[4][5]的元素值,然后调用函数计算每列的平均值,放到一个一维数组中传回主函数,主函数中输出原始数组,调用函数后,输出结果。
图2.1求数组每列平均值流程图
#include <stdio.h>
#include <stdlib.h>
void fun(float a[4][5]) /*定义一个对数组的函数*/
{
int i=0;
int j=0;
float sum=0.0;
float aver; /*定义整型i,j;浮点型sun,aver*/
while(j<5) /*循环,目的求sum*/
{
for(i=0;i<4;i++) /*保持列不变,对每行循环,四行截至*/
sum+=a[i][j]; /*求一列数组元素之和*/
aver=sum/4.0; /*求一列的平均值,并输出*/
printf("%f\t",aver);
sum=0.0; /*避免重复累加*/
j++; /*列数循环自加*/
}
}
main()
{
int i=0;
int j=0;
float a[4][5];
for(i=0;i<4;i++) /*循环满足输入四行才能输出*/
{
for(j=0;j<5;j++) /*循环满足输入五列才能输出*/
scanf("%f",&a[i][j]);
}
fun(a); /*调用外部函数fun()*/
}
图2.2数组每列平均值流程图运行结果
学生成绩统计程序设计
设计结构体数组,结构中包含学生数据为:学号、姓名、物理分数、数学分数、外语分数、计算机分数。设计各个函数,分别实现以下功能:
(1)录入:输入学生数据
(2)显示:所有学生信息
(3)统计:统计每科的最高分、最低分;输出不及格人数、不及格学数据。
设计菜单,通过选择菜单调用以上各函数。
图3.1 学生成绩统计程序的设计的流程图
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct student/*定义结构体数组1,目的:记载学生不同类型的数据*/
{
int num;/*学号*/
char name[10];/*姓名*/
int phys;/*物理分数*/
int math;/*数学分数*/
int eng;/*英语分数*/
int com;/*计算机分数*/
}
stu[50];
int k = 0;/*记录已创建的学生人数*/
int pmax,mmax,emax,cmax;/*定义每一科目最高分*/
int pmin,mmin,emin,cmin;/*定义每一科目最低分*/
int pbu[50],mbu[50],ebu[50],cbu[50];/*记录每一科目不及格学生所对应的学*/
void creat()/*定义外部函数2,目的:创建输入学生信息*/
{
printf("输入学号\n");
scanf("%d",&stu[k].num);
printf("输入姓名\n");
scanf("%s",stu[k].name);
printf("依次输入物理、数学、外语、计算机成绩\n");
scanf("%d%d%d%d",&stu[k].phys,&stu[k].math,&stu[k].eng,&stu[k].com);
k++;
/*每录入一个学生信息,k值加一,记录录入学生总人数*/
}
void print()/*定义外部函数3,目的:创建输出所有学生的基础数据*/
{
for(int i = 0;i < k;i++)
{
printf("学号:%d\t ",stu[i].num);
printf("姓名:%s\n",stu[i].name);
printf("物理:%d\t数学:%d\t英语:%d\t计算机:%d\n",stu[i].phys,stu[i].math,stu[i].eng,stu[i].com);
}
printf("\n\n");
}
int statistics(int q,int w,int e,int r,int pnopass = 0,int mnopass = 0,int enopass = 0,int cnopass = 0)
/*定义外部函数4,统计每科的最高分、最低分、不及格人数、不及格学生的数据*/
{
pmax = stu[0].phys;pmin = stu[0].phys;/*查找物理的最高分与最低分*/
for(int i = 1;i < k;i++)
{
if(pmax < stu[i].phys) pmax = stu[i].phys;
if(pmin > stu[i].phys) pmin = stu[i].phys;
}
mmax = stu[0].math;mmin = stu[0].math;/*查找数学的最高分与最低分*/
for(int i = 1;i < k;i++)
{
if(mmax < stu[i].math) mmax = stu[i].math;
if(mmin > stu[i].math) mmin = stu[i].math;
}
emax = stu[0].eng;emin = stu[0].eng;/*查找英语的最高分与最低分*/
for(int i = 1;i < k;i++)
{
if(emax < stu[i].eng) emax = stu[i].eng;
if(emin > stu[i].eng) emin = stu[i].eng;
}
cmax = stu[0].com;cmin = stu[0].com;/*查找计算机的最高分与最低分*/
for(int i = 1;i < k;i++)
{
if(cmax < stu[i].com) cmax = stu[i].com;
if(cmin > stu[i].com) cmin = stu[i].com;
}
for(int i = 0;i < k;i++)/*统计物理不及格的学生人数,以及相应的学生学号
{
if(stu[i].phys < 60)
{
pnopass++;
pbu[q++] = i;
}
}
for(int i = 0;i < k;i++)/*统计数学不及格的学生人数,以及相应的学生学号*/
{
if(stu[i].math < 60)
{
mnopass++;
mbu[w++] = i;
}
}
for(int i = 0;i < k;i++)/*统计英语不及格的学生人数,以及相应的学生学号*/
{
if(stu[i].eng < 60)
{
enopass++;
ebu[e++] = i;
}
}
for(int i = 0;i < k;i++)/*统计计算机不及格的学生人数,以及相应的学生学*/
{
if(stu[i].com < 60)
{
cnopass++;
cbu[r++] = i;
}
}
printf("物理最高分:%d 物理最低分:%d\n",pmax,pmin);/*各科最高最低*/
printf("数学最高分:%d 数学最低分:%d\n",mmax,mmin);
printf("英语最高分:%d 英语最低分:%d\n",emax,emin);
printf("计算机最高分:%d 计算机最低分:%d\n",cmax,cmin);
/*各科不及格人数及信息*/
printf("\n物理不及格总人数:%d 不及格学生如下:\n",pnopass);
for(int i = 0;i < q;i++)/*输出物理不及格的学生人数,以及相应的学生学号*/
{
int v = 0;
printf("(学号:%d 姓名:%s)\t",stu[pbu[i]].num,stu[pbu[i]].name);
v++;
if(v % 6 == 0) printf("\n");
}
printf("\n数学不及格总人数:%d 不及格学生如下:\n",mnopass);
for(int i = 0;i < w;i++)/*输出数学不及格的学生人数,以及相应的学生学号*/
{
int v = 0;
printf("(学号:%d 姓名:%s)\t",stu[mbu[i]].num,stu[mbu[i]].name);
v++;
if(v % 6 == 0) printf("\n");
}
printf("\n英语不及格总人数:%d 不及格学生如下:\n",enopass);
for(int i = 0;i < e;i++)/*输出英语不及格的学生人数,以及相应的学生学号*/
{
int v = 0;
printf("(学号:%d 姓名:%s)\t",stu[ebu[i]].num,stu[ebu[i]].name);
v++;
if(v % 6 == 0) printf("\n");
}
printf("\n计算机不及格总人数:%d 不及格学生如下:\n",cnopass);
for(int i = 0;i < q;i++)/*输出计算机不及格的学生人数,以及相应的学生学*/
{
int v = 0;
printf("(学号:%d 姓名:%s)\t",stu[cbu[i]].num,stu[cbu[i]].name);
v++;
if(v % 6 == 0) printf("\n");
}
printf("\n\n");
}
int main() /*主函数当菜单栏*/
{
int caidan;
while(1)
{
printf("选择你想要执行的命令序号\n");/*每一项都需要按回车*/
printf("1.输入学生数据\n");
printf("2.显示所有学生的信息\n");
printf("3.统计每科的最高分、最低分、不及格人数、不及格学生的数据\n");
printf("0:退出程序\n");
printf("输入您将进行的操作:");
scanf("%d",&caidan);
switch(caidan)
{
case 1:creat();break;
case 2:print();break;
case 3:statistics(0,0,0,0,0,0,0,0);break;
case 0:printf("程序退出\n");
return 0;
default:printf("未知指令");
}
}
return 0;
}
图3.2输入1时程序运行结果
图3.3输入2时的程序运行结果
图3.4输入3时的程序运行结果
图3.5输入0时的程序运行结果
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。