C语言学习——班级同学教材金额列表打印

今天学习了二维数组,恰逢班内要进行教材费用清算,所以编学了一个C语言程序来对班上各同学应该缴纳的教材费用进行计算并列表输出。
首先程序所实现的功能为:由用户输入班级人数,后四位学号和涉及的教材数目及金额,然后由程序计算每个同学应该缴纳的费用并输出相应的列表。实现该功能的程序我分为三个小函数来完成最终功能:输入数据函数计算函数列表显示函数 。下面我将逐一为大家讲解着三部分函数

输入数据函数

设置一些打印函数用来提示输入以及便于调试程序

/*
输入数据函数;将计算所需的学生人数、学号后四位、涉及的教材数目、各教材收费金额输入程序当中。
*/
/*
输入数据函数;将计算所需的学生人数、学号后四位、涉及的教材数目、各教材收费金额、同学订购教材情况
*/
void readcost(int student_cost[][TEXT_VAR],float text_cost[],int num[],int n,int m)
{   int i,j;printf("please input the cost of subjects in turn:机械指导书    机械创新    汽车概论    机械故障    单片机原理\n");for(i=0;i<m;i++){printf("please input cost:");scanf("%f",&text_cost[i]);//各教材费用}printf("please input the number and count:\n");for(i=0;i<n;i++){                                                                                               printf("please input the last four digits of student number:");scanf("%4d",&num[i]);//学号后四位for(j=0;j<TEXT_VAR;j++){printf("please input the subjects of student %d :1or0",num[i]);scanf("%d",&student_cost[i][j]);//同学订购教材情况}}printf("input successfully");
}

计算函数

注意:数组作为实参时,只需输入数组名即可,形参的数组名可以和实参不同,因为函数是对数组的首地址进行访问地,函数对同一个地址进行处理,即使数组名不同。在函数中改变数组值其也会改变实参数组。二位数组无论是定义还是做位形参,都需要对第二个括号里的数(即列数)进行定义。

/*
计算函数:将输入函数用户所输入的数据作为函数的实参,实现计算每位同学缴纳费用的目的
*/
void textsum(int num[],float text_cost[],int student_cost[][TEXT_VAR],float text_sum[],int n,int m)//计算每个学生的总金额
{int i,j;float sum=0;printf("正在计算中\n");for(i=0;i<n;i++){sum=0;for(j=0;j<m;j++){sum=sum+((student_cost[i][j])*(text_cost[j]));}text_sum[i]=sum;  //每位同学所需缴纳费用summ=summ+sum;    //班级的总缴纳费用}printf("计算完成\n");
}

##列表显示函数

/*
列表显示函数:以列表形式输出打印同学缴纳费用和其他信息
*/
void display(int num[],float text_cost[],int student_cost[][TEXT_VAR],float text_sum[],int n,int m)//列表显示金额
{int i,j;printf("机制1604教材费用明细\n");printf("学号\t机械指导书\t  机械创新\t  汽车概论\t  机械故障\t单片机原理\t  总数金额\n");//因为中文字节占两位,所每栏占10个字符位加一个制表符,,后面输出相应函数也是占10个字符加一个制表符for(i=0;i<n;i++){printf("%4d\t",num[i]);for(j=0;j<m;j++){printf("%10d\t",student_cost[i][j]);}printf("%10.2f\n",text_sum[i]);}printf("班级总金额为:%10.2f\n",summ);printf("输出完毕\n");
}

全部程序

#include <stdio.h>
#include <stdlib.h>
#define STUDENT_NUM 40 //班级人数最大值为40
#define TEXT_VAR 5 //教材数目为5
int student_cost[STUDENT_NUM][TEXT_VAR]; //输入数组
int num[STUDENT_NUM];
float text_cost[TEXT_VAR]; //输入教材费用
float text_sum[STUDENT_NUM];//各学生的应交金额
float summ=0;/*
输入数据函数;将计算所需的学生人数、学号后四位、涉及的教材数目、各教材收费金额、同学订购教材情况
*/
void readcost(int student_cost[][TEXT_VAR],float text_cost[],int num[],int n,int m)
{   int i,j;printf("please input the cost of subjects in turn:机械指导书    机械创新    汽车概论    机械故障    单片机原理\n");for(i=0;i<m;i++){printf("please input cost:");scanf("%f",&text_cost[i]);//各教材费用}printf("please input the number and count:\n");for(i=0;i<n;i++){                                                                                               //输入函数:输入学生的后四位学号、订教材数目、和教材费用printf("please input the last four digits of student number:");scanf("%4d",&num[i]);//学号后四位for(j=0;j<TEXT_VAR;j++){printf("please input the subjects of student %d :1or0",num[i]);scanf("%d",&student_cost[i][j]);//同学订购教材情况}}printf("input successfully");
}/*
计算函数:将输入函数用户所输入的数据作为函数的实参,实现计算每位同学缴纳费用的目的
*/
void textsum(int num[],float text_cost[],int student_cost[][TEXT_VAR],float text_sum[],int n,int m)//计算每个学生的总金额
{int i,j;float sum=0;printf("正在计算中\n");for(i=0;i<n;i++){sum=0;for(j=0;j<m;j++){sum=sum+((student_cost[i][j])*(text_cost[j]));}text_sum[i]=sum;  //每位同学所需缴纳费用summ=summ+sum;    //班级的总缴纳费用}printf("计算完成\n");
}/*
列表显示函数:以列表形式输出打印同学缴纳费用和其他信息
*/
void display(int num[],float text_cost[],int student_cost[][TEXT_VAR],float text_sum[],int n,int m)//列表显示金额
{int i,j;printf("机制1604教材费用明细\n");printf("学号\t机械指导书\t  机械创新\t  汽车概论\t  机械故障\t单片机原理\t  总数金额\n");//因为中文字节占两位,所每栏占10个字符位加一个制表符,,后面输出相应函数也是占10个字符加一个制表符for(i=0;i<n;i++){printf("%4d\t",num[i]);for(j=0;j<m;j++){printf("%10d\t",student_cost[i][j]);}printf("%10.2f\n",text_sum[i]);}printf("班级总金额为:%10.2f\n",summ);printf("输出完毕\n");
}int main()
{int n,m;printf("Hello world!\n");printf("please input the sum of student\n");scanf("%d",&n);printf("please input the sum of subjects\n");scanf("%d",&m);readcost(student_cost,text_cost,num,n,m);textsum(num,text_cost,student_cost,text_sum,n,m);display(num,text_cost,student_cost,text_sum,n,m);return 0;
}

效果展示

C语言学习——班级同学教材金额列表打印相关推荐

  1. perl语言学习笔记(3)列表与数组、子程序’、参数

    1.列表和数组是什么? 列表指的是标量的有序集合,数组是存储列表的变量,在perl里这两个术语常常混用.但准确来讲,列表指的是数据,数组指的是变量. 2.数组和列表的特点? 数组或列表中的每个元素都有 ...

  2. C 语言学习:班级同学的博客地址列表

    这里整理出本班级同学的博客地址.请各位同学之间相互帮助,尽快将博客都建立起来. 编号 学号 姓名 Cnblogs昵称 博客地址 Coding.net 地址 1 160809401 付胤 付胤 http ...

  3. Python语言学习:利用sorted对字典按照value进行递减排序,输出列表,并给定排名索引,组成新字典输出

    Python语言学习:利用sorted对字典按照value进行递减排序,输出列表,并给定排名索引,组成新字典输出 目录 利用sorted对字典按照value进行递增排序,输出列表,并给定排名索引,组成 ...

  4. 保姆级零基础 C 语言学习路线,万字总结!

    从大学接触 C 语言编程,工作之后一直从事互联网 C/C++ 后台开发工作,粗略算下来有 10 多年经验了(但是年限也并不能代表什么),只能说对 C 语言学习有一些经验可以分享给初学者,让你少走一些弯 ...

  5. [转]学习Objective-C: 入门教材

    学习Objective-C: 入门教材 Objective-C是一种简单的计算机语言,它可以用来设计复杂的面向对象程序. Objective-C扩展了标准ANSI C语言,增加了一些定义类.方法以及其 ...

  6. 用了30天整理的一些GO语言学习资料,2019请你加油

    因为极其优秀的并发性能,Google的亲儿子Go语言站上了风潮之巅.出现在21世纪的GO语言,虽然不能如愿对C++取而代之,但是其近C的执行性能和近解析型语言的开发效率以及近乎于完美的编译速度,已经风 ...

  7. C语言学习一个月后感想

    C语言学习一个月后感想 感谢李晓东老板及计算机工程师联盟的学长学姐和某神秘同级同学的辛勤指导,感谢宋雨田的督促和陪伴. 初识C的1..体会 我本以为凭借瓜皮思维和花里胡哨操作可以让我熟练地学习语言,现 ...

  8. 欧洲语言学习统一标准C1C2音频,北京通州区有没有西班牙语培训班(为何选择西班牙语)...

    北京通州区有没有西班牙语培训班,选择北京西班牙语培训则是正确的抉择,西班牙语等级如何划分,选择西班牙语好吗,西语跟德语哪个难,少儿学西班牙语有什么优势,孩子学西班牙语启蒙好学吗,如何零基础入门西班牙语 ...

  9. 20155332 如何获取新技能+c语言学习调查

    如何获取新技能+c语言学习调查 你有什么技能比大多人(超过90%以上)更好? 如果问我有没有什么技能比大多数人,并且是90%的人好,我还真不敢说有,因为世界上有70亿人,要比63亿人做的好才行啊.我也 ...

最新文章

  1. this.blur()
  2. UVA 10304 Optimal Binary Search Tree
  3. 通过踩坑带你读透虚拟机的“锁粗化”
  4. 使用python对比两个目录下的文件名差异
  5. 1.1 计算机的发展
  6. (二)SpringBoot 整合 JPA
  7. 从文件中读出数据显示在表格中_玩转表格:如何在Word表格中进行数据计算?...
  8. Mysql找不到mysql.sock怎么办?
  9. WinForms多线程编程之摇奖程序
  10. UESTC 1636 梦后楼台高锁,酒醒帘幕低垂
  11. html木桶布局,CSS3如何实现图片木桶布局?(附代码)
  12. WPFのDecorator 、Adorner和AdornerDecorator
  13. ViewPager子类与父类滑动冲突的情况
  14. java中设置http响应头控制浏览器禁止缓存当前文档内容
  15. 360网络修复大师_360补丁大师免安装下载-360补丁大师下载 v8.0 官方最新版
  16. 11个炫酷的Linux终端命令大全
  17. 码农小汪之Alibaba-fastjson的基本使用
  18. 2023年东北大学理学院数学考研必看成功上岸前辈复习经验分享
  19. 用计算机将复数转换成角度,卡西欧FX-991ES计算器能计算电路里的复数加减乘除然后换算成角度吗?...
  20. Java线程池与Lambda表达式

热门文章

  1. 小米笔记本Pro 2020款 显卡MX350 CUDA+cuDNN tensorflow-gpu安装
  2. canvas 画图的方式
  3. 稀疏学习:从人脑得到灵感,让深度学习突破算力限制
  4. windows xp进入访客_Windows XP时代的快速截图工具在Windows 10后续版本里将被逐渐弃用...
  5. python线程卡死问题解决_Python中的多线程:最后一个线程卡住了
  6. 逃离象牙塔――辍学游戏人面面观
  7. 级联查询:resultMap完成sql查询结果对java对象的映射
  8. Fisher Discriminant
  9. 同一纬度地区经度相差一度相差多少米?
  10. nginx - 负载均衡配置-负载均衡策略