浙师大 C语言 实验8二维数组+答案.doc_第1页
浙师大 C语言 实验8二维数组+答案.doc_第2页
浙师大 C语言 实验8二维数组+答案.doc_第3页
浙师大 C语言 实验8二维数组+答案.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

上机实验八 二维数组与字符数组学号:姓名:一目的要求1 掌握二维数组的基本概念,如何定义二维数组,如何初始化二维数组。2 掌握二维数组的基本操作:引用数组元素、行(列)求和,行(列)最大最小值,整个数组的输入输出等。3 掌握与二维数组有关的算法,如找最大最小值(或位置)、矩阵转置等。4 掌握字符串与字符数组的基本应用方法5 掌握字符串有关的算法,如字符转换、查询、统计和进制转换等二实验内容【实验题1】程序填空:输入一个44矩阵,求出主对角线上的元素之和sum1、副对角线上的元素之和sum2,并输出结果。提示:每一行只有一个主对角线元素aii(特征:i=j),也仅有一个副对角线元素ain-i-1(特征:i+j=n-1,即j=n-1-i)源程序: #includeint main() int i,j,sum1=0,sum2=0, a44; printf(Input a 4*4 matrix:n);for( i=0;i4; i+ )/输入矩阵元素for( j=0;j4; j+ ) scanf(%d, &aij);for(i=0; i4; i+ ) /计算sum1和sum2 sum1 += aii ; sum2 += ai3-i ;printf(sum1=%d, sum2=%dn, sum1,sum2);/输出结果运行程序,并输入数据:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16运行结果:sum1= 34 , sum2= 34 【实验题2】程序填空:打印杨辉三角形前10行:1 1 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1 算法提示:分析一个10行的杨辉三角,需要一个1010的二维矩阵a,则:1) 杨辉三角为下三角矩阵,只需要求出第i行(i=0,1,2,9)前i+1个元素,即aij!=0 (j=0,1,i).2) 每行的第0列元素均为1,即ai0=1; (i=0,1,2,9)3) 每行的主对角线元素也均为1,即aii=1; (i=0,1,2,9)4) 从第2行开始,每行夹在第0列元素与主对角线元素之间的元素aij( i=2,3,9, j=1,.,i-1 ) 等于其左上方元素ai-1j-1与正上方元素ai-1j之和,即aij=ai-1j-1+ai-1j;(j=1,i-1)5) 输出该矩阵的下三角,即得出杨辉三角的前10行。源程序:#includeint main() int i, j, a1010;for(i=0; i10; i+)/各行的第0列元素与主对角线元素赋1 ai0 = aii =1;for( i=2; i10; i+ )/为第29行的夹在第0列与主对角线之间的元素赋值 for(j=1;j i ;j+)aij= ai-1j-1+ai-1j ; for(i=0; i10; i+) /输出矩阵中的下三角矩阵for(j=0; j =i ; j+)printf(%5d, aij); printf(n);/Line 12问: 如果删除Line 12,程序运行结果有何不同?答:不换行, 不能排列成三角形【实验题3】程序填空:二-十进制转换:输入一个8位二进制字符串b(由字符1和0组成),输出对应的十进制整数。例如,输入二进制字符串10010001, 输出十进制整数145算法提示: 1、 由于二进制字符串b的长度固定为8,因此定义字符数组char b8即可,每个元素对应一个二进制位;2、 循环1:输入二进制字符, 输入的每一个字符先暂存在字符变量ch中,检查ch是否是0或1,是则存入数组b,并令数组下标i增1,不是则跳过该字符。3、 循环2: 二-十进制转换:从前往后,带权累加数组b各元素对应的数值bi-0:d= d2+ bi-0源程序:#includeint main()int i,d;char ch,b8; printf(Input 8-bit binary:n);/输入二进制字符串i=0;while(i8) /输入8位二进制字符ch= getchar();if( ch=0| ch=1) / 输入0或1 则存入数组b,忽略其他字符 bi=ch; i+; / b i+ =ch ;d=0 ;/二-十进制转换for( i=0; i8; i+ ) d= d*2+ bi-0; /二进制:逢2进1printf(digit=%dn, d);/输出十进制整数d程序运行结果:输入输出100101011490000 000001010#0010162【实验题4】程序填空:输入一个以回车结束的字符串(有效长度少于80),将该字符串中的字符重新排列,使原先第0个字符出现在最后一位,原先第1个字符出现在倒数第2位,。,原先最后1个字符出现在第0位,例如:字符串”abcdef”经重排后变成”fedcba”。算法分析:该问题类似于方阵转置,即把特定位置的数组元素进行交换。本题中的字符串存放在一维字符型数组s中,需要解决以下问题:1) 计算字符串s的有效长度len2) 将字符串s的前半部分(0len/2-1)与字符串的后半部分对调,即交换对称元素,与si对称的元素是slen-1-i,如下图所示:0 1 2 3 4 5abcdef0len=6 源程序:#include#includeint main() int i, len=0;char s80,temp;printf(Input a string(80):n);gets( s) ; /调用字符串输入函数gets(), 输入字符串到sfor( i=0 ; si!=0; i+ )/统计字符串有效长度len len+

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论