书签 分享 收藏 举报 版权申诉 / 14
上传文档赚钱

类型实验 数组-参考答案.docx

  • 上传人(卖家):最好的沉淀
  • 文档编号:6162268
  • 上传时间:2023-06-05
  • 格式:DOCX
  • 页数:14
  • 大小:37.79KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《实验 数组-参考答案.docx》由用户(最好的沉淀)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    实验 数组参考答案 数组 参考答案
    资源描述:

    1、实验 6 数组一、一维数组实验0 1 2 3 4 5 6 7 8 9#includevoid main()int i, j, a10, t; printf(Input 10 number: ); for(i=0; i10; i+)scanf(%d, &ai);printf(origin data: ); for(i=0; i10; i+)printf(%d , ai);printf(n); for(i=0,j=9;ij ; i+,j-)t=ai; ai=aj; aj= t;printf(After reversed: ); for(i=0; i10; i+)printf(%d , ai); p

    2、rintf(n);/*读入数据*/*输出原始数据*/*逆序存放*/*输出逆序存放后得数据*/2、 编程:输入长度为 10 得整型数组并输出;然后将其逆序存放后再输出。例如:3、 编程:输入 n 个(1n=10)正整数并保存到数组中,求出最大值、最小值、平均值,以及最大值、最小值在数组中得下标分别就是多少。例如:5#include void main()int i, n , max, min, a10, sum; float average;printf(Input n (1n=10): ); scanf(%d, &n);if(1n & n=10)printf(Input %d integer:

    3、, n);for(i=0, sum=0; in; i+)scanf(%d, &ai); sum+=ai;average=(float)sum/n;for(i=0, max=0, min=0; i amax) max= i;if(ai amin) min= i;/*输入数据并求累加与*/*求出平均值*/*求最大、最小值得下标*/printf(max=%-5d index=%dn, amax, max); printf(min=%-5d index=%dn, amin, min);printf(average=%、2fn, average);elseprintf(数据超出范围);#include

    4、void main()inti, max, min;float a10, ave;printf(请输入 10 个评委得打分:); for(i=0, ave=0; i10; i+)scanf(%f, &ai); ave+=ai;for(i=0, max=0 , min=0; iamax) max=i;if(aiamin) min=i;ave=ave-amax-amin; ave=ave/8;printf(该选手得评委打分就是:); for(i=0; i10; i+)/*输入分数并求累加与*/*求最大、最小值得下标*/4、 编程:青年歌手参加歌曲大奖赛,有 10 个评委对她(她)进行打分,试编程求

    5、这位选手得平均得分并输出(去掉一个最高分与一个最低分)。printf(%、2f, ai); printf(n);printf(去掉最高分%、2f,去掉最低分%、2f,该选手得平均得分就是%、2fn, amax, amin,ave);5、 编程:用两种方法输出斐波那切数列得前 40 项(参考例 6-4)。要求: (1)方法 1:不使用数组;#include void main()int f1=1, f2=1, f3, i; printf(%12d%12d, f1, f2); for(i=3; i=40; i+)f3=f1+f2; printf(%12d, f3); if(i%5=0)printf

    6、(n); f1= f2;f2= f3;#include void main()int i;int fib40; fib0=fib1=1; for(i=2; i40; i+)fibi= fibi-1 + fibi-2;for(i=0; i40; i+)printf(%12d,fibi); if(i+1)%5=0)printf(n);/*计算其余得 38 个数*/(2)方法 2:使用一维数组。6、 编程:输入n 个(1n=10)float 型得数据并保存到数组中,用冒泡法或选择法将它们从大到小排序后输出。例如:552351144950510490230140#include void main()

    7、int i, j, n;float a10, t; printf(Input n: );scanf(%d,&n); if(n1 & n=10)printf(Input %d number:, n); for(i=0;in;i+)scanf(%f,&ai); printf(Before sorted:); for(i=0; in; i+)printf(%、2f , ai); printf(n);for(i=0; in-1; i+) for(j=0; jn-i-1; j+)if( aj aj+1 )t=aj; aj=aj+1; aj+1=t;/*输出排序前得数据*/*冒泡排序*/printf(Af

    8、ter sorted:); for(i=0; in; i+)printf(%、2f , ai); printf(n);/*输出排序结果*/elseprintf(数据超出范围);7、 在上题基础上(输入 n 个 float 型得数据并保存到数组中,用冒泡法或选择法将它们从大到小排序后输出)程序分析:首先判断此数就是否大于最后一个数,然后再考虑插入中间得数得情况,插入后此元素之后得数, 依次后移一个位置。#include void main()int i, j, n, p;float a10, t, m;printf(Input n: );scanf(%d, &n); if(n1 & n=10)p

    9、rintf(Input %d number:, n); for(i=0; in; i+)scanf(%f, &ai);完成:在已经排好序得数组(长度不足 10)中插入一个数 m(键盘输入)后输出,保持数组得降序排列。printf(Before sorted: );/*输出排序前得数据*/ for(i=0; in; i+)printf(%、2f , ai); printf(n);for(i=0; in-1; i+)/*冒泡排序*/ for(j=0; jn-i-1; j+)if( aj aj+1 )t=aj; aj=aj+1; aj+1=t;elseprintf(After sorted:);/*

    10、输出排序结果*/ for(i=0; in; i+)printf(%、2f , ai);printf(n);printf( 请输入要插入得数据 m: ); scanf(%f, &m);/*找到插入位置*/if(m an-1)/*如果 m 比最后一个元素小,则直接插入到最后得位置*/ p = n;for(i=0; i ai)p=i;break;for(i=n; i=p+1; i-)/*将插入位置之后得元素后移*/ ai=ai-1;/*插入*/ ap=m;printf(插入%、2f 后:, m);/*输出插入后结果*/ for(i=0; in+1; i+)printf(%、2f , ai); pri

    11、ntf(n);elseprintf(数据超出范围);二、二维数组实验1、 以下程序功能为:将下列矩阵中得元素向右移动一列,最后一列移至第一列。找出并改正以下源程序中错误,通过调试得出正确得运行结果。14681012源程序(有错误得程序) #include #define ROW 2#define COL 3 int main()int aROWCOL=1,4,6,8,10,12;int i,j,temp; for(i=0;i=0;j-)aij=aij+1;/*调试时设置断点*/改为 aij+1=aij;ai0=temp;/*调试时设置断点*/for(int i=0;iROW;i+)/去掉 in

    12、tfor(j=0;jCOL;j+) printf(%6d,aij);printf(n);return 0;运行结果(改正后程序得运行结果)614128102、 编程:利用二维数组计算并打印一个 n 行得杨辉三角。例如:11112113311464114101051提示:第一列及对角线上得元素都就是 1,其她元素通过计算得出:如果用 i 表示行,j 表示列,则第 i 行 j 列得元素#include void main()int a1010=0;int i, j, n;/设最多 10 层printf(请输入杨辉三角形得层数:);scanf(%d, &n); if(n10)printf(层数超出范

    13、围); return;for(i=0;in;i+)ai0=1;aii=1;for(i=2;in;i+)for(j=1;ji;j+)/给第 0 列与主对角线上得元素赋值 1/计算其她位置元素得值aij=ai-1j-1+ai-1j;for(i=0;in;i+)/输出for(j=0;j=i;j+) printf(%4d,aij);printf(n);12345678910110#include void main()int a34,i,j;printf(请输入3 X 4整数矩阵:n); for(i=0; i3; i+)for(j=0; j4; j+) scanf(%d, &aij);printf(按

    14、行输出:); for(i=0; i3; i+)for(j=0; j4; j+) printf(%d,aij);printf(n);printf(按列输出:); for(i=0; i4; i+)for(j=0; j3; j+) printf(%d ,aji);printf(n);3、 编程:通过键盘输入 3 行 4 列得二维数组,分别按行与按列输出数组。例如:245564、 编程:输入一个 m*n 矩阵,求她们得各行元素之与。例如:提示:设计一个一维数组 int s10,分别保存各行元素之与。#include void main()int a1010, s10=0;int m, n, i, j;

    15、/设定矩阵最大为 10 x 10printf(请输入矩阵得行数与列数:); scanf(%d%d, &m, &n);if(m10 | n10)printf(行或列(110)值超出范围); return;printf(请输入%d*%d矩阵:n,m,n); for(i=0; im; i+)for(j=0; jn; j+) scanf(%d,&aij);/求各行之与并输出for(i=0; im; i+)for(j=0; jn; j+) si+=aij;printf(sun%d= %d n, i, si);5、 编程:判断一个二维数组就是否存在鞍点,若存在,则输出鞍点及其行号与列号;否则输出没有鞍点信

    16、息。“鞍点”就是指这样得元素:它在本行就是最大元素,而在本列就是最小得元素。提示:找鞍点需要处理三件事情:(1)找每行中最大值所在得列下标;(2)判断该元素在本列上就是否为最小;(3) 判断就是否找到了鞍点,若找到,输出。#include void main()int a1010;/设定矩阵最大为 10 x 10int m, n, i, j, col, flag=0;printf(请输入矩阵得行数与列数:); scanf(%d%d, &m, &n);if(m10 | n10)printf(行或列(110)值超出范围); return;printf(请输入%d*%d矩阵:n,m,n); for(

    17、i=0; im; i+)for(j=0; jn; j+) scanf(%d,&aij);for(i=0; im; i+)col=0;for(j=1; jn; j+) if(aicolaij)col=j; for(j=0; jajcol)break; if(j=m)/退出程序/找出第 i 行中得最大值所在列下标 col/判断该元素在本列上就是否为最小flag=1;/有鞍点printf(i=%d, j=%d, saddle point:%dn,i,col,aicol);if(flag=0)printf(No saddle point!n);三、字符串实验1、 以下程序功能为:输入一个字符串,将其逆

    18、序输出。找出并改正以下源程序中错误,通过调试得出正确得运行结果。源代码(有错误得程序) #include #include void main()int i,j;char s80,result80; printf(Enter a string:n); gets(s);for(i=strlen(s)-1,j=0;i=0;i-,j+)resultj=si;resultj=0;/必须给字符串加上串结束标志printf(This is reverse string:n);puts(result);运行结果(改正后得程序)2、 编程:任意输一个字符串保存在一维字符数组中,求其长度(不用 strlen 函

    19、数)。例如:#include void main()int i, len=0; char s80;printf(请输入字符串,以回车键结束:); gets(s);for(i=0; si!=0; i+) len+;printf(字符串%s 得长度为:%dn,s, len);提示:字符串得有效长度就就是有效字符得个数,即数组中第一个0前面得字符个数。3、 编程:任意输入两个字符串分别保存在一维字符数组中,把第二个字符串连接到第一个字符串末尾(不用#include void main()int i,j;char s180, s280;printf(请输入字符串 1 以回车键结束:n); gets(s

    20、1);printf(请输入字符串 2 以回车键结束:n); gets(s2);for(i=0; s1i!=0; i+) ; for(j=0; s2j & i80; i+, j+ )s1i=s2j;s1i=0;/* 定位第一个字符串得结束标志*/*将 s2 接到 s1 后*/strcat 函数)。例如:printf(两个串连接后:%sn,s1);#include void main()int i;char a80, b80;printf(请输入字符串 1 以回车键结束:n); gets(a);printf(请输入字符串 2 以回车键结束:n); gets(b);/逐个比较直到两个字符不同或其中一

    21、个字符串结束for(i=0; ai & bi ; i+)if(ai!=bi) break;if (aibi)printf(第一个字符串%s 大!n, a); else if (ai=bi)printf(两字符串相同!n); elseprintf(第二个字符串%s 大!n, b);4、 编程:从键盘读入两个字符串分别保存在一维字符数中,比较两个字符串大小(不用 strcmp 函数),输出较大得字符串。5、 编程:任意输入一个字符串保存在一维字符数组中,判断里面数字字符得个数。例如:#include #include void main()int i, n=0; char s80;printf(请

    22、输入一个字符串以回车键结束:n); gets(s);for(i=0 ; si; i+) if(si=0 & si=9)n+;printf(字符串中包含得数字个数为:%dn,n);6、 编程:从一个字符串中删除从某个特定字符开始得所有字符。例如原字符串为abcdefg,特定字符为d, 删除后得字符串为abc。void main()int i, flag=0; char c, s80;printf(请输入一个字符串以回车键结束:n); gets(s);printf(请输入特定字符:); c=getchar();for(i=0 ; si; i+) if(si=c)si=0; flag=1; brea

    23、k;if(flag=0)printf(输入字符中没有特定字符!n); elseputs(s);#include #include void main()unsigned int i, j, m, n; char s180, s280;printf(请输入一个字符串以回车键结束:n); gets(s1);printf(请输入子串得起始位置与长度:); scanf(%d%d, &n, &m);if( n0 & n0 & n+m = strlen(s1)+1 )for(i=n-1,j=0; s1i & i n+m-1 ; i+, j+)s2j=s1i;s2j=0;puts(s2);elseprint

    24、f(长度超出范围!n);elseprintf(起始位置超出范围!n);7、 编程:编写程序,从一个输入得字符串中抽取一部分(从第 n 个字符开始,抽取 m 个字符)构成一个新得字符串,并输出。要求:n 与 m 都由用户输入。8、 编程:利用字符串库函数 puts, gets, strcat, strcmp, strcpy, strlen 完成下述操作:l 读入三个字符串 str1,str2,str3l 输出这三个字符串l 分别求出这三个字符串得长度;l 比较 str1 与 str2 得大小;l 将 str2 连接到 str1 之后,并输出连接后得 str1;l 复制 str3 到 str1,并

    25、输出复制操作后得 str1;#include #include void main()选作题:char str180, str280, str380;printf(请输入字符串 str1 以回车键结束:n);gets(str1);printf(请输入字符串 str2 以回车键结束:n); gets(str2);printf(请输入字符串 str3 以回车键结束:n);gets(str3);printf(三个字符串分别就是:n); printf(str1:%sn, str1); printf(str2:%sn, str2);printf(str3:%sn, str3);printf(三个字符串得

    26、长度分别就是:n); printf(str1:%dn, strlen(str1); printf(str2:%dn, strlen(str2);printf(str3:%dn, strlen(str3);if(strcmp(str1, str2)0)printf(字符串 str1 大于 str2n); else if(strcmp(str1, str2)=0)printf(字符串 str1 等于 str2n);elseprintf(字符串 str1 小于 str2n); strcat(str1,str2);printf( str2 连接到 str1 之后:%sn,str1);strcpy(st

    27、r1,str3);printf(复制 str3 到 str1:%sn,str1);输入一个小写字母组成得英文句子,统计该句子有几个英文单词,并统计每个字母出现得次数,并将句子中每个单词得首字母大写后输出。如:输入: this is a cat! 输出:4 个单词;每个字母出现次数 t:2h:1i:2s:2a:2c:1 This Is A Cat!#include void main()char s80;int count26=0;/与 26 个字母对应,统计各个字母出现得次数int i, j, wordnum=0, flag=0;printf(请输入一个英文句子(小写字母)以回车键结束:); gets(s);for(i=0; si; i+)if(si=a & si=a & si+1=z) flag=1;/当前就是空格,但下一个字符就是字母,则该字母一定就是单词得起始字母 flag=1。/即判断一个单词得起始字符,单词间用空格区分,这里考虑了单词间多个空格得情况printf(句子中有%d 个单词;n,wordnum); printf(每个字母出现得次数:);for(i=0; i26; i+)if(counti!=0)printf(%c: %d , i+a, counti);printf(n);printf(每个单词首字母大写后:); puts(s);

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:实验 数组-参考答案.docx
    链接地址:https://www.163wenku.com/p-6162268.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库