资源描述:
《实验8二维数组与字符数组》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验8二维数组与字符数组【实验题1】程序填空,输入一个4X4矩阵,求出主对角线上的元素之和sum1.副对角线上的元素之和sum2,并输Hl结果。【算法分析】:每一行只有一个主对角线元素a[i][i](特征:i==j),也仅有一个副对角线元素a[i][n-i-1](特征:i+j==n-1,即j=n-1-i)#includevoidmain(){inti,j,suml=0,sum2=0,a[4][4];printf(^Inputa4*4matrix:^);for(i=0;i<4;i卄)for(j=0;j
2、<4;j++)scanf(〃%d",&a[i][j]);for(i=0;i<4;i++){suml+=a[i][i];sum2+=a[i][3~i];}printf("suml=%d,sum2=%d/z,suml,sum2);【实验题2】程序填空,打印杨辉三角形前10行:11112113311464110151051【算法分析】:分析一个10行的杨辉三角,需要一个10X10的二维矩阵a,则:1)杨辉三角为下三角矩阵,只需耍求出第i行(i=0,1,2,…,9)前i+1个元素,即a[i]0]!=O0=0..J).1)每行
3、的笫0列元素均为1,即a[i][0]=1;2)每行的主对角线元素也均为1,即a[i][i]=1;3)从第2行开始,每行夹在第0列元索与主对角线元素之间的元素a[i][j]()等于其左上方元素a[i-1][j-1]与正上方元素a[i-1][j]Z和,即a[i]0]=a[i-1][j-1]+a[i-1][j];4)输出该矩阵的卜•三角,即得出杨辉三角的前10行。#includevoidmain(){inti,j;inta[10][10];for(i=0;i<10;i++)a[i][0]=a[i][i]=l;
4、for(i=2;i<10;i++)for(j=l;j
5、出更新后的字符串。运行程序,输入:Tom&JackslO输lL!结果:#includevoidmain(){inti;chars[80];i=0;while((s[i]=getchar())!=,,)i++;s[i]=, ,;for(i=0;i<80;i++)if(s[i]>=,a,&&s[i]<=,z,)s[i]-=32;for(i=0;s[i]!=, ,;i++)printf(n%c,s[i]);printf(nH);}【实验题4】程序填空,输入一个以凹车结束的字符串(有效长度少于80
6、),将该字符串屮的字符重新排列,使原先第0个字符岀现在最后一位,原先第1个字符出现在倒数第2位,……,原先最后1个字符出现在第0位,例如:字符串”abcdef经重排后变成”fedcba"。【算法分析】:该问题类似于方阵转置,即把特定位置的数组元素进行交换。本题中的字符串存放在一维字符型数组S中,需要解决以下问题:1)计算字符串S的有效长度len2)将字符串s的前半部分(0〜len/21)与字符串的后半部分对调,即交换对称元素,与s[i]对称的元素是s[len1i],如卜•图所示:012345abcdef …#inclu
7、devoidmain(){inti,len=0;chars[80],temp;printf(MInputastring(<80):H);gets(s);for(i=0;s[i]!=, t;i++)len++;for(i=0;i<=len/2-1;i++){temp=s[i];s[i]=s[len-l-i];s[len・l-i]=temp;}for(i=0;s[i]!=, ,;i++)putchar(s[i]);printf(uu);}【实验题5】将一个整数字符串转换为整数输出。(注:整数字符
8、宙和整数是不同的,比如〃123〃是一个整数字符串,每个元素都是一个数字,但不能进行数值运算,而仁3是一个整数,可以进行数值运算。两者外观形态相似,本质不同)【算法分析】利用与字符'0,的ASCII之差进行计算。#includevoidmain(){charstrflOl;doublet=0;inti