一、实训目的
程序设计基础是程序设计C语言和C++语言的入门课程,该课程兼顾基础理论和编程实践。通过学习该课程的理论知识和编程实战,培养学生的专业实践技能,学校设有专用实训周,帮助学生全面牢固地掌握课堂教学内容、提升实际动手能力和思维逻辑能力。经历为期一周的专用实训周,提升对顺序结构、选择结构、循环结构、函数、数组、结构体、指针等重要知识点的掌握熟悉程度。
二、实训要求
1、掌握《C语言程序设计》有关的专业基础知识和程序设计的基本方法。
2、学会利用程序的三种基本结构:顺序结构、选择结构、循环结构解决不同的问题。
3、学会根据实际需求定义变量及类型。
4、掌握过程和函数的定义及调用方法。
5、熟练掌握函数,具备模块化编程思想。
6、能熟练应用数组、结构体、指针编写程序。
7、学会程序调试的基本方法
三、实训内容
结构化程序设计 模块化程序设计 数组、结构体、指针的应用 综合运用
四、实训体会
设银行定期存款的年利率rate为2.25%,并已知存款期为n年,存款本金为capital元,试编程计算n年后的本利之和deposit。要求定期存款的年利率rate、存款期n和存款本金capital均由键盘输入。
求解本利之和deposit的公式为:deposit =capital * pow(1+rate, n)
掌握顺序结构程序设计及本利之和deposit的公式
计算个人所得税:输入一个职工的月薪salary,计算应交的个人所得税tax。计算公式为:tax=rate*(salary-850)
当salary<=850时,rate=0%
当850<salary<=1350时,rate=5%
当1350<salary<=2850时,rate=10%
当2850<salary<=5850时,rate=15%
当salary>5850时,rate=20%
掌握选择结构程序设计,函数体合理运用选择结构
百钱百鸡问题。中国古代数学家张丘建在他的《算经》中提出了著名的 “ 百钱百鸡问题 ” :鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,翁、母、雏各几何 ?
循环结构程序设计,函数体结合嵌套使用,对题意的理解如何设定循环的嵌套
写一个函数,判断一个5位数是不是回文数。例:12321是回文数,个位与万位相同,十位与千位相同。
对于形参、函数返回值类型的定义,定义函数的语法格式的使用理解不到位,使用上有问题
编写一函数,将N*N方阵行列互换。
编程指导及提示:
! N*N方阵用二维数组定义,定义格式如:int array[N][N];
! 二维数组的输入、处理、输出均需用循环的嵌套来控制
! 要实现N*N方阵行列互换关键是观察数组元素下标的变化规律。例一个3*3矩阵为:
1 2 3
4 5 6
7 8 9
行列互换后该矩阵变为:
1 4 7
2 5 8
3 6 9
二维数组如何定义、输入、处理、输出,在编写过程中对二维数组和循环的嵌套结合使用不大熟练,矩阵的置换程序没有思路。
已知数组int num1[20],num2[20]中分别存放了两个20位整数的各个位的值,编写一个程序,求将这两个整数相加的结果。
编程指导及提示:
! 定义三个数组int num1[20],num2[20],num3[21]; num3[21]用于存放结果,因考虑进位故长度多1。
! 循环控制输入num1[20],num2[20]的每一位数,注意都为一位
! 循环控制相加,考虑进位是本题的关键
循环控制输入num[ ]的进位长度多1,循环控制相加,对于进位考虑不到位。
设有4x4的方阵,其中的元素由键盘输入。分别求出主对角线上元素之和、辅对角线上元素之积、方阵中最大的元素。
编程指导及提示:
! N*N方阵用二维数组定义、用二层循环控制输入和输出
! 用二层循环控制处理方阵元素,判定主对角线上元素条件为:if(i==j),判定辅对角线上元素条件为:if(i+j==N-1)、求方阵中最大的元素判定条件为:if(a[i][j]>max)(i,j分别表示二维数组的行列下标)
有n个人围成一圈,顺序排号,从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的人原来排在第几号。
编程指导及提示:
! 以1至n为序给每个人编号,将编号存入数组中
! 按1,2,3报数,当计数变量为3时将退出的人的编号置为0
! 最后数组中编号不为0的即为最后留下
利用随机函数rand,编一个程序给出1~100中的两个整数,让练习者求出两数的和、差、积、整除商,每次计算可以求2次,第1次计算错误提示:“Re-count the time before.”,对了打印“Great!Calculated correctly.”, 2次计算错误则显示“What a pity!Calculation error.” 。
编程指导及提示:
! rand()为随机生成函数,具体语句为:
srand((unsigned)time(NULL));//生成随机数种子
i=rand()%100;//产生100以内的随机数
j=rand()%100; //产生100以内的随机数
还要注意包含头文件#include<stdlib.h>和#include <time.h>
五、实训心得
为期一周的实训,有兴趣却又很苦恼,因为编程本来就是一个需要思维的过程,而且还要编写函数、数组、结构体的东西,就更加让我痛苦了。我清楚自身基础素质较差,在上学期的知识点在掌握不足的情况下,经过一个寒假的时间,遗忘的更多了,初上手的时候感觉摸不到门路,感到非常吃力,大多数时候只能依靠网上查资料和同学的讲解勉强理解几分,通过休息时间在网上寻找相关资料和视频,逐渐能够有一丝头绪。实训过程中,也有很多意想不到的错误,其中有的错误到最后解决的时候却是发现很低级,不过这样的错误多了,在不知不觉中对一些代码更熟悉了起来,并且自身组织代码的能力也得到很大的提升。另外我发现平时学习的知识与实际运用还是有一定的差距,往往我觉得自己掌握的很好或者自己认为很熟练的环节出了问题。现在我懂得了一个东西,书本上的知识只提供方法,但是真正到自己动手操作的时候,还是需要自己去摸索,需要自己去掌握,唯有实践才能检验自己真正的实力。