上机实验七答案请自行校对汇总.doc_第1页
上机实验七答案请自行校对汇总.doc_第2页
上机实验七答案请自行校对汇总.doc_第3页
上机实验七答案请自行校对汇总.doc_第4页
上机实验七答案请自行校对汇总.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

上机实验七 二维数组学号:姓名:一目的要求1 掌握二维数组的基本概念,如何定义二维数组,如何初始化二维数组。2 掌握与数组有关的算法,如最大最小值(或位置)、转置数组等。3 掌握gets(s)、put(s)等字符串函数的作用:把以回车结束的键盘输入的字符串赋值给字符数组s。二实验内容第1题、 求一个34矩阵的所有靠外侧的的元素之和。/* 解题思路: 矩阵外侧元素总共有4部分组成:第一行、最后一行、第一列和最后一列*/#define N 3#define M 4#include void main() int aNM;int i, j, sum;printf(请输入%d*%d二维数组的值:, N, M);for (i=0; iN; i+)for (j=0; jM; j+)scanf(%d, &aij);/先计算第1行和最后一行 所有元素的和sum = 0;for (i=0; iM; i+)sum += a0i+aN-1i;/计算第1列和最后1列 所有元素的和for (i=0; iN; i+)sum += ai0 + aiM-1;/再减去4个角落的元素,因为它们重复计算了一次sum -= a00 + a0M-1 + aN-10 + aN-1M-1;printf(矩阵的外侧元素之和为%dn, sum);第2题、 已知一个34矩阵a34=1,2,3,4,1,2,3,4,1,2,3,4,打印输出其转置矩阵。#include void main() int a34=1,2,3,4,1,2,3,4,1,2,3,4, b43;int i, j;printf(矩阵a为:n);for (i=0; i3; i+) for (j=0; j4; j+)bji = aij;printf(%5d, aij);printf(n);printf(矩阵b为:n);for (j=0; j4; j+) for (i=0; i3; i+)printf(%5d, bji);printf(n);第3题、 给定一个N*N的方阵,求出其上三角元素之和。/* 解题思路: 上三角形是指主对角线右上角的所有元素*/#define N 10#include void main() int aNN;int i, j, sum;printf(请输入%d*%d二维数组的值:n, N, N);for (i=0; iN; i+)for (j=0; jN; j+)scanf(%d, &aij);/ 计算上三角形所有元素之和sum = 0;for (i=0; iN; i+) / 对于第i行,列是从i开始,直到N-1时结束for (j=i; jN; j+)sum += aij;printf(上三角形元素之和为:%dn, sum);第4题、 打印杨辉三角形前10行(分别用二维数组和一维数组实现)。1 1 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1 /杨辉三角形(二维数组)#include main() int a1010; int i, j, k; for (i=0; i10; i+) ai0 = 1; / 第i行的第0个元素是1 aii = 1; / 第i行的第i个元素是1 / 其它列的元素是由前一行的当前列和前一列的和for (j=1; ji; j+) aij = ai-1j-1+ai-1j; printf(杨辉三角形为:n); for (i=0; i10; i+) for (j=0; j=i; j+) printf(%d , aij); printf(n); printf(n);/杨辉三角形(一维数组)#include main() int a10;int i, j, k;printf(杨辉三角形为:n);for (i=1; i0; j-) / 第j列是其本身与前一列之和aj = aj+aj-1;/ 打印第i行所有元素for (j=0; ji; j+)printf(%d , aj);printf(n);printf(n);第5题、 假设一个班级有5名学生,每个学生有6门课的成绩,请求出每个学生的平均成绩和每门课的平均成绩。#define N 5#define M 6#include void main() float aNM; / 分数可能为实数int i, j;float sum;printf(请输入学生的成绩(%d*%d):n, N, M);for (i=0; iN; i+)for (j=0; jM; j+)scanf(%f, &aij);/ 对每个学生,计算其平均成绩for (i=0; iN; i+) sum = 0;for (j=0; jM; j+)sum += aij;sum = sum / M;printf(第%d个学生的平均成绩为:%.2fn, i+1, sum);/ 对每门课程,计算平均成绩for (i=0; iM; i+) sum = 0;for (j=0; jN; j+)sum += aji;sum = sum / N;printf(第%d门课的平均成绩为:%.2fn, i+1, sum);第6题、 将一个整数字符串转换为整数输出。(注:整数字符串和整数是不同的,比如123是一个整数字符串,每个元素都是一个数字,但不能进行数值运算,而123是一个整数,可以进行数值运算。两者外观形态相似,本质不同)/* 解题思路:1、先输入一个字符串;2、将字符串中每个字符分解, 并通过ASCII码值转换成数字;3、将转换后的数字进行合并,组合成一个整数。*/#define N 10#include #include / 处理字符串时,这个库文件必须包含进来void main() char aN; / 字符数组int i, k;long sum;printf(请输入一个字符串:n);gets(a);/ 下面对字符串a从第0个,到最后一个字符 逐个进行处理sum = 0;for (i=0; ai!=0; i+) k = ai - 48; / 把字符的asc码值 转换成 对应的数字sum = sum * 10 + k; / 把转换后的k和前面得到的数字进行合并printf(转换后,数值为:%ldn, sum);第7题、 编写一个字符串复制程序,它的功能是把一个字符串的所有内容复制给另一个字符串,并输出复制后的字符串。/* 解题思路:1、先输入一个字符串;2、对字符串中每个字符,复制到另外一个数组中;3、复制时,还需要复制字符串结束符0。*/#define N 100#include #include / 处理字符串时,这个库文件必须包含进来void main() char aN, bN; / 字符数组int i;printf(请输入一个字符串:);gets(a);/ 下面对字符串a从每个字符逐个进行复制for (i=0; i N & ai!=0; i+) bi = ai; / 把ai中的字符复制到bi中if (iN) / 此时 还需要复制0bi = 0;printf(复制后的字符串为:%sn, b);第8题、 编写一个求字符串长度的程序,它的功能求出一个字符串中有效字符的个数。/* 解题思路:1、先输入一个字符串;2、对字符串中每个字符进行计数,直到遇到字符串结束符0时结束;*/#define N 100#include #include / 处理字符串时,这个库文件必须包含进来void main() char aN; / 字符数组int i;printf(请输入一个字符串:);gets(a);/ 下面的for语句也可以改为while语句for (i=0; ai!=0; i+) printf(字符串长度为:%dn, i);第9题、 编写一个字符串连接程序,它的功能是把两个不知道长度的字符串s1、s2的内容连接成为一个字符串,并保存在字符串s1中。(提示:要定义足够长的字符串s1)/* 解题思路:1、先输入两个字符到a和b中;2、判断字符串a的长度;3、将b中字符,逐个复制到a中的结束符0的位置上;*/#define N 1000#include #include / 处理字符串时,这个库文件必须包含进来void main() char aN, bN; / 字符数组int l, i;printf(请输入第一个字符串a:);gets(a);printf(请输入第二个字符串b:);gets(b);/ 获取字符串a的长度:用下面的循环语句,或是直接l=strlen(a);l=0;while (al!=0)l+;/此时 al = 0; 下面将b0直接赋给ali=0;while (bi!=0) ai+l = bi ;i+;ai+l = 0; /最后还需要将0放到a数组的最后面/* 上面i=0语句开始部分,也可以用下面语句代替:for (i=0; i=strlen(b); i+)ai+l = bi;*/printf(连接后的字符串为:%sn, a);第10题、 判断一个字符串是否为回文,如果是输出“yes”,否则输出“no”。所谓回文是指正读和反读相同的字符串,比如“12321”/* 解题思路:1、先输入字符串到字符数组a中;2、然后判断a的第一个字符与最后一个字符是否相同;3、如果不同,则跳出循环,输出NO;4、否则,判断第2个字符,与倒数第2个字符是否相同;5、这个过程一直继续, 直到到a的中间位置时停止。*/#define N 100#include #include / 处理字符串时,这个库文件必须包含进来void main() char aN; / 字符数组int i, n;printf(请输入一个字符串:);gets(a);/ 获取字符串a的长度;n=strlen(a);for (i=0; in/2; i+)/ 判断第i个字符与第n-i-1个字符是否相同,如果不同,跳出循环if (ai != an-i-1)break;if (i=n/2) printf(Yes!n);else printf(No!n);第11题、 有一篇文章,共有3行文字,每行有80个字符,统计这篇文章中各个英文字母的个数。(提示:可以定义一个长度为26的整型数组num,分别记录26个英文字母的个数,比如读入的字母为a,则num0+,读入的字母为b,则num1+,.)/* 解题思路:1、先定义一个二维数组,用于存放输入的三个字符串;2、定义一个num数组,大小是26,用于存放字母出现的次数,其中num0存放字符a出现的次数.;3、首先,读入三个字符串;4、其次,对每个字符串中的字符,逐个进行统计其次数;5、对字符转换成num数组下标的方法:将字符的asc码值减去97,就得到对应的下标值。例如a为0,b为1, ., z为25。*/#define N 100#include #include / 处理字符串时,这个库文件必须包含进来void main() char a3N; / 字符数组int num26 = 0;int i, j, n;printf(请输入三行字符串:);for (i=0; i3; i+) gets(ai);/ 下面对每个字符串进行处理;for (i=0; i3; i+)/ 对ai字符串进行处理j = 0;while ( aij !=0)n = aij - 97; / 将字符的asc码减去97,得到对应的下标numn +; / 出现次数加1;j+;/ 输出各字符串出现的次数for (i=0; i26; i+)if ( numi !=0 )printf(字符%c出现的次数为:%dn, i+97, numi);第12题、 该程序功能:输入1个字符串,按字母出现次序输出其中所出现过的大写英文字母。如运行时输入字符串FONTNAME and FILENAME,应输出F O N T A M E I L。/* 解题思路:1、先定义2个字符数组a和b,其中a存放输入的字符串,而b存放a中出现的大写字母(注意不能重复出现);2、首先,输入一个字符串,并保存到a中;3、其次,对数组a中每个字符进行逐个判断,如果ai是大写字母,那么做如下处理:4、在数组b中查找ai是否出现,如果没有,则将ai加入到数组b中;5、最后,输出数组b中的字符;*/#define N 100#include #include / 处理字符串时,这个库文件必须包含进来void main() char aN, bN; / 字符数组int i, j, n;printf(请输入字符串:n);gets(a

温馨提示

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

评论

0/150

提交评论