c语言程序设计课程辅导二(编辑修改稿)内容摘要:

++) coutsetw(5)a[i][j]。 coutendl。 } } 该程序首先定义了一个元素为 int类型的二维数组 a[M][N],并对它进行了初始化;接着通过双重 for循环输出每一个元素的值,其中外循环变量 i控制行下标从小到大依次变化,内循环变量 j控制列下标从小到大依次变化,每输出一个元素值占用显示窗口的 5个字符宽度,当同一行元素(即行下标值相同的元素)输出完毕后,将输出一个换行符,以便下一行元素从显示窗口的下一行显示出来。 该程序的运行结果为: 7 5 14 3 6 20 7 8 14 6 9 18 (2) include void main() { int b[2][5]={{7,15,2,8,20},{12,25,37,16,28}}。 int i,j,k=b[0][0]。 for(i=0。 i2。 i++) for(j=0。 j5。 j++) if(b[i][j]k) k=b[i][j]。 coutkendl。 } 在这个程序中首先定义了元素类型为 int的二维数组 b[2][5]并初始化,接着定义了 int型的简单变量 i,j,k,并对 k 初始化为 b[0][0]的值 7,然后使用双重 for 循环依次访问数 9 组 b中的每个元素,并且每次把大于 k的元素值赋给 k,循环结束后 k中将保存着所有元素的最大值,并被输出出来,这个值就是 b[1][2]的值 37。 (3) include const int M=4。 void main() { int c[M]={0}。 int d[M][3]={{1,5,7},{3,2,10},{6,7,9},{4,3,7}}。 int i,j,sum=0。 for(i=0。 iM。 i++) { for(j=0。 j3。 j++) c[i]+=d[i][j]。 sum+=c[i]。 } for(i=0。 iM。 i++) coutc[i]39。 39。 coutsumendl。 } 该程序主函数中的第一条语句定义了一个一维数组 c[M]并使每个元素初始化为 0,第二条语句定义了一个二维数组 d[M][3]并使每个元素按所给的数值初始化,第三条语句定义了i,j 和 sum,并使 sum初始化为 0,第四条语句是一个双重 for循环,它依次访问数组 d 中的每个元素,并把每个元素的值累加到数组 c中与该元素的行下标值相同的对应元素中,然后再把数组 c中的这个元素值累加到 sum变量 中,第五条语句依次输出数组 c中的每个元素值,第六条语句输出 sum 的值。 该程序把二维数组 d 中的同一行元素值累加到一维数组 c中的相应元素中,把所有元素的值累加到简单变量 sum中。 该程序的运行结果为: 13 15 22 14 64 使用 typedef 语句定义数组类型 1. 一维数组类型的定义格式 typedef 元素类型关键字 数组类型名 [常量表达式 ]。 例如: (1) typedef int vector[10]。 (2) typedef char strings[80]。 (3) typedef short int array[N]。 第一条语句定义了一个元素类型为 int,含有 10 个元素的数组类型 vector,若不使用typedef保留字,则就变成了数组定义,它只定义了一个元素类型为 int、含有 10个元素的数组 vector。 这两种定义有着本质的区别,若定义的是数组 vector,系统将为它分配有保存 10 个整数的存储单元,共 40 个字节的存储空间;若定义的是数组类型 vector,系统只是把该类型的有关信息登记 下来,待以后利用该类型定义对象时使用,具体地说,就是把vector的元素类型 int,类型长度 10,类型名 vectoe 等登记下来,待以后定义 vector 类型的对象时使用。 第二条语句定义了一个元素类型为 char,含有 80 个元素的数组类型 strings,以后可以直接使用 strings类型定义数组对象,每个数组对象的元素为 char 型,数组长度(即元素个数)为 80。 第三条语句定义了一个元素类型为 short int的含有 N个元素( N为已定义的符号常量)的数组类型 array,以后利用它可以直接定义该类 型的对象,它是一个含有 N个短整型元素 10 的数组。 下面是利用上述类型定义对象的一些例子。 (1) vector v1,v2。 (2) strings s1,s2=define type。 (3) array a={25,36,19,48,44,50}。 //假定常量 N≥ 6 第一条语句定义了 vector类型的两个对象 v1和 v2,每个对象都是 vector类型的一个数组,每个数组由 10个整型元素所组成。 第二条语句定义了 strings类型的三个对象 s1,s2和 s3,并且对 s3进行了初始化,每个对象都是含有 80个字符空间的数组。 第三条语句定义了一个 array类型的对象 a,它是一个含有 N个短整型元素的数组,该语句同时对数组 a进行了初始化,使得 a[0]a[5]的元素值依次为 25,36,19,48,44和 50。 2. 二维数组类型的定义格式 typedef 元素类型关键字 数组类型名 [常量表达式 1][常量表达式 2]。 例如: (1) typedef int matrix[5][5]。 (2) typedef char nameTable[10][NN]。 (3) typedef double DD[M+1][N+1]。 第一条语句定义了含有 5行 5列共 25个 int型元素的数组类型 matrix,第二条语句定义了 10行 NN列共 10*NN个 char型元素的数组类型 nameTable,第三条语句定义了含有 M+1行 N+1列共 (M+1)*(N+1)个 double类型元素的数组类型 DD。 利用这三个二维数组类型可以直接定义出相应的二维数组。 如: (1) matrix mx={{0}}。 (2) nameTable nt={}。 //或使用等同的 {{39。 \039。 }}初始化 (3) DD dd={{}}。 第一条语句定义了二维整型数组类型 matrix的一个对象 mx,该对象是一个 5*5的二维整型数组,每个元素均被初始化为 0;第二条语句定义了二维字符数组类型 nameTable 的一个二维字符数组 nt,该数组中的每个元素均被初始化为空字符;第三条语句定义了二维双精度数组类型 DD的一个数组 dd,它的每个元素均被初始化为。 在 typedef语句中, 元素类型关键字 可以是 C++语言中预定义的任何一种数据类型,也可以是用户在前面已定义的任何一种数据类型,所以通过该语句定义的类型同样可以用在其后的 typedef语句中。 如: (1) typedef vector vectorSet[20]。 (2) vectorSet vs。 第一条语句定义了元素类型为 vector,元素个数为 20 的一个数组类型 vectorSet,第二条语句定义了数据类型为 vectorSet 的一个对象 vs,该对象包含有 20 个类型为 vector的元素,每个元素又包含有 10个 int类型的元素,所以 整个数组共包含有 20行 10列共 200个整数元素,它等同于对 vs的如下定义: int vs[20][10]。 利用 typedef语句同样可以定义更高维的数组类型,这里就不进行讨论了。 3. 对已有类型定义别名 利用 typedef语句不仅能够定义数组类型,而且能够对已有类型定义出另一个类型名,以此作为原类型的一个别名。 如: (1) typedef int inData。 (2) typedef char chData。 11 (3) typedef char* chPointer。 第一条语句对 int类型定义了一个别名 inData,第二条语句对 char类型定义了一个别名 chData,第三条语句对 char*类型(它是字符指针类型)定义了一个别名 chPointer。 以后使用 inData,chData 和 chPointer就如同分别使用 int,char和 char*一样,定义出相应的对象。 如: (1) inData x,y。 (2) inData a[5]={1,2,3,4,5}。 (3) chData b1,b2=39。 a39。 (4) chData c[10]=char data。 (5) chPointer p=0。 第一条语句定义了 inData(即 int)型的两个变量 x和 y,第二条语句定义了元素类型为 int的一维数组 a[5]并进行了初始化,第三条语句定义了 chData(即 char)型的两个变量 b1和 b2,并把 b2初始化为 ’a’, 第四条语句定义了一个字符数组 c[10]并初始化为 ”char data”, 第五条语句定义了一个字符指针变量 p,并初始化为 0(即 NULL)。 三、数组的应用 数组是表示和存储数据的一种重要方法 ,利用数组能够进行计算、统计、排序、查找等各种运算。 下面通过程序设计的例子来说明这些运算。 数值计算 例 1.国家对个人月收入征收个人所得税的办法如表 11所示,编一程序,根据一个人的月收入计算出应缴纳的税额和税后所得的金额。 表 11 个人月收入所得税表 级 数 级 距 税 率 (%) 1 800元以下部分 0 2 8001500元之间部分 5 3 15003000元之间部分 10 4 30006000元之间部分 20 5 60009000元之间部分 30 6 900012020元之间部分 40 7 12020元以上部分 45 分析:由每一级的级距上界组成一个数列(最后一级的上界理论上为无穷大,但计算机无法表示一个无穷大的数,所以可用一个非常大的数,如 1e9来表示),假定该数列用 a 表示;由每一级税率组成另一个数列,假定该数列用 b表示,则 a和 b分别为: a=(800,1500,3000,6000,9000,12020,1e9) b=(0,,) 设用 x表示一个人的月收入,用 i表示 x所对应的级数,用 y表示月收入为 x应缴纳的税额,则 y的计算公式为: y=(xai1)*bi+  21 1 *)(ij jjj baa 其中 1≤ i≤ 7, a1a7依次为数列 a 中对应的级距上界, b1b7依次为数列 b 中对应的税 12 率。 如当 x=4500时,对应的级距为 4,应缴纳税额为: y=(xa3)*b4+  23 1 *)(j jjj baa =(45003000)*+(a3a2)*b3+(a2a1)*b2 =300+(30001500)*+(1500800)* =300+150+35 =485 在编写此题的程序时,应首先说明存储数列 a和 b的两个一维数组,假定仍用标识符 a和 b表示,它们的长度应均为 8,其中用 a[i]和 b[i]分别存储 ai和 bi,下标为 0的元素未用;接着给 x输入一个值,并求出它对应的级数 i;最后计算出 y的值,并打印出 y和 xy的值,它们分别为上缴税额和税后所得的金 额。 根据分析,编写出程序如下: include const int N=8。 void main() { double a[N]={0,800,1500,3000,6000,9000,12020,1e9}。 double b[N]={0,0,,}。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。